SAPI 5.1 语音合成的事件

时间:2021-04-01 20:12:02

 

翻译说明:这篇译原文五个部分 Making Your Computer TalkVoice EventsAnimating SpeechKeeping Track Of Spoken TextSpeaking Dialogs
只是说翻译范围覆盖这五个部分的范围,其中有一些例子不重写了,因为我暂时用不上,有一些乱七八糟的话不译,怕出错,毕竟对其理解不是很深,只挑一些重要的进行复述

Making Your Computer Talk 部分
提及了如何让朗读暂停和进行,只提取其中用到的几个函数,基本上原型一些出来就知道怎么回事,不详细翻译了
SAPI 5.1 语音合成的事件SpVoiceClass
  public virtual void Pause(); //暂停函数

SAPI 5.1 语音合成的事件
public virtual void Resume();//恢复函数
SAPI 5.1 语音合成的事件
public virtual int Skip(string Type, int NumItems);//跳过朗读函数
基本一看名称就知道了,只对Skip的参数做一个说明,Type参数代表要跳过的Item的类型[如 sentence 按句子跳过...],但注意这个参数目前只能是"Sentence",后面的NumItems 是指要跳过多少个句子

Voice Events  事件部分
事件的使用和正常的使用没什么大的区别,唯一需要注意的是
SAPI 5.1 语音合成的事件SpVoiceClass
SAPI 5.1 语音合成的事件SAPI 5.1 语音合成的事件public   virtual  SpeechVoiceEvents EventInterests  getset; }
这个属性,运行原理如下:
朗读开始后,类会检测EventInterests属性里所有事件,并触发事件,没有包括在内的事件不会触发
SpeechVoiceEvents枚举变量如下
SAPI 5.1 语音合成的事件Enum SpeechVoiceEvents
SAPI 5.1 语音合成的事件    SVEStartInputStream 
=   2
SAPI 5.1 语音合成的事件    SVEEndInputStream 
=   4
SAPI 5.1 语音合成的事件    SVEVoiceChange 
=   8
SAPI 5.1 语音合成的事件    SVEBookmark 
=   16
SAPI 5.1 语音合成的事件    SVEWordBoundary 
=   32
SAPI 5.1 语音合成的事件    SVEPhoneme 
=   64
SAPI 5.1 语音合成的事件    SVESentenceBoundary 
=   128
SAPI 5.1 语音合成的事件    SVEViseme 
=   256
SAPI 5.1 语音合成的事件    SVEAudioLevel 
=   512
SAPI 5.1 语音合成的事件    SVEPrivate 
=   32768
SAPI 5.1 语音合成的事件    SVEAllEvents 
=   33790
SAPI 5.1 语音合成的事件End Enum
多个枚举变量用或运算符连接,变量代表的事件具体说明见SAPI的帮助

Animating Speech  动画语音

OnViseme 事件由每个"可识别位置"引发["可识别位置"指朗读一段时发音嘴型需要明显改变的位置],英语朗读里一共有22个"可识别位置"[根据迪斯尼定义的13个可识别位置(早期动画用13个图片代表嘴唇动作)]
可以用相应的嘴形图片形成简单的发音动画
[具体例子不重做了,需要的请见原文]

Keeping Track Of Spoken Text 跟踪朗读文字
[原文通过事件 OnWord & OnSentence 简单实现了高亮显示正在阅读的文字]
[简单不翻译了...懒...]

Speaking Dialogs  朗读对话框
[原文穷举了一个Form的Label 和 Button 属性,朗读出所有的Text,简单不翻译]

到此,原文 Speech Synthesis 语音合成部分结束
译后,才发现没译出什么,主要是比较简单,原文实现了一些例子,将其中重要的TIPs提取出来,主要是实现并不难,对本人没有参考价值



本文转自Tachikoma
http://www.cnblogs.com/Tachikoma/