浏览器调用操作系统讲述人功能

TTS是微软推出的一套文字朗读引擎(Text-To-Speech Engine),我们可以让它来为我们诵读网页中的文字信息,让眼睛休息一下。

在Microsoft Speech SDK 5.1的Samples/Scripts/SimpleTTS中已经提供了一个演示例子,不过是全英文的,在参考修改中遇到了一个问题,即

 

COM对象Sapi.SpVoice的实例变量的定义代码要和初始化及事件处理代码分开。

 

  也就是说:Sapi.SpVoice的实例变量VoiceObj的定义代码:

 

 

[javascript]  view plain copy
  1. // Create the Sapi SpVoice object  
  2. var VoiceObj = new ActiveXObject("Sapi.SpVoice");  

 

 

要放在一个<script></script>中,或者放在一个.js文件中,如speak0.js。

 

Sapi.SpVoice的实例变量VoiceObj的初始化及事件处理代码:

 

 

[javascript]  view plain copy
  1. function InitializeControls()  
  2. {  
  3.  // Initialize the Voices and AudioOutput Select boxes  
  4.  var VoicesToken = VoiceObj.GetVoices();  
  5.  var AudioOutputsToken = VoiceObj.GetAudioOutputs();  
  6. }  
  7.   
  8. InitializeControls();  
  9.   
  10.   
  11. function VoiceObj::EndStream()  
  12. {  
  13.  idbSpeakText.value = "朗读";  
  14. }  
  15.   
  16. function VoiceObj::StartStream()  
  17. {  
  18.  idbSpeakText.value = "停止";  
  19. }  

 

要放在另一个<script></script>中,或者放在另一个.js文件中,如speak1.js。

 

  演示代码:

 

 

 

[javascript]  view plain copy
  1. <HTML>  
  2. <HEAD>  
  3. <SCRIPT LANGUAGE="JavaScript">  
  4. // Create the Sapi SpVoice object  
  5. var VoiceObj = new ActiveXObject("Sapi.SpVoice");  
  6. </SCRIPT>  
  7.   
  8. <SCRIPT LANGUAGE="JavaScript">  
  9.   
  10. // Code in the BODY of the webpage is used to initialize controls and  
  11. // to handle SAPI events  
  12.   
  13. /***** Initializer code *****/  
  14.   
  15. function InitializeControls()  
  16. {  
  17.     // Initialize the Voices and AudioOutput Select boxes  
  18.     var VoicesToken = VoiceObj.GetVoices();  
  19.     var AudioOutputsToken = VoiceObj.GetAudioOutputs();  
  20. }  
  21.   
  22. InitializeControls();  
  23.   
  24. // Handle EndStream event     
  25. function VoiceObj::EndStream()  
  26. {  
  27.     idbSpeakText.value = "朗读";  
  28. }  
  29.   
  30. // Handle StartStream event   
  31. function VoiceObj::StartStream()  
  32. {  
  33.     idbSpeakText.value = "停止";  
  34. }  
  35.   
  36. // SpeakText() function:  
  37. //      This function gets the text from the textbox and sends it to the  
  38. //      Voice object's Speak() function. The value "1" for the second  
  39. //      parameter corresponds to the SVSFlagsAsync value in the SpeechVoiceSpeakFlags  
  40. //      enumerated type.  
  41. function SpeakText()  
  42. {  
  43. //alert(document.body.innerText);  
  44.     if (idbSpeakText.value == "朗读")  
  45.     {  
  46.         // Speak the string in the edit box  
  47.         try  
  48.         {  
  49.             VoiceObj.Speak(document.body.innerText, 1);  
  50.         }  
  51.         catch (exception)  
  52.         {  
  53.             alert("Error");  
  54.         }  
  55.     }  
  56.     else if(idbSpeakText.value == "停止")  
  57.     {  
  58.         // Speak empty string to Stop current speaking. The value "2" for   
  59.         // the second parameter corresponds to the SVSFPurgeBeforeSpeak  
  60.         // value in the SpeechVoiceSpeakFlags enumerated type.  
  61.         VoiceObj.Speak( "", 2);  
  62.     }  
  63. }  
  64. </script>  
  65.   
  66. <SCRIPT FOR="window" EVENT="OnQuit()" LANGUAGE="JavaScript">  
  67.     // Clean up voice object  
  68.     delete VoiceObj;  
  69. </SCRIPT>  
  70. </HEAD>  
  71.   
  72. <body>  
  73. <BUTTON id="idbSpeakText" οnclick="SpeakText();">朗读</BUTTON>  
  74. <P>  这场比赛跟我预想的一样,德国队被西班牙玩死了。</P>  
  75. <P>  此前德国队横扫英格兰队和阿根廷队,立即吸引了众多墙头草,被捧为夺冠最大热门。</P>  
  76. <P>  其实熟悉欧洲俱乐部赛事的人都知道,德国俱乐部球队遇上西班牙球队成绩都不太理想。即使在西班牙联赛中水平表现一般的赫塔菲都能给德甲领头羊拜仁慕尼黑制造难堪。作为西甲领头羊的巴萨这几年对德国球队更是捷报频传,对阵不莱梅、斯图加特、沙尔克04、拜仁慕尼黑,不仅比分占优,而且在控球、传球上的技术优势也非常明显。</P>  
  77. <P>  此次西班牙对阵德国,西班牙队内首发的巴萨球员达到7人,除了巴尔德斯外,其他球员全部都上场了,普约尔和皮克坐镇后防线,哈维、布斯克茨、伊涅斯塔打中场,比利亚和佩德罗则打前锋。另外法布雷加斯和雷纳也出自巴萨青训营。而德国队首发阵容中来自拜仁的球员包括克洛泽、施魏因斯泰格和拉姆三人,如果不是托马斯-穆勒累积黄牌停赛,肯定也将是首发中的一员,而波多尔斯基和特罗肖夫斯基也曾在拜仁效力,另外替补席上的巴德施图贝尔、托尼-克罗斯、戈麦斯和布特也都是来自拜仁,也就是说这辆日尔曼战车同样有10名“拜仁帮”的球员。从一定意义上说,这场比赛就是 巴萨 vs 拜仁慕尼黑,西班牙队胜面很大。</P>  
  78. </body>  
  79. </html>  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值