在网页中使用TTS技术的例子 & 备忘录
2010-07-20 18:16
239 查看
TTS是微软推出的一套文字朗读引擎(Text-To-Speech Engine),我们可以让它来为我们诵读网页中的文字信息,让眼睛休息一下。
在Microsoft Speech SDK 5.1的Samples/Scripts/SimpleTTS中已经提供了一个演示例子,不过是全英文的,在参考修改中遇到了一个问题,即
COM对象Sapi.SpVoice的实例变量的定义代码要和初始化及事件处理代码分开。
也就是说:Sapi.SpVoice的实例变量VoiceObj的定义代码:
要放在一个<script></script>中,或者放在一个.js文件中,如speak0.js。
Sapi.SpVoice的实例变量VoiceObj的初始化及事件处理代码:
要放在另一个<script></script>中,或者放在另一个.js文件中,如speak1.js。
演示代码:
在Microsoft Speech SDK 5.1的Samples/Scripts/SimpleTTS中已经提供了一个演示例子,不过是全英文的,在参考修改中遇到了一个问题,即
COM对象Sapi.SpVoice的实例变量的定义代码要和初始化及事件处理代码分开。
也就是说:Sapi.SpVoice的实例变量VoiceObj的定义代码:
// Create the Sapi SpVoice object var VoiceObj = new ActiveXObject("Sapi.SpVoice");
要放在一个<script></script>中,或者放在一个.js文件中,如speak0.js。
Sapi.SpVoice的实例变量VoiceObj的初始化及事件处理代码:
function InitializeControls() { // Initialize the Voices and AudioOutput Select boxes var VoicesToken = VoiceObj.GetVoices(); var AudioOutputsToken = VoiceObj.GetAudioOutputs(); } InitializeControls(); function VoiceObj::EndStream() { idbSpeakText.value = "朗读"; } function VoiceObj::StartStream() { idbSpeakText.value = "停止"; }
要放在另一个<script></script>中,或者放在另一个.js文件中,如speak1.js。
演示代码:
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
// Create the Sapi SpVoice object var VoiceObj = new ActiveXObject("Sapi.SpVoice");
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
// Code in the BODY of the webpage is used to initialize controls and
// to handle SAPI events
/***** Initializer code *****/
function InitializeControls()
{
// Initialize the Voices and AudioOutput Select boxes
var VoicesToken = VoiceObj.GetVoices();
var AudioOutputsToken = VoiceObj.GetAudioOutputs();
}
InitializeControls();
// Handle EndStream event
function VoiceObj::EndStream()
{
idbSpeakText.value = "朗读";
}
// Handle StartStream event
function VoiceObj::StartStream()
{
idbSpeakText.value = "停止";
}
// SpeakText() function:
// This function gets the text from the textbox and sends it to the
// Voice object's Speak() function. The value "1" for the second
// parameter corresponds to the SVSFlagsAsync value in the SpeechVoiceSpeakFlags
// enumerated type.
function SpeakText()
{
//alert(document.body.innerText);
if (idbSpeakText.value == "朗读")
{
// Speak the string in the edit box
try
{
VoiceObj.Speak(document.body.innerText, 1);
}
catch (exception)
{
alert("Error");
}
}
else if(idbSpeakText.value == "停止")
{
// Speak empty string to Stop current speaking. The value "2" for
// the second parameter corresponds to the SVSFPurgeBeforeSpeak
// value in the SpeechVoiceSpeakFlags enumerated type.
VoiceObj.Speak( "", 2);
}
}
</script>
<SCRIPT FOR="window" EVENT="OnQuit()" LANGUAGE="JavaScript">
// Clean up voice object
delete VoiceObj;
</SCRIPT>
</HEAD>
<body>
<BUTTON id="idbSpeakText" onclick="SpeakText();">朗读</BUTTON>
<P> 这场比赛跟我预想的一样,德国队被西班牙玩死了。</P>
<P> 此前德国队横扫英格兰队和阿根廷队,立即吸引了众多墙头草,被捧为夺冠最大热门。</P>
<P> 其实熟悉欧洲俱乐部赛事的人都知道,德国俱乐部球队遇上西班牙球队成绩都不太理想。即使在西班牙联赛中水平表现一般的赫塔菲都能给德甲领头羊拜仁慕尼黑制造难堪。作为西甲领头羊的巴萨这几年对德国球队更是捷报频传,对阵不莱梅、斯图加特、沙尔克04、拜仁慕尼黑,不仅比分占优,而且在控球、传球上的技术优势也非常明显。</P>
<P> 此次西班牙对阵德国,西班牙队内首发的巴萨球员达到7人,除了巴尔德斯外,其他球员全部都上场了,普约尔和皮克坐镇后防线,哈维、布斯克茨、伊涅斯塔打中场,比利亚和佩德罗则打前锋。另外法布雷加斯和雷纳也出自巴萨青训营。而德国队首发阵容中来自拜仁的球员包括克洛泽、施魏因斯泰格和拉姆三人,如果不是托马斯-穆勒累积黄牌停赛,肯定也将是首发中的一员,而波多尔斯基和特罗肖夫斯基也曾在拜仁效力,另外替补席上的巴德施图贝尔、托尼-克罗斯、戈麦斯和布特也都是来自拜仁,也就是说这辆日尔曼战车同样有10名“拜仁帮”的球员。从一定意义上说,这场比赛就是 巴萨 vs 拜仁慕尼黑,西班牙队胜面很大。</P>
</body>
</html>
相关文章推荐
- 在网页中使用TTS技术的例子
- CSS3 优势以及网页设计师如何使用CSS3技术
- 在VB中使用文字朗读引擎(TTS)技术
- Web服务器推送技术介绍及Cometd使用例子
- what's in string? c语言string类函数实现汇总 觉得都是学习使用指针的好例子(算是读书摘抄和笔记吧)
- --=== 让你的程序开始说话(在VB中使用文字朗读引擎(TTS)技术)===--
- net技术中"反射"的使用方法
- JAVA在线抓取网页中的元素的例子(使用JSoup包进行解析)
- SVG技术在网页中使用方法
- Web服务器推送技术介绍及Cometd使用例子
- 微软专家与您一起谈谈测试人员职业规划&&技术专家与您一起交流LoadRunner使用经验。
- --=== 让你的程序开始说话(在VB中使用文字朗读引擎(TTS)技术)===--
- java使用htmlparser提取网页纯文本例子
- Kettle&nbsp;使用备忘录&nbsp;4-&nbsp;远程执行job…
- .net C# 反射技术使用例子(转自:http://www.programbbs.com/doc/5740.htm)
- 使用AJAX技术实现网页无闪自动局部刷新
- iOS开发——网络实用技术OC篇&网络爬虫-使用青花瓷抓取网络数据
- 分享网页设计当中使用进度条打造精美界面最佳例子
- 使用history.back()出现"警告: 网页已过期的解决办法"
- 如何使用epoll? 一个C语言的简单例子 - asdfjkl210 - ITeye技术网站