基于语音合成和语音识别的小学英语辅助学习系统的设计与实现.docx
《基于语音合成和语音识别的小学英语辅助学习系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于语音合成和语音识别的小学英语辅助学习系统的设计与实现.docx(32页珍藏版)》请在冰豆网上搜索。
基于语音合成和语音识别的小学英语辅助学习系统的设计与实现
毕业设计说明书
学生姓名
学号
学院
专业
题目
基于TTS和SR的小学英语辅助学习系统的设计与实现
指导教师
(姓名)(专业技术职称/学位)
2011
年
5
月
摘要:
语音合成与语音识别技术是2000年至2010年间信息技术领域十大重要的科技发展技术之一,语音合成与识别是一门交叉学科,语音技术正逐步成为信息技术中人机接口的关键技术,语音合成技术与语音识别技术结合使人们能够甩掉键盘,通过语音命令进行操作。
语音技术的应用已经成为一个具有竞争性的新兴高技术产业。
如何利用当前的语音技术并投入到教学中使用显然是一个新颖的课题,本文研究了多种不同语音技术,比较了其优缺点,给出了选择MSSAPI的原因。
研究了MSAgent与语音技术的结合,使用MSAgent辅助改善人机交互界面。
研究了ActionScript技术以及与C#通信的具体实现方法。
在以上技术研究和学习的基础上,实现了一个以语音作为主要交流手段的小学英语辅助学习系统,实现了基于自然语言(英语)的人机对话和交互,对自然用户界面(NUI)的设计进行了有益的探讨。
关键字:
文语转换,语音识别,人机交互,MSAgent,英语辅助学习系统
ABSTRACT:
Speechsynthesisandrecognitiontechnologyisoneofthetopteninformationtechnologyin2000to2010.itisanimportantscientificdevelopmentoftechnology.Speechsynthesisandrecognitionisacross-disciplinary.Speechtechnologyinformationtechnologyisgraduallybecomingakeyman-machineinterfacetechnology.Speechsynthesisandrecognitioncanmakepeopletogetridofthekeyboard,throughvoicecommandstooperatecomputers.Speechtechnologyhasbecomeacompetitivehigh-techemergingindustries.
Howtousethecurrentspeechtechnologyintotheteachingandstudyingisclearlyanewproject,Inthispaper,wehavemakearesearchaboutavarietyofspeechtechnology,andcomparedtheiradvantagesanddisadvantages,andgiventhereasonsfortheselectionofMSSAPI.OftheMSAgentandspeechtechnologies,useMSAgenttoimprovethehuman-machineinteraction.DoaresearchoftheActionScriptandC#communicationtechnology,andgiventhespecificimplementation.Intheaboveresearchandlearningbasedontherealizationofspeech,implementedtheprimaryschoolEnglishassistantsystembaseonthemeansofspeech,implementedman-machinedialogueandinteractionbasedonnaturallanguage(English).Anddoausefulresearchofnaturaluserinterface(NUI)design.
Keywords:
texttospeech,speechrecognition,human-machine interaction,MSAgent,Englishassistantsystem
1背景
1.1语音合成与语音识别技术简介
语音合成,又称文语转换(TexttoSpeech)技术,能将任意文字信息实时转化为标准流畅的语音朗读出来,相当于给机器装上了人工嘴巴。
它涉及声学、语言学、数字信号处理、计算机科学等多个学科技术,是中文信息处理领域的一项前沿技术,解决的主要问题就是如何将文字信息转化为可听的声音信息,也即让机器像人一样开口说话。
我们所说的“让机器像人一样开口说话”与传统的声音回放设备(系统)有着本质的区别。
传统的声音回放设备(系统),如磁带录音机,是通过预先录制声音然后回放来实现“让机器说话”的。
这种方式无论是在内容、存储、传输或者方便性、及时性等方面都存在很大的限制。
而通过计算机语音合成则可以在任何时候将任意文本转换成具有高自然度的语音,从而真正实现让机器“像人一样开口说话”。
语音识别,与用语音合成相反,是指语音到文本的转换,即让计算机能够把人发出来的有意义的话音变成书面语言。
通俗的说,就是让计算机听懂人说的话。
所谓听懂,有两层意思,一是把用户所说的的话逐词逐句的转换成文本;二是指正确理解语音种所包含的要求,做出正确的应答。
随着语音识别技术的逐渐成熟,语音识别技术开始得到广泛的应用,实际日常生活的各个方面如电信、金融、新闻、公共事业等各个行业,通过语音识别技术,可以极大的简化这些领域的业务流程以及操作,提高系统的应用效率。
20世纪90年代开始,许多著名的大公司如IBM、苹果、AT&T和Microsoft都对语音合成和语音识别系统的实用化研究投以巨资。
语音技术有一个很好的评估机制,那就是识别的准确率和发声的自然性。
而这些指标在20世纪90年代中后期实验室研究中得到了不断的提高。
2008年,谷歌公司推出的Android系统就带有语音识别引擎,代表着语音识别技术开始开始步入移动领域,2011年科大讯飞公司推出的讯飞手机语音输入法就是代表。
1.2几种语音合成与识别技术的比较
语音合成方面,主要有微软的的语音引擎、美国NeoSpeech公司的产品和中国科大讯飞公司的语音引擎,最具代表性的就是微软Windows操作系统自带的TTS语音合成引擎,在微软发售的WindowsXP、WindowsVista以及Windows7中集成了该功能。
他们符合微软推出的语音开发接口SAPI5,程序员能够方便的使用它来开发基于Windows操作系统的语音合成程序。
但是微软的TTS引擎在发音方面不够自然,特别是基于中文的发生,且对中英文混合发生支持不够。
与微软的语音引擎相比,NeoSpeech公司推出的语音合成系统更贴近人的自然语音[4]。
Neospeech的合成语音是当前最好的合成语音,几可乱真。
这个当前发声效果最好的非常自然的文字语音转换引擎,比其它任何引擎都清楚。
同时,NeoSpeech符合SAPI5标准,程序员可以直接使用,目前NeoSpeech有多个系列多种口音的中英文产品。
中国科大讯飞是国家863计划中唯一以语音技术为主要产业化方向的高科技企业。
其基于语料库的波形拼接合成技术即从录制的大规模自然语流数据库中按照合适的声学、语音学算法提取合适的单元合成出连续的语流。
在合成系统的实现过程中,充分运用语言学、语音学、统计分析、人工智能、数字信号处理等的先进技术,一切从人类语音自然的角度出发,使合成的语音自然度超过普通人说话的水平。
现已被国内外专家公认为具有世界最高水平的汉语语音合成技术。
目前科大讯飞公司推出了两款语音合成产品,一是InterPhonic,二是ViviVoice,两个对应的最新版本分别是6.0与2.1,。
两者区别在于InterPhonic更注重商务应用,而ViviVoice则偏向娱乐性质较多。
但是科大讯飞公司并不提供相关语音库的下载,所以只能联网使用[6]。
图1-1科大讯飞产品在线演示
语音识别方面,较早的有IBM的ViaVoice和Nuance公司的NaturallySpeaking,以及NuanceVoicePlatform语音互联网平台。
后来有微软推出的嵌入Windows系列操作系统的语音识别引擎,近年来则有谷歌公司推出的基于Android系统的GoogleVoiceRecognition与科大讯飞公司的科大语音云。
ViaVoice是IBM公司开发的高性能的语音识别系统[7]。
它由语音板、口音适应程序、IBMViaVoice属性、麦克风设置向导程序、词汇管理器及联机参考手册等6个部分组成。
ViaVoice的基本用法虽然不是太难,但是在安装之后还不能立即使用,因为这时计算机还不“认识”你,只有在通过口音适应程序建立针对你个人口音特点的模型后,才能有效地使用。
IBMViaVoice在标称功能上有以下几个主要特点:
连续语音识别、具有强大的学习功能、每分钟平均150个字、输入最高识别率达95%,平均识别率达85%。
在简化语音应用程序的开发工作的过程中,IBM公司又推出了一个简单易用的开发套件--IBMViaVoiceSDKLite,为开发者提供了方便灵活的语音ActiveX控件,包括VVEngine、VVCommands和VVDictation。
开发者可以直接在自己编写的应用程序调用这些控件,快速定义语音内核属性,灵活增加自用的语音命令,在自定义的文字处理环境中完成语音听写识别。
使用这一套件不仅能够迅速编写新的语音应用软件,也可以为现有的应用软件添加语音功能。
当使用语音ActiveX控件开发的应用程序运行时,在系统中需要安装带有运行函数库的ViaVoiceRuntime软件,或者ViaVoice标准版软件。
IBM公司语音软件开发工具SDKLite适用于支持ActiveX控件的编程语言,包括VirtualC++5.0,VirtualBasic5.0和Delphi4.0等语言。
但是由于官方IBM长久没有更新,资料非常少,支持的编程环境少而又老旧,同时IBM公司已经关闭了关于开发包SDK的下载,所以并不适合用其开发相关的语音系统。
图1-2IBMViaVoice运行界面
DragonNaturallySpeaking是Nuance公司推出的语音识别软件[8],与IBMViaVoice一样,DragonNaturallySpeaking也可用来操作操作系统,同时兼带语音文字输入的功能。
DragonNaturallySpeaking10官方所述的识别率达到99%,同时他与目前的Windows操作系统(WindowsXP,WindowsVista,Windows7)能够很好的兼容和同步,包括办公自动化套件Office软件和IE浏览器,单是识别率而言,DragonNaturallySpeaking是目前世界上最先进的电脑语音识别软件。
虽然它带有中文的显示输出,但它并不支持中文的语音输入。
同时Nuance公司并没有公布相关的开发接口和文档,因此无法用其做相关的开发。
GoogleVoiceRecognition是基于Android系统的语音识别系统[10],与PC平台的语音识别软件相比,GoogleVoiceRecognition更专注于短语命令的识别,同时语音识别的核心模块并没有在系统本身,而是存放在语音服务器上,因此要求能与语音服务器进行通信才能进行相关的识别。
与GoogleVoiceRecognition相似的则是科大讯飞公司的科大语音云(iFLYSpeechAppEngine),同样是通过发送HTTP请求至语音服务器进行识别,但是iFLYSpeechAppEngine支持的平台相对较多,除了移动设备的iPhone、Android和Symbian平台以外,同时也支持PC平台Windows操作系统,也有相关的开发接口SDK。
iFLYSpeechAppEngine在识别率上也是很令人满意,特别是对中文语音输入的识别,科大讯飞公司已经开发并提供了相关的ActiveX控件,开发者只需调用相关接口就可以开发一个在线的语音识别与合成系统。
图1-3科大语音云的短讯识别ActiveX
使用科大讯飞语音云时,用户不需要安装任何的软件或环境,直接通过网络环境进行识别与合成,开发者也仅需下载相关COM组件,在程序中调用。
当然,由于基于互联网的环境,其识别率则是固定的,即无法通过相关的辅助程序,如语音训练来提高其识别率。
iFLYSpeechAppEngine更适合应用于移动设备平台或者基于B/S技术的系统。
微软从WindowsXP开始便加入了语音支持,同时推出了开发接口规范SAPI,WindowsXP,WindowsVista,Windows7对应的版本分别是SAPI5.1,SAPI5.3和SAPI5.4[1]。
SpeechSDK则是是微软提供的软件开发包,其中包含了语音识别和合成引擎相关组件、帮助文档和例程,它是—个语音识别和合成的二次开发平台。
我们可以利用这个平台,在自己开发的软件里嵌入语音识别和合成功能,从而使用户可以用声音来代替鼠标和键盘完成部分操作,例如:
文字输入、菜单控制等,实现真正的“人机对话”。
从WindowsVista开始,微软把语音识别引擎嵌入到系统的WindowsSDK中,程序员可以直接利用开发工具调用相关的系统接口进行开发。
微软推出的应用编程接口SAPI,虽然现在不是业界标准,但是应用比较广泛,想相关的资料也很多。
与前面的几种语音平台相比,微软的语音识别引擎显然更适合用于开发。
图1-4Windows7内置语音识别
微软语音识别技术相对于其他的语音识别有以下优势:
(1)资源方便,在微软发售的Windows操作系统中就包含相关的SDK。
(2)有相关的技术规范SAPI,程序员使用方便。
(3)官方资料丰富,官方技术支持较多,如MSDN。
(4)平台拓展性较高,支持COM技术。
(5)识别语言较多,同时识别效率可以通过相关训练进行提高。
1.3微软语音合成与识别技术简介
1.3.1微软语音技术的发展
微软自1993年就已将语音技术作为自然用户界面的一部分了。
当年,微软研究院就成立了语音研究组。
在1999年,微软完成了它的首个语音相关收购–语音工具包厂商Entropic。
2007年,微软花10亿美元买下了语音识别公司TellMe。
但直到一年多前,微软才合并其旗下所有的语音产品和技术为微软语音部门,他们的使命是“让软件与服务因语音界面而更自然、更易于使用”。
微软并没有把语音技术视为独立的产品,第一是嵌入其发行的操作系统中,作为系统的SDK,从WindowsVista开始,微软的操作系统就自动包含了SpeechSDK,并且加入了语音识别工具,用户可以直接使用语音来操作计算机。
第二则是把语音技术与云计算相融合,推出网络语音平台,这也是现在语音技术发展的趋势。
第三是将其作为微软自然用户界面战略的一部分,整合与其他产品或服务。
在接下来一年里,微软将主要向市场推出以下4类整合了微软各种语音技术的新产品:
(1)车内娱乐系统–就如在CES10上宣布的KiaUVO系统,首辆搭载UVO的车将在今夏发布。
(2)WindowsPhone7设备–已深度整合TellMe语音识别技术(
(3)KinectforXbox–已整合语音识别功能,允许用户通过语音与Xbox360交互,具体可见微软官方网站。
(.4)企业生产力产品–目前有超过1亿Exchange用户可以用上语音邮件、语音翻译和其他基于语音技术的产品(ExchangeOnline也将支持这些)。
同时,微软TellMe产品每年利用TellMe云计算后端平台处理25亿次通话。
微软语言部门首席语音科学家LarryHeck称,长期来说,微软正试图解决的正是这个问题:
“我们何时才能部署达到理解人类对话级别的系统?
”他回答了三点解决该问题的驱动力。
——数据及相关机器自学习机制
——云计算平台,如Azure和TellMe网络后端平台
——搜索
Heck介绍说:
“自然用户界面能帮助用户实现任何地点访问数据的可能,但目前的入口对改进计算机或设备理解人类自然对话,并没有太大的帮助。
在搜索引擎中,用户习惯于输入独立的关键词,而不是自然陈述的语句,但显然手机上的语音搜索更近似人类的对话。
”
1.3.2微软语音技术框架
目前微软的语音技术体现在四个方面,即语音云(MicrosoftTellMeCloudPlatform)、语音服务器(MicrosoftSpeechPlatformforServers)、桌面(Desktop)和智能手机平台(WindowsPhonePlatform)。
2007年微软公司收购了TellMe,TellMe技术成为微软语音技术的一部分,TellMe服务使企业在无需安装自己的服务器的情况下就能够运行基于IP的电话系统。
TellMe在自己的数据中心处理呼叫,并收取费用,其技术符合VXML标准。
微软也提供相类似的产品SpeechServer,但以微软传统的方式销售:
企业购买软件许可,并在自己的服务器上运行软件,即语音服务器。
智能手机平台的语音技术主要应用在微软自主研发的下一代手机操作系统WindowsPhone7,主要技术仍然是使用TellMe技术实现语音到文字的转换。
桌面语音技术是微软最早推出的语音技术,并且对外公布了开发包SDK,同时提供了语音发开规范SAPI,现在这个语音规范已经成为使用最广的语音开发规范。
图1-3就是微软语音识别的工作流程,其实真正的模拟信号->数字信号->语音->文字的转化,也就是语音识别引擎,这也是微软语音技术的关键部分,根据微软提供的平台和接口,可以对整个工作流程有相对深入的了解。
图1-3语音识别步骤图
关于微软语音识别引擎的输出,语音识别引擎处理数据之后,最先输出的格式为SemanticMarkupLanguage(SML,语义标记语言,基于XML)。
程序员要做的,就是定义一个语法文件(grammarrule),来筛选SML中的数据。
下面则是TTS的工作步骤图:
图1-4语音合成步骤图
这个相对于前面的语音识别,则是一个反操作,术语叫做SpeechSynthesis。
微软语音技术最核心的部分是语音编程接口(SAPI),SAPI是微软推出的语音开发规范,目前已经被应用到很多的语音产品中。
SAPI中包括对于低层控制和高度适应性的直接语音管理,训练向导,事件,语法,编译,资源,语音识别管理以及文本到语音管理,其结构如图所示。
图1-5SAPI框架图
图1-5中,语音框架主要靠SAPI运行来实现应用程序与语音引擎之间的协作,而SAPI提供各种接口实现不同的语音功能,SAPI使得应用程序和语音引擎之间高度紧密的结合,实时处理各种语音引擎在底层工作中的细节。
本系统会同时使用到SPEECHSDK的语音识别引擎和TTS合成引擎.因此,对这两个引擎的相关控制命令介绍如下。
(1)识别上下文(IspRecoContext)接口:
是主要的语音识别程序接口,主要用于发送和接收与语音识别相关的消息通知,创建语法规则对象。
(2)语音识别引擎(IspRecognizer)接口:
用于创建语音识别引擎的实例。
SAPI拥有两种不同的语音识别引擎类型,一个是共享的语音识别引擎(SharedRecognizer)。
由于它可以与其他语音识别应用程序共享其程序资源,所以在大多数场合中被推荐使用。
需要建立一个采用共享语音识别引擎的识别环境(IspRecoContext)。
一个是独占(1nProcRecognizer)的引擎,它只能由创建的应用程序使用。
此两种模式的主要区别,主要在于识别过程中使用的匹配字典不同。
前者使用的是通用字典,特点是内容多,覆盖的词汇量大,字典由sdk提供。
适用于没有预定目标的随机听写之类的应用。
同时因为词汇量大直接导致识别的精度降低,识别速度较慢。
后者的字典需要开发者自己编写,可以写入xml文件中。
xml文件作为一种数据存储的方式,有一定的格式,定义了sdk需要确定的一些标签和用以匹配的词汇。
这种方式由开发者定义词汇的数量,大大降低匹配过程中需要检索的词汇量,提高了识别速度。
同时因为侯选项极少,所以一般不会识别错误。
其缺点也是明显的:
词汇量小,只有预先输入字典的词汇可以被识别出来,所以一般用来作为常用命令的识别,方便用户操作,代替菜单命令等。
(3)语法规则(IspRecoGrammar)接口:
语音识别语法接ISpRecoGrammar用于载入、激活、钝化识别语法。
语法中定义了用户期望引擎识别的单词、短语和句子。
语音识别引擎的工作模式分为听写模式和命令控制模式,语音识别语法对应地分为听写语法和命令控制语法。
听写语法工作于听写模式,用于连续语音识别,用户一般无需对听写语法进行额外的修改;命令控制语法工作于命令控制模式,用于识别用户在语法文件中定义的短语或句子,以XML文件的形式保存。
(4)识别结果(IspRecoResult)接口:
用于有关识别引擎对输入语言的推测和识别从而提取相关结果,包括识别的文字,识别的语法规则等。
(5)语音合成(ISpVoice)接口:
主要功能是实现文本到语音的转换。
它的作用如使用IspVoice:
:
Speak来从文本数据生成语音,从而使电脑会说话。
当处于异步工作时,可以使用IspVoiee:
:
CetStatus来获得发音状态及文本位置等。
在接口中,有许多成员函数,通过这些成员函数可以实现对发音频率、发音音量等合成属性进行调整。
在C#中,我们通过实现ISpVoice接口的SpVoice类来实现语音合成。
在WindowsVista和Windows7系统中,语音识别和语音合成在.NETframework中对应的命名空间分别是System.Speech.Recognition和System.Speech.Synthesis(要求.NETframework版本3.0及以上)。
其中包含了语音操作的相关类[2],其介绍如下:
SpeechRecognitionEngine类:
即语音识别引擎类,创建语音识别的基础类,每次创建都将产生一个新的语音识别线程,而且相互独立。
实例化的前提是要求系统中安装了至少一种语音识别引擎。
启动这个识别引擎需要调用SpeechRecognitionEngine对象的RecognizeAsync方法,这个方法带有一个参数,RecognizeMode.Multiple或者RecognizeMode.Single。
两者区别在于前者可以识别多次,而后者完成一次识别之后就会停止语音识别引擎。
SpeechRecognizer类:
即语音识别器类,与SpeechRecognitionEngine同样能创建语音识别线程,但是不同之处在于SpeechRecognizer不需要进行相关配置,其使用的识别引擎就是当前系统正在使用的识别引擎,所以当禁用和改变计