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本文中有转载其小部分内容。
 
 

由于测试样本数量并不算多,因此以上测试仅供参考

转自 http://blog.csdn.net/yylsheng/article/details/8364487

Logo

助力合肥开发者学习交流的技术社区,不定期举办线上线下活动,欢迎大家的加入

更多推荐