兰色精灵 发表于 2015-1-16 22:28:50

ASP.NET网页编程之.Net开辟中文语音使用程序

简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。跟着.net手艺不得人心,愈来愈多的程序员入手下手转到.net平台长进行开辟。但是,在新公布的.netspeechSDK内里并没有对中文语音举行撑持,今朝撑持中文的SpeechSDK最高版本为Windows平台下的SAPI5.1(),本文先容怎样在.net平台下使用SAPI5.1开辟中文语音使用程序。
--------------------------------------------------------------------------------
目次:
1.SAPI.51SDK浅析和安装
2.导进COM工具到.Net
3.用C#开辟中文TTS使用程序示例
4.结论
5.参考文献
--------------------------------------------------------------------------------
1.SAPI.51SDK浅析和安装
SAPISDK是微软公司收费供应的语音使用开辟工具包,这个SDK中包括了语音使用计划接口(SAPI)、微软的一连语音辨认引擎(MCSR)和微软的语音分解(TTS)引擎等等。今朝的5.1版本一共能够撑持3种言语的辨认(英语,汉语和日语)和2种言语的分解(英语和汉语)。SAPI中还包含关于低层把持和高度顺应性的间接语音办理、练习导游、事务、语法编译、资本、语音辨认(SR)办理和TTS办理等壮大的计划接口。其布局如图(1):
图(1)
语音引擎则经由过程DDI层(设备驱动接口)和SAPI(SpeechAPI)举行交互,使用程序经由过程API层和SAPI通讯。经由过程利用这些API,用户能够疾速开辟在语音辨认或语音分解方面使用程序。
SAPI5.1SDK能够从微软网站下载:http://www.microsoft.com/speech/download/sdk51/必要安装程序的有SpeechSDK5.1(68M)和5.1LanguagePack(81.5M)。
--------------------------------------------------------------------------------
2.导进COM工具到.Net
SAPI5.1的基于Windows平台的,经由过程COM接口举行挪用。在.Net平台下要使用SAPI5.1,我们能够使用.NetFramework自带的壮大工具TlbImp.exe来把SAPISDK的COM工具导进到.Net中。TlbImp.exe发生一个控制的包装类,办理客户端可使用它。包装类办理实践的COM工具的参考数。当包装类看成搜集的渣滓时,包装类开释失落它包装的COM工具。固然,你也能够在VS.NET情况中经由过程从项目参考对话框选择COM工具,完成COM工具的导进,这个历程也是经由过程TlbImp.exe来完成的。
上面演示怎样导进SAPI的COM工具:
D:ProgramFilesCommonFilesMicrosoftSharedSpeech>Tlbimpsapi.dll/out:DotNetSpeech.dll

在安转SDK今后,能够在D:ProgramFilesCommonFilesMicrosoftSharedSpeech目次上面找到SAPI.dll,这内里界说了SAPI的COM工具,用Tlbimp.exe工具将该dll转换成.net平台下的Assembly---DotNetSpeech.dll,转换的历程会提醒很多的告诫(warning),但这部影响我们的开辟,能够疏忽。最初,我们能够用ildasm检察DotnetSpeech.dll内里的工具。
--------------------------------------------------------------------------------
3.用C#开辟中文TTS使用程序示例
上面经由过程一个实例来先容怎样使用C#举行开辟语音使用程序,开辟情况为:
操纵体系:Windows2000中文版+SP3
.NetFramework:1.0.3705(英文版)
VisualStudio.Net7.0.9466(英文版)
起首,新建一个C#的WindowsApplication工程SpeechApp,在开辟情况的右侧的办理计划办理器(SolutionExplorer)中,增加DotNetSpeech工具库。右键点击"Reference"(参考),选择"AddReference"(增加参考),在弹出的文件选择对话框中找到方才天生的DotNetSpeech.dll。

图(2)
翻开Form1.cs代码文件,在代码开首增加名字空间(注重巨细写)。
usingDotNetSpeech;
如许就完成了SAPISDK的导进,上面我们就能够入手下手编写使用代码了。本示例演示怎样把文本经由过程喇叭朗诵出来和把文本转化成语音旌旗灯号(Wave声响文件),程序界面如图(3):

以下为援用的内容://朗诵
privatevoidbuttonSynthesis_Click(objectsender,System.EventArgse)
{
try
{
SpeechVoiceSpeakFlagsSpFlags=SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoiceVoice=newSpVoice();
Voice.Speak(this.textBoxText.Text,SpFlags);
}
catch(Exceptioner)
{
MessageBox.Show("AnErrorOccured!","SpeechApp",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
//天生声响文件(Wav)
privatevoidbuttonTTStoWave_Click(objectsender,System.EventArgse)
{
try
{
SpeechVoiceSpeakFlagsSpFlags=SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoiceVoice=newSpVoice();
SaveFileDialogsfd=newSaveFileDialog();
sfd.Filter="Allfiles(*.*)|*.*|wavfiles(*.wav)|*.wav";
sfd.Title="Savetoawavefile";
sfd.FilterIndex=2;
sfd.RestoreDirectory=true;
if(sfd.ShowDialog()==DialogResult.OK)
{
SpeechStreamFileModeSpFileMode=SpeechStreamFileMode.SSFMCreateForWrite;
SpFileStreamSpFileStream=newSpFileStream();
SpFileStream.Open(sfd.FileName,SpFileMode,false);
Voice.AudioOutputStream=SpFileStream;
Voice.Speak(txtSpeakText.Text,SpFlags);
Voice.WaitUntilDone(Timeout.Infinite);
SpFileStream.Close();
}
}
catch(Exceptioner)
{
MessageBox.Show("AnErrorOccured!","SpeechApp",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}

接上去,还要往把持面板设置SpeechSDK引擎以后所处置言语。翻开"把持面板",翻开"语音"设置项目,能够看到在这里我们能够指定以后能够对何种言语举行辨认大概分解,还能够设置相干的硬件设备和把持语速。

在"笔墨-语音转换"的"语音选择"组合框当选择简体中文(MicrosoftSimplifiedChinese)。如许就能够分解汉语笔墨了。
回到VS.Net,F5编译运转方才的使用程序,在文本框里输出汉字,戴上耳机,点击"朗诵"按钮,入手下手体验新一代的智强人机界面吧,呵呵:)
--------------------------------------------------------------------------------
4.结论
微软为语音人机界面供应了壮大的平台,.net情况更使这类开辟便利快速。从速往下载SAPI5.1SDK,让你的使用程序"有声有色",表现NatureUI,Let’sGO!
--------------------------------------------------------------------------------简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。

因胸联盟 发表于 2015-1-19 14:15:48

主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。

谁可相欹 发表于 2015-1-25 15:30:03

比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。

灵魂腐蚀 发表于 2015-2-2 22:38:02

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。

冷月葬花魂 发表于 2015-2-8 18:40:16

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。

admin 发表于 2015-2-25 22:47:14

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

小女巫 发表于 2015-3-8 09:48:44

HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.

飘灵儿 发表于 2015-3-15 21:37:22

我的意思是.net好用,从功能上来说比JAVA强还是很明显的。
页: [1]
查看完整版本: ASP.NET网页编程之.Net开辟中文语音使用程序