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

— 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
请求数据:编码后的音频数据
音频编码格式: wav speex flac
音频采样频率: 8000Hz 11025Hz 16000Hz 22050Hz 24000Hz 32000Hz 44100Hz 48000Hz
— 主要优点
语音识别引擎庞大,识别精度很高,适用于文本语音识别。提供多国语言的语音识别。
任何平台都可以进行访问,容易使用。
— 主要缺点
API 未开放,未能获知具体开发细节。
识别引擎位于服务器端,识别的速度和网络质量有关,识别速度较慢。
待识别音频的格式、大小、时长的限制。
 
 

MicrosoftSpeech SDK

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

 iFLY Mobile Speech Platform 2.0

— 科大讯飞为开发者提供了语音应用开发平台,提供语音合成、语音听写、语音识别、声纹识别等服务,为语音应用开发爱好者提供方便易用的开发接口,使得用户能够基于该开发接口进行多种语音应用开发。
— 其主要功能有:
实现基于 HTTP 协议的语音应用服务器,支持语音合成、语音听写、语音识别、声纹识别等服务
提供基于移动平台和 PC 上的语音客户端子系统,内部集成音频处理和音频编解码模块,提供关于语音合成、语音听写、语音识别和声纹识别完善的 API
— 只需要在 http://open.voicecloud.cn 上申请成为开发者,便可以下载相关的 SDK 和开发文档。
— 主要优点
支持平台丰富,各个平台上都有相应的详细 SDK 文档
语音识别引擎较庞大,对中文的识别精度很高。
具端点检测功能,便于划分识别文本的句子。
— 主要缺点
识别引擎位于服务器端,须远程访问,识别速度较慢。
对语言支持不如 Google ,目前仅支持中文听写。
需要使用 1028 端口,在某些地方会有使用限制。
当软件用户达到百万次后,需要开始收费。
 
 
— 测试流程:
从麦克风输入语音并编码或直接调用音频文件,调用的音频文件主要是从电影或是新闻节目中提取其音频,前者主要体现识别语音口音的多样性,后者是体现识别语音口音的正规性,从麦克风输入体现对针对某个人特定的口音。主要测试音频文件格式为 wav flac flac 需要由相同采样率的 wav 转换而来)测试采样率有 8 KHz 16 KHz 24 KHz 32 KHz 44.1 KHz
分析各个引擎的识别准确度和花费时间时,选取了 5 段时长为 25S 、平均长度为 150 个中文字符的音频作为其测试音频,记录识别正确的文字和花费时间,准确度以识别正确的文字 / 文本总字数,同时包含识别出的单独的字、词,花费时间对于非本地引擎需要考虑音频传送和结果返回的时间。
分析各个引擎中语速对识别准确度的影响,针对同一文本,测试不同语速(分为慢速、中速、快速)的音频,且时间均控制在 25S ,仅选取了 24KHz 44.1KHz 音频进行测试,因为由测试准确度的测试中,已经得出在 24KHz 44.1KHz 情况下,识别精确度较高。
分别用 google Microsoft 和科大讯飞语音识别引擎对测试音频文件进行测试。其中使用 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.2s 8.5s 9.9s
不同的音频采样率对识别效果和花费时间有影响,识别效果主要体现在音频中间部分名词和音频末端 1s 的识别结果,于中文而言新闻类平均准确率为 72.37%, 电影类平均准确率为 44.36% 。于英文而言,电影类平均准确率为 35.3% 。平均花费时间采样率越大,识别时间越短,如 24KHz 44.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本文中有转载其小部分内容。
 
 
由于测试样本数量并不算多,因此以上测试仅供参考。
                                                                    
 
 
 
 
 
 
 

 

你可能感兴趣的:(Google,Google,微软,引擎,语音识别,科大讯飞)