以上的代码中主要做了几件TTS最基本的事情:
1) 初始化COM ,因为SAPI是基于COM的应用,使用之前必须首先初始化COM。
2) 创建voice对象,即一个COM对象。
3) 实现朗读,即调用speak方法。
另外必须把头文件sapi.h加到前面:
#include <sapi.h>
编译通过后就可以运行程序了,在编辑框中输入一段文字,按speak按钮,我们就能听到电脑读出的令人兴奋的声音了。
Microsoft的TTS引擎提供了4种朗读文字的声音,其中三种英文声音:Mary(女),mike和sam(男)一种中文声音:simplyfied Chinese。因为默认的TTS引擎是英文发声,如果要想朗读中文或选择不同的人进行朗读,可以在朗读前调用
ISpVoice::SetVoice方法进行声音的设定,或者在朗读前双击用控制面板中的语音图标(安装
Microsoft Speech SDK后自动添加的
),选择文字-语音转换选项卡进行默认声音的设置。
如:"C:/Program Files/Microsoft Speech SDK 5.1/Lib/i386".
5.结束语
SPAI 5.1不仅适合用VC++进行开发,还可以用VB、c#等进行开发,具体方法可以参考SDK帮助文档。结合windows程序设计的其它技术,只要取得文本的内容,就可以实现对对word、IE、电子邮件等各种文字的朗读。
本人利用windows API剪贴板操作函数和模拟键盘的方法在朗读程序中实现了对任意文本内容的获取,包括IE、WORD、PDF等所有可以被鼠标选中的文本。另还外利用中英文内码的不同对所取得的文本进行中英文分析并按不同的语言分段,在朗读前利用ISpVoice::SetVoice方法进行中文或英文声音的设定,从而实现了中英文混合文本的朗读。合成这些方法和技术实现了一个电脑播音软件。
此外Microsoft Speech SDK 5.1的语音识别技术和语音识别引擎功能也很强大,可以用它开发具有语音识别功能的程序。
参考文献:
[1] Microsoft Corporation. MSDN Library Microsoft Corporation,2001-10
[2] Microsoft Corporation. Microsoft Speech SDK SAPI 5.1 Microsoft Corporation,2001
[3]Jagadish.G . Using Text to Voice Interfaces [EB/OL]. http://www.codeproject.com/audio/SpeakText.asp, 2002-09
[4]Agus Kurniawan. Simple Program for Text to Speech Using SAPI [EB/OL]. http://www.codeproject.com/audio/speech.asp ,2001-11