`
dqu53dqu
  • 浏览: 18462 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

c# 语音功能入门

 
阅读更多

c# 语音功能入门
2011年10月09日
  
  
  
     但是,这个方法本身并不知道你给的字符串是什么语言,所以需要我们它这个字符串用什么语言读出。
  SpVoiceClass 类的Voice 属性就是用来设置语种的,我们可以通过SpVoiceClass 的GetVoices方法得到所有的语种列表,
  然后在根据参数选择相应的语种,比如设置语种为汉语如下所示:
  private void SetChinaVoice()
  {
    voice.Voice = voice.GetVoices(string.Empty,string.Empty).Item(0) ;
  }
     0表示是汉用,1234都表示英语,就是口音不同。
     这样,我们就设置了语种,如果结合发音方法,我们就可以设计出一个只发汉语语音的方法
  private void SpeakChina(string strSpeak)
  {
    SetChinaVoice() ;
    Speak(strSpeak) ;
  }
     只发英语语音的方法也是类似的,上面程序里有。
     对于一段中英文混合的语言,我们让程序读出混合语音的方法就是:编程把这段语言的中英文分开,对于
  中文调用SpeakChina方法,英文调用SpeakEnglishi方法;至于怎样判断一个字符是英文还是中文,我采用的是判断
  asc码的方法,具体的类方法是通过AnalyseSpeak实现的。
     这样,对于一段中英文混合文字,我们只需把它作为参数传递给AnalyseSpeak就可以了,他能够完成中英文
  的混合发音。
     当然,对于发音的暂定、继续、停止等操作,上面也给出了简单的方法调用,很容易明白。
     下面简单介绍一下中文语音识别的方法:
     先把该语音识别的类源代码贴在下面,然后再做说明: 随 着.net技术深入人心,越来越多的程序员开始转到.net平台上进行开发。然而,在新发布的.net speech SDK里面并没有对中文语音进行支持,目前支持中文的Speech SDK最高版本为Windows平台下的SAPI 5.1(),本文介绍如何在.net平台下利用SAPI5.1开发中文语音应用程序。
  --------------------------------------------------------------------------------
  目录:
  1. SAPI.51 SDK浅析以及安装
  2. 导入COM对象到.Net
  3. 用C#开发中文TTS应用程序示例
  4. 结论
  5. 参考文献
  --------------------------------------------------------------------------------
  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对象:
  D:\Program Files\Common Files\Microsoft Shared\Speech>Tlbimp sapi.dll /out: DotNetSpeech.dll
  在 安转SDK以后,可以在D:\Program Files\Common Files\Microsoft Shared\Speech\目录下面找到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.Net 7.0.9466(英文版)
  首 先,新建一个C#的Windows Application工程SpeechApp,在开发环境的右边的解决方案管理器(Solution Explorer)中,添加DotNetSpeech对象库。右键点击"Reference"(参考),选择"Add Reference"(添加参考),在弹出的文件选择对话框中找到刚才生成的DotNetSpeech.dll。
  图(2)
  打开Form1.cs代码文件,在代码开头添加名字空间(注意大小写)。
  using DotNetSpeech;
  这样就实现了SAPI SDK的导入,下面我们就可以开始编写应用代码了。本示例演示如何把文本通过喇叭朗读出来以及把文本转化成语音信号(Wave声音文件),程序界面如图(3):
  以下为引用的内容: //朗读
  private void buttonSynthesis_Click(object sender, System.EventArgs e)
  {
  try
  {
  SpeechVoiceSpeakFlags 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 sender, 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 = 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.WaitUntilDone(Timeout.Infinite);
  SpFileStream.Close();
  }
  }
  catch(Exception er)
  {
  MessageBox.Show("An Error Occured!","SpeechApp", MessageBoxButtons.OK, MessageBoxIcon.Error);
  }
  }
  接下来,还要去控制面板配置Speech SDK引擎当前所处理语言。打开"控制面板",打开"语音"配置项目,可以看到在这里我们可以指定当前可以对何种语言进行识别或者合成,还可以配置相关的硬件设备以及控制语速。
  在"文字-语音转换"的"语音选择"组合框中选择简体中文(Microsoft Simplified Chinese)。这样就可以合成汉语文字了。
  回到VS.Net,F5编译运行刚才的应用程序,在文本框里输入汉字,戴上耳机,点击"朗读"按钮,开始体验新一代的智能人机界面吧,呵呵
  转自 http://blog.csdn.net/rmb147/archive/2009/02/05/3864108.aspx
分享到:
评论

相关推荐

    Visual C# 2008从入门到精通”翻译初稿(易读版)1-8章

    Visual C# 2008从入门到精通”翻译初稿(易读版)1-8章

    C#从入门到精通第1章

    C#从入门到精通从初学者角度出发,通过通俗易懂的语言,丰富多彩的实例,详细介绍了使用Visual C#进行WinForm应用程序开发应该掌握的各方面技术。全书共分28章,包括初识C#及其开发环境,开始C#之旅,变量与常量,...

    异常简单的语音识别入门之C#版

    一个简单的语音识别实例 C#版 有兴趣的同学可以免费下载参考

    C#从入门到精通第3章

    C#从入门到精通从初学者角度出发,通过通俗易懂的语言,丰富多彩的实例,详细介绍了使用Visual C#进行WinForm应用程序开发应该掌握的各方面技术。全书共分28章,包括初识C#及其开发环境,开始C#之旅,变量与常量,...

    C#从入门到精通第2章

    C#从入门到精通从初学者角度出发,通过通俗易懂的语言,丰富多彩的实例,详细介绍了使用Visual C#进行WinForm应用程序开发应该掌握的各方面技术。全书共分28章,包括初识C#及其开发环境,开始C#之旅,变量与常量,...

    C#.NET入门到精通.ppt

     本书所配DVD光盘含有全程语音视频讲解教学录像以及实例的全部源代码,这些源代码都经过精心调试,在Windows XP、Windows 2000、Windows 2003下全部通过。  本书内容详尽,实例丰富,非常适合作为编程初学者的学习...

    语音处理C#

    语音处理的一些技术文档,可以作为语音方面的入门资料

    21天学通C#

    本书适合没有编程基础的C#语言初, 学者作为入门教程,也可作为大、中院校师生和培训班的教材。对于C#语, 言开发的爱好者,本书也有较大的参考价值。, 本书附赠DVD光盘1张,内容包括超大容量手把手教学视频、电子教案...

    C#实例(源代码+注释)步骤清晰

    C#实例,满足需要,包括导出excel 导出txt 语音识别 图片识别 枚举等,代码逻辑清晰,注释清晰,方便理解,适合C#入门

    语音识别demo

    根据微软提供的语音识别库,利用C#代码对语音进行识别,识别成汉字后填入输入框以便做其它操作。是入门语音识别的基础开发

    ASP.net从入门到精通 光盘源码

    全书共分29章,包括ASP.NET 2.0开发入门、C#语言基础、ASP.NET的内置对象、ASP.NET 2.0 Web常用控件、数据验证技术、母版页、主题、数据绑定、使用ADO.NET操作数据库、数据控件、站点导航控件、Web用户常用控件、ASP...

    ASP.NET从入门到精通part2

    全书共分29章,包括ASP.NET 2.0开发入门、C#语言基础、ASP.NET的内置对象、ASP.NET 2.0 Web常用控件、数据验证技术、母版页、主题、数据绑定、使用ADO.NET操作数据库、数据控件、站点导航控件、Web用户常用控件、ASP...

    ASP.NET从入门到精通.pdfpart1

    全书共分29章,包括ASP.NET 2.0开发入门、C#语言基础、ASP.NET的内置对象、ASP.NET 2.0 Web常用控件、数据验证技术、母版页、主题、数据绑定、使用ADO.NET操作数据库、数据控件、站点导航控件、Web用户常用控件、ASP...

    基于C#开发的微信PC版聊天记录备份工具源码+项目说明+sln解决方案(课程设计).zip

    1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载体验!下载完使用问题请私信沟通。 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校...

    毕设&课设&项目&实训-一个基于云端语音识别的智能控制设备,类似于天猫精灵.zip

    一个基于云端语音识别的智能控制设备,类似于天猫精灵,小爱同学。采用的芯片为stm32f407,wm8978,esp8266。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间...

    C# 教学资料 首先介绍了Microsoft .NET Framework的框架,以及公共语言运行库、.NET Framework类库

    C# 教学资料 从基础只是到高级应用都有所讲解 数据库等一应俱全 本章是全书的入门章节,介绍了在学习本课程之前需要了解的一些知识。首先介绍了Microsoft .NET Framework的框架,以及公共语言运行库、.NET ...

    21天学通ASP.NET 光盘

    本书一共分为四篇,第一篇主要讲解了ASP.NE的入门基础知识,内容包括搭建ASP.NET开发环境、C#语言基础、面向对象的程序设计、ASP.NET内置对象、ASP.NET页面语法、ASP.NET站点设计和常用服务器控件。第二篇重点分析了...

    Kinect for windows sample 10

    Kinect for windows 开发入门系列示例示例代码。 Kinect for windows 开发入门 十:语音数据的获取和使用 博文地址: http://blog.csdn.net/kinector/article/details/11904949

    vc++ 开发实例源码包

    该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...

    java语音源码-FawCourse_FFmpeg:ffmpeg教程,非命令行模式

    java语音源码 FawCourse_FFmpeg FFmpeg教程,非命令行模式 引言 FFmpeg 是一个音视频领域使用最广泛的开源库。由C语言编写,但广泛的为C/C++、C#、Java、Python等主流编程语言所调用。它集合了几乎所有的编码解码库...

Global site tag (gtag.js) - Google Analytics