- 浏览: 3506536 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1799在不想被别人烦又不好意思关机时,让别人打你手机时提示空号 ... -
读完这7本书再投资
2011-12-13 22:52 1679一本好的投资书对 ... -
SWOT分析模型
2011-10-20 08:50 2335SWOT分析模型(SWOT Analysis) SWO ... -
职场经典故事
2011-03-24 18:01 1694(一) 一只乌鸦坐在 ... -
天涯精选语录300条,条条真理,字字珠玑
2011-03-24 17:54 21841,女人谨记:一定要吃好玩好喝好睡好,一旦 ... -
如何从Outlook"通讯簿"中删除幽灵"联系人文件夹"
2011-02-27 14:38 6216背景介绍: 在“联系人”栏目中创建新的文件夹后,会自 ... -
容易误解的英文
2011-02-25 00:34 1870sporting house 妓院(不是“体育室”) & ... -
什么才是软件开发的葵花宝典?(有点意思)
2011-01-31 09:35 1911中国人大都喜欢用武侠小说来比较软件开发,但是在实战武功中,只有 ... -
[分享]当你还不是领导的时候,怎么样做好一个下属?
2011-01-27 23:02 1904每一个人都不是天生的 ... -
【转】张飞眼中的真实三国-爆笑日记
2011-01-26 16:07 1907我写这个日记的时候 ... -
Word中嵌入Visio对象无法显示问题
2010-12-28 16:31 9373Word中嵌入Visio对象无法显示问题 - [软件技术 ] ... -
深度解析中国企业领导力的五根软肋
2010-12-21 01:34 1678http://www.enet.com.cn/cio/ ... -
EMT自律宣言
2010-10-27 13:06 2228EMT自律宣言 第196期(2008-02) 华 ... -
可以考虑授予“二奶们”集体三等功
2010-08-20 22:31 203作者:罗时汉 http://blog.sin ... -
轻松掌控Excel表头
2010-08-18 18:35 3012在Excel表格中,表头的应用非常普遍,所起的作用也很大。 ... -
保护视力健康的电脑屏幕设置
2010-08-18 16:18 4653习惯了自己设置的大字体中文系统,装了英文版的系统后,由于默 ... -
VoiceXML语音上网
2010-08-16 01:50 2414VoiceXML语音上网 朱 ... -
Windows 语音编程初步
2010-08-12 13:35 3573Windows 语音编程初步 一、SAPI简介 软 ... -
中国抗战殉国将领名录
2010-07-21 11:58 1872自1931年至1945年,中国 ... -
如何把excel表的电话薄导入G3中
2010-07-16 10:47 24261、用excel 表保存成 CSV格式 再导入 XP 通讯录 ...
相关推荐
【C#.Net平台下开发中文语音应用程序】 在C#.Net平台上开发中文语音应用程序,主要涉及到的是微软的语音开发平台——Speech SDK,特别是针对中文语音的支持。由于.NET框架的新版本可能不直接支持中文,开发者需要...
在C#平台上开发中文语音应用程序是一项常见的任务,特别是在构建交互式软件、语音识别或合成系统时。本项目提供的源代码示例将帮助开发者了解如何在.NET框架下实现这一功能。以下是一些关键知识点: 1. **语音合成...
Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]
.NET 后台开发中,TTS(Text To Speech)技术是一种将文本转换为语音的工具,广泛应用于各种应用场景,如语音导航、智能助手、在线教育等。科大讯飞是全球知名的语音技术提供商,提供了丰富的API和服务,支持多种...
在.NET开发领域,语音识别和转换技术已经成为许多应用程序的关键组成部分,特别是对于提升用户体验和无障碍访问。科大讯飞,作为全球领先的智能语音和人工智能技术提供商,提供了丰富的API接口供开发者使用。本文将...
标题中的“net45语音112_用VB.net2019编写的TTS程序”指的是一个使用VB.NET 2019开发的文本转语音(Text-to-Speech,简称TTS)应用程序,该程序能够将输入的文字转化为可听见的语音输出,同时也能够生成WAV格式的...
### 用C#开发基于Microsoft Speech SDK的语音应用程序 #### 0. 引言 长久以来,人类一直在努力实现让计算机能够理解人类的语言,并通过自然语言进行交互,这就是语音识别技术所追求的目标。本文旨在介绍如何利用...
.NET框架的中文语言包是微软为支持中文用户界面而设计的重要组件,主要用于.NET应用程序的本地化,使得在中文操作系统环境下运行的.NET应用能够显示正确的中文文本和资源。这个"NDP472-KB4054530-x86-x64-AllOS-CHS....
在.NET框架中,C#和ASP.NET结合使用可以创建丰富的Web应用程序。在这个特定的".NET C# ASP.NET 文字转语音.zip"项目中,开发者利用了Text-to-Speech(TTS)技术,将文字转化为可听的语音。这种技术在各种应用场景中...
.NET框架中的语音控件是开发语音交互应用的重要工具,它允许程序员通过代码控制语音识别、合成等功能,从而实现自然语言处理的应用。在这个特定的案例中,提到的".net语音控件"可能指的是Microsoft Speech Platform...
《.NET语音识别技术探索——基于SPAI的Demo源码解析》 在现代软件开发中,语音识别技术已经成为人机交互的重要...理解并掌握这些知识点,对于任何想要在.NET平台上开发语音识别应用的开发者来说,都是一笔宝贵的财富。
在.NET框架下,语音识别是一项重要的技术,它允许软件应用程序理解和处理人类的自然语言,从而实现人机交互。本文将详细解析.NET版本的语音识别实例源码,以及相关的开源代码和C#编程知识。 首先,我们要理解.NET ...
4. **.NET框架**: .NET是Microsoft开发的一个全面的开发平台,包括了各种工具、语言和库,用于构建跨平台的应用程序。对于实时通信应用,.NET提供了一套强大的类库和工具,使得开发者能够轻松地处理并发、网络通信和...