软件中的语音技术主要包括两方面的内容,一个是语音识别(speech recognition) ,另外一个是语音合成(speech synthesis),也即是文本语音转换系统(TTS)。

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

  (1)Voice Commands API。对应用程序进行控制,一般用于语音识别系统中。识别某个命令后,会调用相关接口是应用程序完成对应的功能。如果程序想实现语音控制,必须使用此组对象。

  (2)Voice Dictation API。听写输入,即语音识别接口。

  (3)Voice Text API。完成从文字到语音的转换,即语音合成。

  (4)Voice Telephone API。语音识别和语音合成综合运用到电话系统之上,利用此接口可以建立一个电话应答系统,甚至可以通过电话控制计算机。

  (5)Audio Objects API。封装了计算机发音系统。

  其中Voice Text API,就是微软TTS引擎的接口,通过它我们可以很容易地建立功能强大的文本语音程序,金山词霸的单词朗读功能就用到了这些API,而目前几乎所有的文本朗读工具都是用SAPI开发的。在这里,我们使用的主要就是Voice Text API。

安装SAPI SDK

  要使用SAPI让我们的软件能说会道,我们首先需要下载并安装SAPI SDK。首先从微软的网站上下载开发包: http://www.microsoft.com/speech/download/sdk51

  下载完毕后,首先安装SpeechSDK51.exe,然后安装中文语言补丁包SpeechSDK51LangPack,If 如果我们想将SAPI作为我们软件的一部分,随着我们的软件重新发布,我们还需要安装SpeechSDK51MSM.exe。

  安装好SAPI SDK后,即可开始在VS2010中使用SAPI让我们的软件能说会道了。

创建项目,添加SAPI的引用

  这里,我们将创建一个普通的WinForm程序,它可以利用TTS朗读文本,也可以将文本文件通过TTS转换为声音文件,真正是一个“能说会道”的软件。首先,我们在VS2010中创建一个WinForm程序,并且将窗体设计如下:

 

  中的Text Box用于显示我们要阅读的文本,而Combo Box控件用于显示系统中已经安装的所有语音,用户可以从中选择当前TTS使用的语音。

  要在我们的项目中使用SAPI,我们还需要给项目添加SAPI的引用。用VS2010提供的添加引用功能,在添加引用对话框的COM​​标签​​页面中找到Microsoft Speech Object Library,将其添加到项目中。

  SAPI所提供的各个类都在名字空间SpeechLib之下,所以在代码中我们还需要使用using SpeechLib,表示我们将使用这个名字空间。这样我们就可以使用SAPI所提供的各种类来实现语音合成或者是语音识别了。

 

创建SpVoice对象,初始化SAPI

  SAPI的TTS都是通过SpVoice对象来完成的。SpVoice类是支持语音合成(TTS)的核心类。通过SpVoice对象调用TTS引擎,从而实现朗读功能。 SpVoice类有以下主要属性:

  • Voice:表示发音类型,相当于进行朗读的人,通常我们可以通过安装相应的语音引擎来增加相应的语音。

  • Rate:语音朗读速度,取值范围为-10到+10。数值越大,速度越快。

  • Volume:音量,取值范围为0到100。数值越大,音量越大。

  SpVoice有以下主要方法:

  • Speak():完成将文本信息转换为语音并按照指定的参数进行朗读,该方法有Text和Flags两个参数,分别指定要朗读的文本和朗读方式(同步或异步等)。

  • GetVoices():获取系统中的语音,用于指定SpVoice的Voice属性。

  • Pause():暂停使用该对象的所有朗读进程。该方法没有参数。

  • Resume():恢复该对象所对应的被暂停的朗读进程。该方法没有参数。

  所以我们在窗体的构造函数中,首先需要完成SpVoice对象的创建,然后才能使用这个对象来朗读文本。 因为系统中可能有多个语音可供选择,所以我们在创建窗体的时候,同时需要用一个Combo Box控件列举出系统中所有的语音,并且选中默认的第一个语音。当窗体创建后,用户可以在这个Combo Box选择自己喜欢的语音来朗读文本。

 

WinCE50 SAPI Problem about the sample "BASICTTS"

When call the Speak(), it failed with error code 0x8004503a.

 

To run MS's (Text-to-Speech)sample at> C:\WINCE500\PUBLIC\SPEECH\SDK\SAMPLES\CPP\BASICTTS>> First, I add one component :> http://photobucket.com/albums/v231/auronc/?action=view&current=Catalog.jpg​>>

Second, add registry:> [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\SPEECH]> "HighestThreadPriority"=dword:a0> "NormalThreadPriority"=dword:a1>>

Third, I use eVC to build the sample, then> ----------------------------------------------------------------------->

int _tmain(int argc, TCHAR* argv[])>

{> HRESULT hr;> hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);> if(SUCCEEDED(hr))>

{> CComPtr<ISpVoice> cpVoice;>

 hr = cpVoice.CoCreateInstance(CLSID_SpVoice);>

if (SUCCEEDED(hr))>

{> hr = cpVoice->Speak(L"This sample program uses basic text> to speech operations.", 0, NULL);>

}> //..........> }

 


安装微软语音包speechsdk51LangPack.exe和speechsdk51.exe


安装微软语音包speechsdk51LangPack.exe和speechsdk51.exe

首先我们去下载微软语音包speechsdk51LangPack.exe和speechsdk51.exe
​​​http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=10121​​​

其中speechsdk51LangPack.exe是中文语音包
下好后请先解压。

peechsdk51.exe----这个是SDK。Speechsdk51LangPack---这个是SDK语言包,必须先解压安装SDK,然后再解压安装SDK语言包,才能支持中文,输入中文。

[解压]2.选定speechsdk51.exe双击,出现解压文件窗口,在编辑框中输入解压位置"C:\speechsdk51\"

,点unzip按钮开始解压文件.解压成功,点确定关闭窗口.

[解压]3.选定speechsdk51LangPack.exe双击,出现解压文件窗口,在编辑框中输入解压位置"C:\speechsdk51LangPack\"

,点unzip按钮开始解压文件.解压成功,点确定关闭窗口.

[安装]3.打开C:\speechsdk51\文件夹,找到Setup.exe文件,选定后双击进行安装.按钮选项点击顺序如下(必须先安装这个SDK):

一路点 [Next]---[I accept....]---[Next]----[Next]---[Install]----[Finish].即可完成安装。 

[安装]4.打开C:\speechsdk51LangPack\文件夹,找到Setup.exe文件,选定后双击进行安装.按钮选项点击顺序如下(安装SDK后,再安装这个SDK语言包):

一路点 [Next]---[I accept....]---[Next]----[Next]---[Install]----[Finish].即可完成安装。  

[配置]5.打开[我的电脑],点击窗口左侧栏中的[控制面板]选项,打开[控制面板],双击控制面板中的[语音]图标项

[配置]6.在打开的[语音属性]窗口中,将[语言(L)]下面的选择框中选择为:"Microsoft Simplified Chinese Recogniner v5.1".点窗口下边的[确定]按钮关闭窗口.

如果你找不到“Microsoft Simplified Chinese Recogniner v5.1”说明您没有成功安装SDK语言包,请重新回到前面的步骤下载

解压安装SDK语言包 -speechsdk51LangPack.exe。如果不安装SDK语言包或是没有成功安装,则不能输入中文,因为没有中文语言包支持。

[完成]7.至此,你已经基本完成了软件使用前的配置.请重新打开运行软件进行语音输入吧.