// 设置语音播报对象 var Voice = function() { this.speak = window.speechSynthesis; this.tospeak = new SpeechSynthesisUtterance(''); this.voice = ''; this.zh_CN = false; this.rate = 1.5; this._setLang(); // 获取并检测是否有中文的环境 this.timeInterval = 27; //循环间隔(秒) this.speak_enable = true; //ture:开启语音播报 false:停止语音播报 }; // 播报语音 (调用发声的方法时请使用延时发声) Voice.prototype.play = function(txt,callback) { if(!this.zh_CN) { console.info('你的电脑不支持中文播报!'); } _timeInterval = this.timeInterval; //console.info(this.speak_enable); if(!this.speak_enable){ //识别是否开启声音播报 if(callback && typeof callback == 'function'){ setTimeout(function(){ callback(); }, Math.abs(_timeInterval)*1000); } return; } this.cancel(); this.tospeak.text = txt; this.tospeak.voice = this.voice; // 设定中文播报 this.tospeak.rate = this.rate; //console.info(to_speak); var starttime = new Date(); this.speak.speak(this.tospeak); //console.info(this.tospeak); this.tospeak.onend = function(event) { //console.info("播放结束"); if(callback && typeof callback == 'function'){ var endtime = new Date(); var timelong = (endtime.getTime()-starttime.getTime())/1000; //console.info(parseInt(_timeInterval)+"==="+parseInt(timelong)); if(timelong > this.timeInterval){ callback(); }else{ setTimeout(function(){ callback(); }, Math.abs(_timeInterval-timelong)*1000); } } }; }; // 开启/关闭当前语音播报 (依赖与base.js导入的Cookie方法) Voice.prototype.changeSpeak = function(bool) { this.speak_enable = bool; setCookie('voice', bool); // 退出当前播报 if(!bool) { this.cancel(); } }; // 退出当前播报 Voice.prototype.cancel = function() { this.speak.cancel(); }; //停止语音播报 Voice.prototype.stopSpeak = function() { this.speak.cancel(); this.speak_enable = false; }; // 检查当前语言环境 Voice.prototype._setLang = function() { var _this = this; setTimeout(function(){ var voices = _this.speak.getVoices(); for(var i=0; i