- 浏览: 3470254 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
作者:陈本峰 来源:微软中国社区 发布时间:2006-03-01 20:29:54
摘要:
语音是人类最自然的交互方式,也是现阶段软件用户界面发展的最高目标。微软公司一直积极推动语音技术的发展,并且公布了语音开发平台Speech SDK帮助开发人员实现语音应用。
随着.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引擎当前所处理语言。打开"控制面板",打开"语音"配置项目,可以看到在这里我们可以指定当前可以对何种语言进行识别或者合成,还可以配置相关的硬件设备以及控制语速。(如图4)
在"文字-语音转换"的"语音选择"组合框中选择简体中文(Microsoft Simplified Chinese)。这样就可以合成汉语文字了。
回到VS.Net,F5编译运行刚才的应用程序,在文本框里输入汉字,戴上耳机,点击"朗读"按钮,开始体验新一代的智能人机界面吧,呵呵:)
4. 结论
微软为语音人机界面提供了强大的平台,.net环境更使这种开发方便快捷。赶快去下载SAPI5.1 SDK,让你的应用程序"绘声绘色",体现Nature UI,Let’s GO!!!
5. 参考文献
[1] Speech SDK自带的说明文档(SAPI.chm)
[2] MSDN (msdn.microsoft.com)
发表评论
-
拨打手机时提示空号的简单方法
2011-12-16 14:36 1740在不想被别人烦又不好意思关机时,让别人打你手机时提示空号 ... -
读完这7本书再投资
2011-12-13 22:52 1631一本好的投资书对 ... -
SWOT分析模型
2011-10-20 08:50 2245SWOT分析模型(SWOT Analysis) SWO ... -
职场经典故事
2011-03-24 18:01 1617(一) 一只乌鸦坐在 ... -
天涯精选语录300条,条条真理,字字珠玑
2011-03-24 17:54 21841,女人谨记:一定要吃好玩好喝好睡好,一旦 ... -
如何从Outlook"通讯簿"中删除幽灵"联系人文件夹"
2011-02-27 14:38 6172背景介绍: 在“联系人”栏目中创建新的文件夹后,会自 ... -
容易误解的英文
2011-02-25 00:34 1819sporting house 妓院(不是“体育室”) & ... -
什么才是软件开发的葵花宝典?(有点意思)
2011-01-31 09:35 1872中国人大都喜欢用武侠小说来比较软件开发,但是在实战武功中,只有 ... -
[分享]当你还不是领导的时候,怎么样做好一个下属?
2011-01-27 23:02 1864每一个人都不是天生的 ... -
【转】张飞眼中的真实三国-爆笑日记
2011-01-26 16:07 1858我写这个日记的时候 ... -
Word中嵌入Visio对象无法显示问题
2010-12-28 16:31 9275Word中嵌入Visio对象无法显示问题 - [软件技术 ] ... -
深度解析中国企业领导力的五根软肋
2010-12-21 01:34 1635http://www.enet.com.cn/cio/ ... -
EMT自律宣言
2010-10-27 13:06 2149EMT自律宣言 第196期(2008-02) 华 ... -
可以考虑授予“二奶们”集体三等功
2010-08-20 22:31 203作者:罗时汉 http://blog.sin ... -
轻松掌控Excel表头
2010-08-18 18:35 2964在Excel表格中,表头的应用非常普遍,所起的作用也很大。 ... -
保护视力健康的电脑屏幕设置
2010-08-18 16:18 4589习惯了自己设置的大字体中文系统,装了英文版的系统后,由于默 ... -
VoiceXML语音上网
2010-08-16 01:50 2373VoiceXML语音上网 朱 ... -
Windows 语音编程初步
2010-08-12 13:35 3523Windows 语音编程初步 一、SAPI简介 软 ... -
中国抗战殉国将领名录
2010-07-21 11:58 1872自1931年至1945年,中国 ... -
如何把excel表的电话薄导入G3中
2010-07-16 10:47 23931、用excel 表保存成 CSV格式 再导入 XP 通讯录 ...
相关推荐
C#.Net平台下开发中文语音应用程序
Net平台下开发中文语音应用程序,从网上Copy来的,和大家共享。是一个Microsoft SSDK实例开发帮助。
语音是人类最自然的...然而,在新发布的.net speech SDK里面并没有对中文语音进行支持,目前支持中文的Speech SDK最高版本为Windows平台下的SAPI 5.1(),本文介绍如何在.net平台下利用SAPI5.1开发中文语音应用程序。
Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]
非常好~~你输入英文就会读~~
语音是人类最自然的...然而,在新发布的.net speech SDK里面并没有对中文语音进行支持,目前支持中文的Speech SDK最高版本为Windows平台下的SAPI 5.1(),本文介绍如何在.net平台下利用SAPI5.1开发中文语音应用程序。
VB.net实现的可视电话. 可以实现语音和视频的多人聊天和会议,效果不错 用在通讯程序开发、实时通讯、即时通讯和应用程序辅助等方面非常有效. 特共享
3.4 WPF应用程序的类型 44 3.4.1 传统类型的视窗程序 44 3.5 创建第一个WPF程序 49 第4章 WPF程序的布局 59 4.1 布局的基础知识 59 4.2 StackPanel容器 61 4.3 DockPanel容器 65 4.4 Grid容器 67 4.4.1 表格的高度和...
3.4 WPF应用程序的类型 3.4.1 传统类型的视窗程序 3.5 创建第一个WPF程序 第4章 WPF程序的布局 4.1 布局的基础知识 4.2 StackPanel容器 4.3 DockPanel容器 4.4 Grid容器 4.4.1 表格的高度和宽度 4.4.2 ColumnSpan和...
DVD语音视频教学光盘,18小时教学视频录像,全程语音讲解本书实例源程序、相关素材,本书特色:基础知识-核心技术-高级应用-项目实战,124个应用实例,8个典型应用,1个项目安全内容极为详尽,实例典型丰富。
摘要:比较MicrosoftWindowsCE.NET应用程序开发人员目前可以使用的三种开发选择(即Win32、MFC和Microsoft.NETFramework精简版)的优势。学习如何使用每个运行时创建类似于MFCScribble示例的应用程序。前不久,我们...
3.4 WPF应用程序的类型 44 3.4.1 传统类型的视窗程序 44 3.5 创建第一个WPF程序 49 第4章 WPF程序的布局 59 4.1 布局的基础知识 59 4.2 StackPanel容器 61 4.3 DockPanel容器 65 4.4 Grid容器 67 4.4.1 表格的高度和...
使用您的操作系统的本机声音Synthesizer.net使用语音应用程序编程接口或SAPI,这是Microsoft开发的官方API。 Synthesizer.net与以下操作系统兼容: Microsoft Windows 10 Microsoft Windows 8 Microsoft Windows 7 ...
本书从初学者角度出发,以通俗易懂的语言,丰富多彩的实例,详细介绍了使用ASP.NET进行Web程序开发应该掌握的各方面技术。全书共分29章,包括ASP.NET 2.0开发入门、C#语言基础、ASP.NET的内置对象、ASP.NET 2.0 Web...
本书从初学者角度出发,以通俗易懂的语言,丰富多彩的实例,详细介绍了使用ASP.NET进行Web程序开发应该掌握的各方面技术。全书共分29章,包括ASP.NET 2.0开发入门、C#语言基础、ASP.NET的内置对象、ASP.NET 2.0 Web...
本书一共分为四篇,第一篇主要讲解了ASP.NE的入门基础知识,内容包括搭建ASP.NET开发环境、C#语言基础、面向对象的程序设计、ASP.NET内置对象、ASP.NET页面语法、ASP.NET站点设计和常用服务器控件。第二篇重点分析了...
本书一共分为四篇,第一篇主要讲解了ASP.NE的入门基础知识,内容包括搭建ASP.NET开发环境、C#语言基础、面向对象的程序设计、ASP.NET内置对象、ASP.NET页面语法、ASP.NET站点设计和常用服务器控件。第二篇重点分析了...