中文语音识别技术在c#中的应用.docx

上传人:小飞机 文档编号:4936168 上传时间:2023-05-24 格式:DOCX 页数:13 大小:223.23KB
返回 下载 相关 举报
中文语音识别技术在c#中的应用.docx_第1页
第1页 / 共13页
中文语音识别技术在c#中的应用.docx_第2页
第2页 / 共13页
中文语音识别技术在c#中的应用.docx_第3页
第3页 / 共13页
中文语音识别技术在c#中的应用.docx_第4页
第4页 / 共13页
中文语音识别技术在c#中的应用.docx_第5页
第5页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《中文语音识别技术在c#中的应用.docx》由会员分享,可在线阅读,更多相关《中文语音识别技术在c#中的应用.docx(13页珍藏版)》请在三一办公上搜索。

1、.Net平台下开发中文语音应用程序摘要:语音是人类最自然的交互方式,也是现阶段软件用户界面发展的最高目标。微软 公司一直积极推动语音技术的发展,并且公布了语音开发平台Speech SDK帮 助开发人员实现语音应用。随着.net技术深入人心,越来越多的程序员开始转到.net平台上进行开发。然而, 在新发布的.net speech SDK里面并没有对中文语音进行支持,目前支持中文的 Speech SDK最高版本为Windows平台下的SAPI 5.1(),本文介绍如何在.net 平台下利用SAPI5.1开发中文语音应用程序。目录:1. SAPI.51 SDK浅析以及安装2. 导入COM对象到.Ne

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

3、echAPI)进行交互,应用程序通过API层和SAPI通信。通过使用这些API,用户可以快速开发在语音识 别或语音合成方面应用程序。SAPI5.1 SDK 可 以 从 微 软 网 站 下 载: 需要安装程序的有 SpeechSDK 5.1(68M)和 5.1 Language Pack(81.5M)。2. 导入COM对象到.NetSAPI5.1的基于Windows平台的,通过COM接口进行调用。在.Net平台下要 应用SAPI5.1,我们可以利用.Net Framework自带的强大工具TlbImp.exe来把 SAPI SDK的COM对象导入到.Net中。TlbImp.exe产生一个管制的包

4、装类,管 理客户端可以使用它。包装类管理实际的COM对象的参考数。当包装类当作收 集的垃圾时,包装类释放掉它包装的COM对象。当然,你也可以在VS.NET环 境中通过从项目参考对话框选择COM对象,实现COM对象的导入,这个过程 也是通过TlbImp.exe来完成的。下面演示如何导入SAPI的COM对象:D:Program FilesCommon FilesMicrosoft SharedSpeechTlbimp sapi.dll /out: DotNetSpeech.dll在安转 SDK 以后,可以在 D:Program FilesCommon FilesMicrosoft SharedSp

5、eech目录下面找到SAPI.dll,这里面定义了 SAPI的COM对象,用 Tlbimp.exe 工具将该 dll 转换成.net 平台下的 Assembly-DotNetSpeech.dll,转 换的过程会提示不少的警告(warning),但这部影响我们的开发,可以忽略。最 后,我们可以用ildasm查看DotnetSpeech.dll里面的对象。3.用C#开发中文TTS应用程序示例下面通过一个实例来介绍如何利用C#进行开发语音应用程序,开发环境为:操作系统: Windows 2000中文版+ SP3.Net Framework: 1.0.3705 (英文版)Visual Studio.N

6、et 7.0.9466 (英文版)首先,新建一个C#的Windows Application工程SpeechApp,在开发环境的右 边的解决方案管理器(Solution Explorer)中,添加DotNetSpeech对象库。右键 点击Reference参考),选择Add Reference(添加参考),在弹出的文件选择对话框中找到刚才生成的DotNetSpeech.dlloAdd Web ReFrencE.Add 整 E 改eng.,SolutiQnSpqetbApp(1 project)二 .事 SpeechftppeQ ne x. i Sy JO 5yO Systiem.Draffig

7、h_j System. windows. Forr, B Systerfi.XML.司 Aps.imSoluSn 涉Iciwr -邹巳日寸呻口 一甲 X图打开Form1.cs代码文件,在代码开头添加名字空间(注意大小写)。using DotNetSpeech;这样就实现了 SAPI SDK的导入,下面我们就可以开始编写应用代码了。本示 例演示如何把文本通过喇叭朗读出来以及把文本转化成语音信号(Wave声音文 件),程序界面如图(3):朗读private void buttonSynthesis_Click(object sender, System.EventArgs e)(try(Speec

8、hVoiceSpeakFlags SpFlags =SpeechVoiceSpeakFlags.SVSFlagsAsync;SpVoice Voice = new SpVoice();Voice.Speak(this.textBoxText.Text, SpFlags);catch(Exception er)(MessageBox.Show(An Error Occured!,SpeechApp,MessageBoxButtons.OK, MessageBoxIcon.Error);生成声音文件(Wav)private void buttonTTStoWave_Click(object sen

9、der, System.EventArgs e)(try(SpeechVoiceSpeakFlags SpFlags =SpeechVoiceSpeakFlags.SVSFlagsAsync;SpVoice Voice = new SpVoice();SaveFileDialog sfd = new SaveFileDialog();sfd.Filter = All files (*.*)|*.*|wav files (*.wav)|*.wav;sfd.Title = Save to a wave file;sfd.FilterIndex = 2;sfd.RestoreDirectory =

10、true;if (sfd.ShowDialog()= DialogResult.OK)(SpeechStreamFileMode SpFileMode =SpeechStreamFileMode.SSFMCreateForWrite;SpFileStream SpFileStream = new SpFileStream();SpFileStream.Open(sfd.FileName, SpFileMode, false);Voice.AudioOutputStream = SpFileStream;Voice.Speak(txtSpeakText.Text, SpFlags);Voice.

11、WaitUntilDone(Timeout.Infinite);SpFileStream.Close();catch(Exception er)(MessageBox.Show(An Error Occured!”,SpeechApp”, MessageBoxButtons.OK, MessageBoxIcon.Error);接下来,还要去控制面板配置Speech SDK引擎当前所处理语言。打开”控制面板”,打开”语音”配置项目,可以看到在这里我们可以指定当前可以对何种语言进行识别或者合成,还可以配置相关的硬件设备以及控制语速。(如图4)在文字-语音转换的”语音选择组合框中选择简体中文(Mic

12、rosoft SimplifiedChinese)。这样就可以合成汉语文字了。回到VS.Net,F5编译运行刚才的应用程序,在文本框里输入汉字,戴上耳机, 点击”朗读”按钮,开始体验新一代的智能人机界面吧,呵呵:).Net平台下开发英文语音应用程序程序演示:点击下载源文件:点击下载1、先安装金山词霸然后会在系统目录Win2000是WINNT目录下Speech中找到vtxtauto.tlb文件2、导入COM对象到.Net我们可以利用.Net Framework自带的强大工具TlbImp.exe来把SAPI SDK的COM对象导入到.Net中。TlbImp.exe产生一个管制的包装类,管理客户端可

13、以 使用它。包装类管理实际的COM对象的参考数。当包装类当作收集的垃圾时, 包装类释放掉它包装的COM对象。当然,你也可以在VS.NET环境中通过从项 目参考对话框选择COM对象,实现COM对象的导入,这个过程也是通过TlbImp.exe来完成的。C:WINNTSpeechTlbimp vtxtauto.tlb /namespace:DotNetSpeech_E /out: DotNetSpeech_E.dll3、用C#开发英文TTS应用程序示例下面通过一个实例来介绍如何利用C#进行开发英文语音应用程序,开发环境 为:Win2K+SP4+.Net Framework v1.1+Microsof

14、t Visual Studio .NET 2003首先,新建一个C#的Windows Application工程SpeechAppen,在开发环境的右边的解决方案管理器(Solution Explorer)中,添加DotNetSpeech_E对象库。右键点击Reference参考),选择Add Reference(添加参考),在弹出的文件 选择对话框中找到刚才生成的DotNetSpeech_E.dlloAdd Web Refjence.总 SqIuISd门 Rplwer | 舞 ClAdd P.eFerence.,翁 5fjluticin SjwechApp(1 project) 土1- 寻

15、SpeechftppjCJ ne*uJ 5y 曰5y System .Drawingh_j System. windows. Forr一 Systerfi.XML 洲 Apsi.ico妲 ScMM) Explcir# - gpen和PP。黑下面我们就可以开始编写应用代码了。本示例演示如何把英文文本通过喇叭朗读 出来程序界面如图:/朗读/IllIIIprivate void ButtonSynthesis_Click(object sender, System.EventArgs e)(try(if(this.textBox1.Text.Trim()!=)(DotNetSpeech_E.IVTxtAutoIVTA=newDotNetSpeech_E.VTxtAutoClass();IVTA.Register(,);IVTA.Speak(this.textBox1.Text,0);catch(System.Exception ec)(MessageBox.Show(ec.ToString(),SpeechApp,MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);4、结论.net环境更使这种开发方便快捷。赶快去测试,让你的应用程序”绘声绘色,体现 Nature UI,Let s GO!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号