1. SAPI.51 SDK浅析以及安装
SAPI SDK是微软公司免费提供的语音应用开发工具包,这个SDK中包含了语音应用设计接口(SAPI)、微软的连续语音识别引擎(MCSR)以及微软的语音合成(TTS)引擎等等。目前的5.1版本一共可以支持3种语言的识别 (英语,汉语和日语)以及2种语言的合成(英语和汉语)。SAPI中还包括对于低层控制和高度适应性的直接语音管理、训练向导、事件、语法编译、资源、语音识别(SR)管理以及TTS管理等强大的设计接口。其结构如图(1):


图(1)
语音引擎则通过DDI层(设备驱动接口)和SAPI(SpeechAPI)进行交互,应用程序通过API层和SAPI通信。通过使用这些API,用户可以快速开发在语音识别或语音合成方面应用程序。
SAPI5.1 SDK可以从微软网站下载:http://www.microsoft.com/speech/download/sdk51/ 需要安装程序的有Speech SDK 5.1(68M)和5.1 Language Pack (81.5M)
2. 导入COM对象到.Net
SAPI5.1的基于Windows平台的,通过COM接口进行调用。在.Net平台下要应用SAPI5.1,我们可以利用.Net Framework自带的强大工具TlbImp.exe来把SAPI SDK的COM对象导入到.Net中。TlbImp.exe产生一个管制的包装类,管理客户端可以使用它。包装类管理实际的COM对象的参考数。当包装类当作收集的垃圾时,包装类释放掉它包装的COM对象。当然,你也可以在VS.NET环境中通过从项目参考对话框选择COM对象,实现COM对象的导入,这个过程也是通过TlbImp.exe来完成的。
下面演示如何导入SAPI的COM对象:

SAPI.dll的目录在c:/Program Files/Common Files/Microsoft Shared/Speech

Tlbimp的目录在C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/Bin

在DOS下面运行命令:Tlbimp sapi.dll /out: DotNetSpeech.dll
在安转SDK以后,可以在C:/Program Files/Common Files/Microsoft Shared/Speech/目录下面找到SAPI.dll,这里面定义了SAPI的COM对象,用Tlbimp.exe工具将该dll转换成.net平台下的Assembly---DotNetSpeech.dll,转换的过程会提示不少的警告(warning),但这部影响我们的开发,可以忽略。最后,我们可以用ildasm查看DotnetSpeech.dll里面的对象。
 3.添加引用并using DotNetSpeech;
4.进行编程
测试环境:VS.NET2005(C#)
注意:
语音识别时,识别中英文要根据“语音特性”中你所选择的语言而定。
进入“语音特性”可以通过C:/Program Files/Common Files/Microsoft Shared/Speech/sapi.cpl
也可以通过编程
按钮事件://using System.Diagnostics;
ProcessStartInfo info = new ProcessStartInfo();
            try
            {
                /*未注明的在system32文件下,可以直接调用,注明地址的要写上绝对路径
                
                       选项                             文件名
                    ---------------------------------------------------
                    Internet选项:                    inetcpl.cpl
                    ODBC数据源管理:                  odbccp32.cpl
                    电话和调制解调器选项:            telephon.cpl
                    电源选项:                        powercfg.cpl
                    辅助功能选项:                    access.cpl
                    区域和语言选项:                  intl.cpl
                    日期和时间:                      timedate.cpl
                    声音和音频设备:                  mmsys.cpl
                    鼠标:                            main.cpl
                    添加或删除程序:                  appwiz.cpl
                    添加硬件:                        hdwwiz.cpl
                    网络连接:                        ncpa.cpl
                    系统:                            sysdm.cpl
                    显示:                            desk.cpl
                    用户帐户:                        nusrmgr.cpl
                    游戏控制器:                      joy.cpl
                    语音:                            sapi.cpl(C:/Program files/Common files/Microsoft Shared/Speech)
                Gateway Services for NetWare          Nwc.cpl
                   红外线                             Irprops.cpl(在您安装红外线设备之前,位于 C:/Windows/Driver cache/I386/Driver.cab )
                    -----------------------------------------------------
                    字体:                            Fonts
                    ------------------------------------------------------
                    这些是常用的控制面板中的选项。

                 */
                info.FileName = @"C:/Program files/Common files/Microsoft Shared/Speech/sapi.cpl";
                Process.Start(info);
            }
            catch(Win32Exception win)
            {
                MessageBox.Show("出错原因:" + win.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
 try
            {
                SpeechVoiceSpeakFlags spFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
                SpVoice voice = new SpVoice();
                voice.Speak(textBox1.Text, spFlags);
            }
            catch (Exception ee)
            {
                MessageBox.Show("Error", "SpeechApp", MessageBoxButtons.OK, MessageBoxIcon.Error);
            } 


本文转载:CSDN博客