zoukankan      html  css  js  c++  java
  • javascript Deferred和递归次数限制

    function runAsyncTTS(text,speecher,audiopath) {
            var def = jQuery.Deferred();
            var args = {"SynthText": text, "VoiceSpeecher": speecher, "WordSpeed": "3", "UseCSSML": "0", "AudioPath": audiopath};
    
            tts.asyncTTS(JSON.stringify(args),function(err,result) {
                def.resolve(result);
            });
    
            return def.promise();
        }

    function textToSpeechBat(metaJson, speecher, audioPath) {
            var def = $.Deferred();
            var result = {originalWords:"", resultJsonArr:[]};
            var jsons="";
            for(var index=0;index < metaJson.words.length;index++) {
                var audioName = metaJson.words[index]['audio'];
                audioName = audioName.replace('.mp3','');
                var audioFile = audioPath +"/" + audioName + '.wav';
                var args = '{"SynthText": "'+metaJson.words[index]['word']+'", "VoiceSpeecher": "'+speecher+'", "WordSpeed": "3", "UseCSSML": "0", "AudioPath": "'+audioFile+'"}';
                jsons += args + "|";
            }
            jsons = jsons.substr(0,jsons.length-1);
            tts.asyncTTSBat(jsons,function(err,ret) {
                result['resultJsonArr'] = ret.split('|');
                def.resolve(result);
            });
            return def.promise();
        }

    function textToSpeechWithTryTimes(metaJson, speecher, audioPath,times) {
            var def = $.Deferred();
            var ttsRet = null;
            var ttsCallBack = function(index) {
                if(index < times) {
                    textToSpeechBat(metaJson,speecher,audioPath).done(function (ret) {
                        console.log("textToSpeechWithTryTimes:"+JSON.stringify(ret));
                        ttsRet = ret;
                        var resultJsonArr = ret.resultJsonArr;
                        var audioFlag = true;
                        for(var i=0;i<resultJsonArr.length;i++) {
                            if(resultJsonArr[i] == "") {
                                audioFlag = false;
                                break;
                            }
                            var retObj = JSON.parse(resultJsonArr[i]);
                            console.log(retObj['audioFlag']);
                            if(retObj['audioFlag'] == 'false' || retObj['result']=="") {
                                audioFlag = false;
                                break;
                            }
                        }
                        console.log(audioFlag);
                        if(audioFlag == false) {
                            console.log("textToSpeechWithTryTimes Fail, try again!");
                            ttsCallBack(++index);
                        }else {
                            console.log("textToSpeechWithTryTimes succeed,return");
                            def.resolve(ret);
                        }
                    });
                }
    
                if(index == times) {
                    console.log("textToSpeechWithTryTimes timesover,return");
                    def.resolve(ttsRet);
                }
            };
    
            ttsCallBack(0);
            return def.promise();
        }

  • 相关阅读:
    10 行Python代码实现批量压缩图片500 张,面试必学
    用Python邮件发送,新手必学
    用Python监控男女朋友每天都在看哪些网站?这招绝了
    不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据?新手必学
    用Python做一个520表白神器,值得收藏
    微分不等式
    零点问题
    2019英语一 Text4分析
    A1065. A+B and C(64bit)
    A1046. Shortest Distance
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5302692.html
Copyright © 2011-2022 走看看