Windows 语音编程

来源:互联网 发布:知乎 真实故事计划 编辑:程序博客网 时间:2024/05/02 13:52
微软语音组件官网
SAPI介绍(5.3和5.4)

SAPI简介

软件中的语音技术包括两方面的内容,一个是语音识别(speech recognition) 和语音合成(speech synthesis)。这两个技术都需要语音引擎的支持。微软推出的应用编程接口API,虽然现在不是业界标准,但是应用比较广泛。SAPI全称 The Microsoft Speech API.相关的SR和SS引擎位于Speech SDK开发包中。这个语音引擎支持多种语言的识别和朗读,包括英文、中文、日文等。

SAPI包括以下组件对象(接口):

(1)Voice Commands API。对应用程序进行控制,一般用于语音识别系统中。识别某个命令后,会调用相关接口是应用程序完成对应的功能。如果程序想实现语音控制,必须使用此组对象。
(2)Voice Dictation API。听写输入,即语音识别接口。
(3)Voice Text API。完成从文字到语音的转换,即语音合成。
(4)Voice Telephone API。语音识别和语音合成综合运用到电话系统之上,利用此接口可以建立一个电话应答系统,甚至可以通过电话控制计算机。
(5)Audio Objects API。封装了计算机发音系统。

SAPI是架构在COM基础上的,微软还提供了ActiveX控件,所以不仅可用于一般的windows程序,还可以用于网页、VBA甚至EXCEL的图表中。如果对COM感到陌生,还可以使用微软的C++ WRAPPERS,它用C++类封装了语音SDK COM对象。

语音合成TTS(Text to Speech)

初始化语音接口 

或者使用智能指针:

CLSID_SpVoice的定义位于SPAI.H中。

获取/设置输出频率

SAPI朗读文字的时候,可以采用多种频率方式输出声音,比如:8kHz 8Bit Mono、8kHz 8Bit Stereo、44kHz 16Bit Mono、44kHz 16Bit Stereo等。

下面是获取当前的配置的代码:

  

下面的代码则是设置当前朗读频率:

开始/暂停/恢复/结束

ISpVoice接口

开始:m_cpVoice->Speak

暂停:m_cpVoice->Pause

恢复:m_cpVoice->Resume

停止:m_cpVoice->Speak( NULL, SPF_PURGEBEFORESPEAK, 0); 、

如果编译器无法识别宏:SPF_PURGEBEFORESPEAK,则将其换成2即可,SPF_PURGEBEFORESPEAK是一枚举量,详见SPEAKFLAGS。