<html> <head><title>语音测试例子</title></head> <body> 音量: <input id="vol"></input>语速<input id="rat"></input> <p> 朗读人: <select id="speaker"> </select> 输出设备: <select id="outputer"> </select> <p> <textarea id="text" rows="3" cols="80"> 我们的教育真是问题成堆,很多情况下不是在培育英才而是在糟蹋人才。不上学大不了是个不识字的文盲,进校门后就可能成为弄虚作假的高手;不上大学可能还对学术有一份敬重,进大学后才知道学术是“什么玩艺儿”。一个人从幼儿园和小学开始,学校就逼着他如何搞形式,如何说假话,如何拉关系。只要在中国从幼儿园读到大学毕业,任何一个天真纯洁的孩子,都可能培养成为一个圆滑世故的老油条;任何一个真诚的儿童,都可能成为一个伪君子。 </textarea> <p> <button onClick="speak()">朗读</button><button onClick="stop()">停止</button> <p> <p id="test"></p> <script > var sap; //初始化TTS function init() { if(navigator.appName!="Microsoft Internet Explorer") { alert("请切换到IE内核"); return false; } try { sap= new ActiveXObject("Sapi.SpVoice"); } catch(ex) { alert("初始化失败!"+ex); return false; } if(sap==null) { alert("初始化失败!没有Sapi.SpVoice控件"); return false; } // return true; } //初始化设置参数 function setting() { vol.value=sap.Volume; rat.value=sap.Rate; var VoicesToken = sap.GetVoices(); var AudioOutputsToken = sap.GetAudioOutputs(); //朗读引擎 for( var i=0; i <VoicesToken.Count; i++ ) { var oOption = document.createElement("OPTION"); speaker.options.add(oOption); oOption.innerText = VoicesToken.Item(i).GetDescription(); oOption.value = i; } //输出设备 for( var i=0; i <AudioOutputsToken.Count; i++ ) { var oOption = document.createElement("OPTION"); outputer.options.add(oOption); oOption.innerText = AudioOutputsToken.Item(i).GetDescription(); oOption.value = i; } } //获取设置参数 function change() { try { sap.Volume=parseInt(vol.value); sap.Rate=parseInt(rat.value); sap.Voice = sap.GetVoices().Item(parseInt(speaker.value)); sap.AudioOutput = sap.GetAudioOutputs().Item(parseInt(speaker.value)); } catch(err) { alert("设置出错!"+err); } } if(init()) { setting(); } function speak() { change(); try { sap.speak(text.innerText,1); } catch(err) { alert("朗读出错"); } } function stop() { sap.speak("",2); } //语音朗读状态 function getStatus() { st=sap.Status; msg="Status:" +",\n CurrentStreamNumber:"+st.CurrentStreamNumber +",\n InputSentenceLength:"+st.InputSentenceLength +",\n InputSentencePosition:"+st.InputSentencePosition +",\n InputWordLength:"+st.InputWordLength +",\n InputWordPosition:"+st.InputWordPosition +",\n InputWord:"+text.innerText.substring(st.InputWordPosition,st.InputWordPosition+st.InputWordLength ) +",\n LastBookmark :"+st.LastBookmark +",\n LastBookmarkId :"+st.LastBookmarkId +",\n LastHResult :"+st.LastHResult +",\n LastStreamNumberQueued :"+st.LastStreamNumberQueued +",\n PhonemeId :"+st.PhonemeId +",\n RunningState :"+st.RunningState +",\n VisemeId :"+st.PhonemeId ; test.innerText=msg; } //getStatus(); setInterval("getStatus()",100); </script> </body> </html>