1.百度语音
简介
百度语音识别通过 REST API 的方式给开发者提供一个通用的 HTTP 接口。上传需要完整的录音文件,录音文件时长不超过60s。REST API,均封装了 Java、Python、PHP、C#、NodeJs、C++ 共6种开发语言的SDK。功能等同于REST API。SDK中识别使用JSON方式提交本地文件。
离线语音识别SDK目前只有iOS和Android。对于Android SDK,离线语音识别包括离线命令词和唤醒词。
- 离线命令词: 断网时激活,只能识别预定义的短语。联网时,强制使用在线识别。固定短语的语法需要在官网预定义并下载为baidu_speech_grammar.bsg文件
- 唤醒词:本地功能,不需要网络。唤醒词即识别“关键词”,当SDK的识别引擎“听到”录音中的关键词后,立即告知用户。与android系统的锁屏唤醒完全无关。关键词和离线命令词一样,需要预定义并下载为WakeUp.bin文件
iOS支持离在线并行识别,但需要注意的是在线识别效果远优于离线识别,不推荐使用离线识别。
首次使用离线,SDK将会后台下载离线授权文件,成功后,授权文件有效期(三年)内无需联网。有效期即将结束后SDK将自动多次尝试联网更新证书)。
费用
语音识别、合成服务免费,接口调用量无限。QPS识别默认为10,合成为100
语种
支持普通话、粤语、英语、四川话
自定义词库
自定义词库适合短句,保证词库中一模一样的短句可以被识别出,词库中的分词优先级较高。 自定义词库仅对dev_pid = 1536,即普通话(支持简单的英文识别)生效,并且原始音频的采用率为16K。
最好在1万行以内。
副作用:如果用户的测试集中包含大量非自定义词表的query,整体上准确率下降。
注意事项
目前 API 仅支持整段语音识别的模式,即需要上传完整语音文件进行识别。文件大小不超过10M,时长不超过60s。 语音数据上传POST方式有2种:
1.JSON格式POST上传本地文件
语音数据和其他参数通过标准 JSON 格式串行化 POST 上传
2.raw格式POST上传本地文件
即raw格式POST上传本地文件语音数据直接放在 HTTP BODY 中,控制参数以及相关统计信息通过 header和url里参数传递。语音格式,pcm 或者 wav 或者 amr。不区分大小写,推荐使用pcm文件。采样率 16000, 固定值
2. Kaldi
Kaldi是一个开源的语音识别工具箱,基于C++编写, 可以在Windows和unix平台上编译。
特色
与文本无关的LVCSR系统;
基于FST的训练和解码;
最大似然训练;
各种各样的线性和映射变换;
有VTLN,SAT的脚本
声学模型
支持标准的机器学习训练模型;
线性变换如:LDA,HLDA,MLLR;
说话人自适应:fMLLR,MLLR;
支持GMM,SGMMs,DNN
用到的库
OpenFST: Weighted Finite State Transducer Library(加权有限状态转换器)
ATLAS、CLAPACK:标准的线性代数库
sph2pipe:由sph文件转换成其他音频文件
irstlm:语言模型的工具箱
sctk:score benchmark(评价ASR基准)
中文语音语料库
- AI SHELL公司开源178小时中文语音语料及基本训练脚本,见kaldi-master/egs/aishell
- 清华大学30小时的数据集,thchs30
- CVTE公司开源其训练好的TDNN模型,http://kaldi-asr.org/models.html
实际效果
使用CVTE训练好的SR模型做中文在线识别,困惑度(PPL)和字错误率(CER)
CVTE201701(1000 utts): ppl 340; cer: 4.55%
CVTE201703(10000 utts): ppl 313; cer: 4.5%
CVTE201705(5000 utts): ppl 200; cer: 15.7%
CVTE201705_02(7000 utts): ppl 1000+; cer: 5.58%
THCHS30(2496 utts): ppl 2000+; cer: 8.25%
3. 现有解决方案
-
科讯嘉联
-
深世信息
-
腾讯催收机器人CR
-
灵声音机器人