`
yangzb
  • 浏览: 3506536 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

.Net平台下开发中文语音应用程序

阅读更多

作者:陈本峰  来源:微软中国社区  发布时间: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)
分享到:
评论

相关推荐

    C#.Net平台下开发中文语音应用程序

    【C#.Net平台下开发中文语音应用程序】 在C#.Net平台上开发中文语音应用程序,主要涉及到的是微软的语音开发平台——Speech SDK,特别是针对中文语音的支持。由于.NET框架的新版本可能不直接支持中文,开发者需要...

    C# 平台下开发中文语音应用程序 (源代码)

    在C#平台上开发中文语音应用程序是一项常见的任务,特别是在构建交互式软件、语音识别或合成系统时。本项目提供的源代码示例将帮助开发者了解如何在.NET框架下实现这一功能。以下是一些关键知识点: 1. **语音合成...

    Net平台下开发英文语音应用程序[源文件]

    Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]Net平台下开发英文语音应用程序[源文件]

    .NET后台 tts/语音生成/文本转语音 科大讯飞

    .NET 后台开发中,TTS(Text To Speech)技术是一种将文本转换为语音的工具,广泛应用于各种应用场景,如语音导航、智能助手、在线教育等。科大讯飞是全球知名的语音技术提供商,提供了丰富的API和服务,支持多种...

    .NET开发 iat/语音听写/语音转文本 科大讯飞

    在.NET开发领域,语音识别和转换技术已经成为许多应用程序的关键组成部分,特别是对于提升用户体验和无障碍访问。科大讯飞,作为全球领先的智能语音和人工智能技术提供商,提供了丰富的API接口供开发者使用。本文将...

    net45语音112_用VB.net2019编写的TTS程序_

    标题中的“net45语音112_用VB.net2019编写的TTS程序”指的是一个使用VB.NET 2019开发的文本转语音(Text-to-Speech,简称TTS)应用程序,该程序能够将输入的文字转化为可听见的语音输出,同时也能够生成WAV格式的...

    用C_开发基于MicrosoftSpeechSDK的语音应用程序

    ### 用C#开发基于Microsoft Speech SDK的语音应用程序 #### 0. 引言 长久以来,人类一直在努力实现让计算机能够理解人类的语言,并通过自然语言进行交互,这就是语音识别技术所追求的目标。本文旨在介绍如何利用...

    .NET中文语言包

    .NET框架的中文语言包是微软为支持中文用户界面而设计的重要组件,主要用于.NET应用程序的本地化,使得在中文操作系统环境下运行的.NET应用能够显示正确的中文文本和资源。这个"NDP472-KB4054530-x86-x64-AllOS-CHS....

    .NET C# ASP.NET 文字转语音.zip

    在.NET框架中,C#和ASP.NET结合使用可以创建丰富的Web应用程序。在这个特定的".NET C# ASP.NET 文字转语音.zip"项目中,开发者利用了Text-to-Speech(TTS)技术,将文字转化为可听的语音。这种技术在各种应用场景中...

    .net语音控件语音控件有vc 和vb例子

    .NET框架中的语音控件是开发语音交互应用的重要工具,它允许程序员通过代码控制语音识别、合成等功能,从而实现自然语言处理的应用。在这个特定的案例中,提到的".net语音控件"可能指的是Microsoft Speech Platform...

    .net 语音识别demo 源码

    《.NET语音识别技术探索——基于SPAI的Demo源码解析》 在现代软件开发中,语音识别技术已经成为人机交互的重要...理解并掌握这些知识点,对于任何想要在.NET平台上开发语音识别应用的开发者来说,都是一笔宝贵的财富。

    .net版本语音识别实例源码,语音识别开源代码,C#

    在.NET框架下,语音识别是一项重要的技术,它允许软件应用程序理解和处理人类的自然语言,从而实现人机交互。本文将详细解析.NET版本的语音识别实例源码,以及相关的开源代码和C#编程知识。 首先,我们要理解.NET ...

    用于C#和.NET的WebRTC、SIP和VoIP库 专为实时通信应用程序设计

    4. **.NET框架**: .NET是Microsoft开发的一个全面的开发平台,包括了各种工具、语言和库,用于构建跨平台的应用程序。对于实时通信应用,.NET提供了一套强大的类库和工具,使得开发者能够轻松地处理并发、网络通信和...

Global site tag (gtag.js) - Google Analytics