您的位置:首页精文荟萃软件FAQ → SuperMemoUX自动调用TTS基础分析

SuperMemoUX自动调用TTS基础分析

时间:2010/8/20 8:31:07来源:本站整理作者:大毛我要评论(0)

SuperMemoUX自动调用TTS基础分析
如何让UX调用TTS,省去使用庞大语音库的麻烦?这是舍得本文要阐述的主要内容;
经过反复测试,使用下述的代码可以实现调用TTS来朗读指定内容: <TEXTAREA ID=idTextBox COLS=91 ROWS=6>

I saw its ordered happiness,but a fever in my blood asked for a wilder course.

</TEXTAREA>

<P align=center> <BUTTON id=idbSpeakText onclick=SpeakText();

  style="HEIGHT: 24px;  WIDTH: 91px">播放</BUTTON>

</P>

<script>

var VoiceObj = new ActiveXObject("Sapi.SpVoice");

function SpeakText() {

if( idbSpeakText.value == "播放" )

{

try

{

VoiceObj.Speak( idTextBox.value, 1 ); idbSpeakText.value="停止";

}

catch(exception)

{

alert("Speak error");

}

}

else if( idbSpeakText.value == "停止" )

{

VoiceObj.Speak( "", 2 ); idbSpeakText.value="播放";

}

}

</script>

 

注意,使用时要将"<>"分别替换为"&lt;"和"&gt;".这里为了分析代码方便,未做转换.
复制代码代码分析:

整段代码分成三个部分:
1.TEXTAREA:里面的"I saw its ordered happiness,but a fever in my blood asked for a wilder course."就是要朗读的对象;
2.BUTTON :播放按钮;
3.script:播放控制脚本;

使用的时候,2,3两个部分不需要改,只要在你要修改的句子前后加上TEXTAREA代码即可.

这部分工作最好是由转换精灵来完成,具体的功能正在设计之中.动手能力强的童鞋,可以借助Search&Replace来批量替换文本,实现自动调用TTS的目的.

TTS部分应作如下设置:
1.首先保证系统内安装了TTS引擎,推荐使用iVona的Brian;
2.在控制面板中找到"语音"并双击,切换到"文字-语音转换"选项卡,选择将要作为系统默认TTS的语音,如"iVona Brian",调整好语速(一般默认即可),点击确定即可完成操作;

IE部分应作如下设置:
因为需要加载sapi.spvoice控件,必须降低IE的安全级别,才能在UX中正常使用TTS。

方法:打开IE,然后选"工具->Internet选项--安全->自定义级别",启用"对未标记为可安全执行脚本的的ActiveX控制初始化并执行脚本"
此项操作后,需重启UX方可生效.

此版本代码仍然不是最精简的版本,因为在同一页面中,如果需要对单词和例句分别加以控制的时候,代码仍需进一步修改,这个有待进一步研究.

[续]
舍得对上面的代码再次进行精简,针对需要多处调用播放脚本的情况,进行了优化,下面是优化后的代码:   <question>bear

  &lt;br&gt;

&lt;button onClick="say('bear')"&gt;播放&lt;/button&gt;&lt;button onClick="say('')"&gt;停止&lt;/button&gt;

&lt;br&gt;

I saw its ordered happiness,but a fever in my blood asked for a wilder course.

&lt;br&gt;

&lt;button onClick="say('I saw its ordered happiness,but a fever in my blood asked for a wilder course.')"&gt;播放&lt;/button&gt;&lt;button onClick="say('')"&gt;停止&lt;/button&gt;

&lt;script&gt;

var VoiceObj = new ActiveXObject("Sapi.SpVoice");

function say(content){

VoiceObj.Speak(content);

}&lt;/script&gt;

</question>
复制代码在这个例子中,把上面的TEXTAREA去掉了,播放部分直接在button内引用,在脚本中加入了"content"参数,这样一个脚本就可以同时控制多处内容--内容只要在button修改即可.按钮改为两个(播放和停止),顺便把"出错判断"的代码也精简掉了.
例中播放有两处,分别为单词和句子.
制作出来的效果如下:

这样的版本基本上可以使用了,代码并不长.

P.S.:其实停止按钮部分代码也可以去掉.因为从实际使用的过程中发现,点了播放之后,程序基本上不会给你点停止的机会,句子特长的可能会有点用....有这工夫,切换一下页面岂不更快?
这种调用方式比用灵格斯划译的方式的优胜之处在于,你不用去选取整个句子,这样能节省一点点时间.
接下来要研究一下自动播放的问题.

[续]
如何实现自动播放?
代码如下: &lt;script language="JavaScript"&gt;

    VoiceObj.Speak 'Who are you?');

&lt;/SCRIPT&gt;
复制代码只要加一句VoiceObj.Speak('Who are you?');即可,可以写到上面的脚本里面,因为上面已经声明了VoiceObj这个变量,所以可以直接调用.如果要分开写的话,必须跟在上面那个脚本后面.
例子中的"Who are you"就是要自动播放的内容(相当于以前的bgsound),你要播放什么,将它放到这个位置即可.自动播放一般不宜多,Q/A各一处就行了.

相关视频

    没有数据

相关阅读 超级改装车Super Street什么时候出 超级改装车Super Street发售时超级兔子人怎么拿萝卜攻略 超级兔子人怎么拿胡萝卜教程superpads counting stars怎么弹 superpads counting stars图文教superpads数字谱子 superpads新手数字谱子大全superpads怎么玩 superpads教程教学任天堂超级玛丽手游试玩 任天堂Super Mario Run试玩视频超级怪兽VR好玩吗 超级怪兽Super Kaiju VR游戏评测SuperHotVR登陆Oculus 免费提供游戏给众筹支持者

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 真三国无双凉宫修改器如何用美图拍拍制作和 没有找到d3d9.dll怎么办_缺少d3d9_xx.dll的FAT32与NTFS的区别?.NET 3.5 安装错误的四个原因及解决方法Mykeylock滑动解锁软件的操作教程

人气排行 .NET 3.5 安装错误的四个原因及解决方法真三国无双凉宫修改器使用教程MSN错误代码_解决大全80048823等 登陆不了解没有找到d3d9.dll怎么办_缺少d3d9_xx.dll的kmplayer怎么截屏 (含如何用快捷键截屏)如何用windows自带的截图按钮来截屏如何用美图拍拍制作和明星合影的相片如何使用qq截屏