Google,微软,科大讯飞的语音识别引擎对比

来源:互联网 发布:macbook安装windows 编辑:程序博客网 时间:2024/05/19 00:38
Google提供了一个在线语音识别的API接口,通过该API可以进行中文、英文等语言的识别。
 API地址:http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN&maxresults=1
参数解释

 xjerr:错误标准

 client: 客户端类型

 lang:待识别语言类型,en-US是英文,中文为zh-CN

 maxresults最大返回识别结果数量

识别基本流程:
从音频输入设备获取原始音频并编码或直接调用音频文件。
将音频POST至接口地址。
分析处理返回的JSON并得出结果。
请求接口
地址:如前
请求方式:http post
请求数据:编码后的音频数据
音频编码格式:wavspeexflac
音频采样频率:8000Hz11025Hz16000Hz22050Hz24000Hz32000Hz44100Hz48000Hz
主要优点
语音识别引擎庞大,识别精度很高,适用于文本语音识别。提供多国语言的语音识别。
任何平台都可以进行访问,容易使用。
主要缺点
API未开放,未能获知具体开发细节。
识别引擎位于服务器端,识别的速度和网络质量有关,识别速度较慢。
待识别音频的格式、大小、时长的限制。
 
 

MicrosoftSpeech SDK

Microsoft Speech SDK是微软公司提供在Windows平台上开发语音识别和语音合成应用程序的开发包,简称为SAPI,内含SRSpeech Recognition)和SSSpeechsynthesis)引擎,因此可以很方便地在自己的应用程序中添加这些功能。
该语音引擎支持多种语音的识别和朗读,包括英文、日文、中文等。微软推出的应用编程接口API,虽然现在不是业界标准,但是应用比较广泛。
识别基本流程:
从音频输入设备获取原始音频并编码或直接调用音频文件。
设定语音引擎和识别上下文等内容,配置本地访问属性。
分析处理得到的文本结果
请求接口
请求方式:本地访问
请求数据:编码后的音频数据
音频编码格式:wav
音频采样频率:8000Hz11025Hz16000Hz22050Hz24000Hz32000Hz44100Hz48000Hz
主要优点
基于COM组件,便于与DirectShow中的组件整合。
语音识别引擎位于本地,便于访问,识别速度较快。
待识别音频的大小、时长无限制。
主要缺点
缺少其他平台的支持,仅支持windows平台。
语音识别引擎不够庞大,识别精准度较低。
仅提供中日英三种语言的语音识别功能。
 
 

 iFLY Mobile Speech Platform 2.0

科大讯飞为开发者提供了语音应用开发平台,提供语音合成、语音听写、语音识别、声纹识别等服务,为语音应用开发爱好者提供方便易用的开发接口,使得用户能够基于该开发接口进行多种语音应用开发。
其主要功能有:
实现基于HTTP协议的语音应用服务器,支持语音合成、语音听写、语音识别、声纹识别等服务
提供基于移动平台和PC上的语音客户端子系统,内部集成音频处理和音频编解码模块,提供关于语音合成、语音听写、语音识别和声纹识别完善的API
只需要在http://open.voicecloud.cn上申请成为开发者,便可以下载相关的SDK和开发文档。
主要优点
支持平台丰富,各个平台上都有相应的详细SDK文档
语音识别引擎较庞大,对中文的识别精度很高。
具端点检测功能,便于划分识别文本的句子。
主要缺点
识别引擎位于服务器端,须远程访问,识别速度较慢。
对语言支持不如Google,目前仅支持中文听写。
需要使用1028端口,在某些地方会有使用限制。
当软件用户达到百万次后,需要开始收费。
 
 
测试流程:
从麦克风输入语音并编码或直接调用音频文件,调用的音频文件主要是从电影或是新闻节目中提取其音频,前者主要体现识别语音口音的多样性,后者是体现识别语音口音的正规性,从麦克风输入体现对针对某个人特定的口音。主要测试音频文件格式为wavflacflac需要由相同采样率的wav转换而来)测试采样率有8KHz16KHz24KHz32KHz44.1KHz
分析各个引擎的识别准确度和花费时间时,选取了5段时长为25S、平均长度为150个中文字符的音频作为其测试音频,记录识别正确的文字和花费时间,准确度以识别正确的文字/文本总字数,同时包含识别出的单独的字、词,花费时间对于非本地引擎需要考虑音频传送和结果返回的时间。
分析各个引擎中语速对识别准确度的影响,针对同一文本,测试不同语速(分为慢速、中速、快速)的音频,且时间均控制在25S,仅选取了24KHz44.1KHz音频进行测试,因为由测试准确度的测试中,已经得出在24KHz44.1KHz情况下,识别精确度较高。
分别用googleMicrosoft和科大讯飞语音识别引擎对测试音频文件进行测试。其中使用google和科大讯飞引擎需通过访问其相关服务器,而Microsoft的语音识别引擎则是从本地进行访问。
对所得结果进行数据分析,列出数据表格,分析各自引擎的优缺点。
 
测试结果:
语速对识别时间的影响
                        慢速                 中速                   快速
Google              8s                   8.94s               10.125s
SAPI                6.06s               6.63s                 5.375s
科大讯飞          34.6s               35s                     23.6s
 
语速对识别精度的影响
                        慢速                 中速                   快速
Google           78.93%           77.52%               11.58%
SAPI               28.7%             42.79%               6.81%
科大讯飞         78.2%             80.48%              15.53%
 
结果评价:
1.Google
Google语音识别引擎可以识别wav格式音频,但是测试所用wav均为非原始wav故识别精度很低,若将其转换为flac后则识别精度增加。对于flac格式中文音频,快速语音准确率达到11.58%,中速语音准确率达到72.52%,平均花费时间8.94S。慢速语音准确率达到78.93%,平均花费时间为8S。对于英文音频,快速语音准确率达到40.22%,中速语音准确率达到89.2%,慢速语音准确率达到80.58%,平均花费时间各为9.2s8.5s9.9s
不同的音频采样率对识别效果和花费时间有影响,识别效果主要体现在音频中间部分名词和音频末端1s的识别结果,于中文而言新闻类平均准确率为72.37%,电影类平均准确率为44.36%。于英文而言,电影类平均准确率为35.3%。平均花费时间采样率越大,识别时间越短,如24KHz44.1KHz的同样内容音频,后者时间少1S左右。
对于google语音识别引擎,由于语速过快会导致识别不准确,会出现多个音识别为一个字的现象,故所用时间较短,但是准确度较差。而语速过慢时,虽然语音的特征更加明晰会使得准确率上升,但是字与字之间的联系不密切,会出现本该是一个词却识别为同音的两个字,导致准确率下降,故其平均准确率和中速识别率相当,另一方面是所需识别的字较少,故识别时间相对中速短。
对于视频流提取的音频和麦克风输入人声的识别,麦克风输入人声的平均准确度高于视频流中的的平均准确度,原因是视频流中的人声会带有各种口音一般带有背景噪音,而麦克风输入人声是单一的稳定的,背景噪音较小。准确度顺序大致为:新闻类>特定人>电影类,但不能忽略电影中也存在普通话标准发音。对于时间长度为20s以上的快速语音,测试期间无法识别,一直未能返回正确结果。不知原因。对于特定人输入的音频,音频头尾都可正确识别。若是输入视频流中音频,头尾1S的内容都不能很好的识别,容易出错。
Google语音识别引擎数据库丰富,可以识别大部分日常用语,还包括当下流行词汇,人名,地名等。对于新闻类词汇判别比较准,而特定专业类名词通常以同音字代替。
对于google识别的时间包括网络发送音频数据包时间,识别花费时间,返回结果时间。由于引擎位于服务器,需要通过网络访问,故网络质量在识别时间上占据极重要的位置,识别过程中经常会发生访问延迟、访问超时和请求无效等错误,故应该在网络良好的条件下使用google引擎,这也是非本地语音引擎库的缺点。同时音频文件超过1M时,也无法正确返回结果,估计是服务器的文件限制。
若考虑语音的精准度,则倾向于选择google语音识别引擎。
 
 
2.SAPI
微软的SAPI语音识别引擎可以识别任意采样率的wav格式音频,当采样率比较低时如仅为8KHz,音频内容采样过程中会缺失,故识别不准确,理论上来说,采样率越高,识别精度越好。但是采样率超过一定值后,改进并不明显。经过测试得出以44.1KHz采样率识别精度较好,且花费时间较短。快速语音准确率为6.81%,中速语音准确率达到42.79%,平均花费时间6.63S。慢速语音准确率达到28.7%,平均花费时间为6.06S。识别效果主要体现在音频中间部分名词和音频末端1s的识别结果,新闻类平均准确率51.48%,电影类平均准确率为41.43%,特定人平均准确率为53.06%
对于特定人输入的音频,音频头尾都可正确识别。若是输入视频流中音频,头尾1S的内容容易漏识别,且漏识别内容并非不显示,而是以其他文字代替诸如“他、淡”等字,影响了识别结果的理解。
微软语音识别引擎数据库位于本地,访问方便、快捷,无需考虑网络延迟、音频文件过大无法传送等问题。其缺点便是本地数据库的大小限制了其识别精度,需要通过长时间的训练才有可能达到比较高的精准度,而相比之下google引擎数据库可以收集网络上的所有资料,训练文本并不缺乏,容易达到很高的精准度。SAPI可以识别大部分日常用语和常用的新闻词汇,但是对当下流行词汇,人名,地名识别精度很低,对特定专业类名词通常也以同音字代替。
 
 
3.科大讯飞
科大讯飞语音识别引擎仅可识别wav格式音频,为了达到理想的效果,有诸如条件限制,如音频须为采样率16KHz、每采样一点16bit、单声道,且音频长度小于90s。由于具有端点检测功能,每句话的长度不宜过长。快速语音准确率达到17.63%,平均花费时间29.2S。中速语音准确率达到80.48%,平均花费时间35S。慢速语音准确率达到78.2%,平均花费时间为34.6S。平均花费时间比另外两个引擎多了许多,主要原因是其端点检测功能,故一次能识别的语句长度有限制,需要分段识别,因此加长了识别的时间。
端点检测的好处是方便音频中句子的分段,易于对对识别结果的理解。
其引擎库也是位于服务器,需要通过网络访问,识别的时间包括网络发送音频数据包时间,识别花费时间,返回结果时间。网络质量在识别时间上也占据极重要的位置,且其需要开启80/1028端口后才能有效使用该引擎。待识别的音频需要质量清晰,一般对于网上流媒体而言,声音质量不高,识别较困难。
 
以上的SAPI和科大讯飞的测试DEMO都是用他们SDK里自带的。GOOGLE的C#代码可参照http://www.cnblogs.com/eboard/archive/2012/02/29/speech-api.html
另外介绍关于google语音识别的内容还可以参照http://blog.csdn.net/dlangu0393/article/details/7214728本文中有转载其小部分内容。
 
 
由于测试样本数量并不算多,因此以上测试仅供参考。
0 0
原创粉丝点击