四联光电智能照明论坛

标题: 接入百度语音识别服务 [打印本页]

作者: gaoxianqu    时间: 2015-12-11 15:25
标题: 接入百度语音识别服务
本帖最后由 gaoxianqu 于 2015-12-11 15:30 编辑

目前百度开放了基于Android、IOS平台的语音识别SDK,和适合Web应用的RESTful Web API,支持在线应用和半离线应用(须定期联网更新认证文件,一般周期为一个月)。百度语音识别服务免费,只需注册百度开发者账号便可创建相应的语音识别应用,获得ID key,接入百度语音识别服务。



语音识别 服务开通成功后即可获得 50000次/日 的在线识别调用配额。
如果开通服务时初始分配的在线识别调用配额无法满足您的需求,可以申请提高配额。
如果审核通过,则当前应用该服务的日调用次数将不再受配额限制。如果审核被拒绝,还可以再次提交申请。

百度语音识别目前有“离在线融合SDK”、“在线SDK”、“REST API”(官网下载地址
如果你使用的是离在线融合语音识别SDK,并且需要使用离线识别,需要申请离线识别授权。操作如下
创建语音识别应用之后,在应用管理页面,点“ 管理语音识别 ”选择 “ 申请离线识别授权 ”

选择应用类型为Android或者iOS,填写并提交离线授权所需信息:Android应用为应用包名,iOS应用为Bundle ID。提交成功后即获取离线识别正式授权。
注:请确保填写提交的信息准确,否则会无法通过离线授权验证导致离线识别不可用。

离线识别授权信息提交成功后,通过开发环境运行或者打包安装到手机设备上,在设备联网的情况下会自动下载正式授权文件并激活离线识别功能,一定要确保应用包名填写正确。


以Android离在线融合SDK为例,简介在项目中导入SDK的过程。
1.放置文件
   将开发包中的libs目录合并到工程目录的libs目录,其中包括了各平台的so库,可进行删减;
   将开发包中的res目录合并到工程目录的res目录;
2.配置manifest
   按照如下配置,uses-permission权限别忘了添加上去;

调用语音识别控件
语音识别控件是SDK内置的一个控件,优点是调用方便,可以像调起一个普通的Activity一样简单的使用语音识别;缺点是有百度的logo。



调用语音识别API
1.通过android.speech.SpeechRecognizer的静态方法创建语音识别监听器,代码无需修改


2.为监听器设置回调"函数"


3.开始识别


4.获得结果



语音识别 REST API
百度语音识别通过 REST API 的方式给开发者提供一个通用的 HTTP 接口,基于该接口,开发者可以获取语音识别服务。正式地址:http://vop.baidu.com/server_api
REST API 支持整段录音文件的识别,对录音格式有一定的要求,原始 PCM 的录音参数必须符合 8k/16k 采样率、16bit 位深、单声道,支持的压缩格式有:pcm(不压缩)、wav、opus、speex、amr、x-flac。
用户端自行录音,获得符合要求的音频文件后,将语音数据和其他参数通过 POST 上传给服务器。目前 API 仅支持整段语音识别的模式,即需要上传整段语音进行识别。


显示上传
语音数据直接放在 HTTP-BODY 中,控制参数以及相关统计信息通过 REST 参数传递,REST参数说明:

字段名数据类型可需描述
cuidstring必填用户 ID,推荐使用设备mac 地址/手机IMEI 等设备唯一性参数
tokenstring必填开发者身份验证密钥
lanstring选填语种选择,中文=zh、粤语=ct、英文=en,不区分大小写,默认中文
ptcint选填协议号,下行识别结果选择,默认 nbest 结果

语音数据的采样率和压缩格式在 HTTP-HEADER 里的 content-type 表明
上传示例



隐示上传
语音数据和其他参数通过标准 JSON 格式串行化 POST 上传, JSON 里包括的参数:
字段名数据类型可需描述
formatsting必填语音压缩的格式,请填写上述格式之一,不区分大小写
rateint必填采样率,支持 8000 或者 16000
channelint必填声道数,仅支持单声道,请填写 1
cuidstring必填用户唯一标识,用来区分用户,填写机器 MAC 地址或 IMEI 码,长度为60以内
tokenstring必填开放平台获取到的开发者access_token
ptcint选填协议号,下行识别结果选择,默认 nbest 结果
lanstring选填语种选择,中文=zh、粤语=ct、英文=en,不区分大小写,默认中文
urlstring选填语音下载地址
callbackstring选填识别结果回调地址
speechstring选填真实的语音数据 ,需要进行base64 编码
lenint选填原始语音长度,单位字节

语音数据放在 JSON 序列的“speech”字段中,需要将语音先进行 base64编码,并标明语音数据的原始长度,填写“len”字段;也可以直接提供语音下载地址放在“url”字段中,并且提供识别结果的回调地址,放在“callback”参数中。因此“speech”和“len”参数绑定,“url”和“callback”参数绑定,这两组参数二选一填写,如果都填,默认处理第一种。
表单类型在 HTTP-HEADER 里的 content-type 表明
上传示例


下行接口
两种上传方式都返回统一的结果,采用 JSON 格式封装,如果识别成功,识别结果放在 JSON的“result”字段中,统一采用 utf-8 方式编码。
字段名数据类型可需描述
err_noint必填错误码
err_msgstring必填错误码描述
snstring必填语音数据唯一标识,系统内部产生,用于 debug
resultarray ( [string,string,…])选填识别结果数组,提供1-5 个候选结果,
string 类型为识别的字符串, utf-8 编码
识别成功返回 case
识别错误返回 case
错误码含义
3300输入参数不正确
3301识别错误
3302验证失败
3303语音服务器后端问题
3304请求 GPS 过大,超过限额
3305产品线当前日请求数超过限额











欢迎光临 四联光电智能照明论坛 (http://www.5xhome.com/) Powered by Discuz! X3.2