—
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