随着亚马逊的Echo、Google的Home、京东的叮咚、阿里巴巴的天猫精灵的推出,都在市面上引起了不少波动,其中用到的关键技术就是语音识别. 关于语音识别,找到了百度语音识别,本文将给出该接口使用方法.

注册百度账号,并创建应用

访问http://yuyin.baidu.com/进行账号注册及应用创建,获取到AppKey、SecretKey、CUID

API

访问 该地址 即可了解到API使用说明

字段名 可需 描述
format 必填 语音文件的格式,pcm 或者 wav 或者 amr。不区分大小写
rate 必填 采样率,支持 8000 或者 16000
channel 必填 声道数,仅支持单声道,请填写固定值 1
cuid 必填 用户唯一标识,用来区分用户,计算UV值。建议填写能区分用户的机器 MAC 地址或 IMEI 码,长度为60字符以内。
token 必填 开放平台获取到的开发者 access_tokenn
lan 选填 语种选择,默认中文(zh)。 中文=zh、粤语=ct、英文=en,不区分大小写。
url 选填 语音下载地址,与callback连一起使用,确保百度服务器可以访问
callback 选填 识别结果回调地址,确保百度服务器可以访问
speech 选填 真实的语音数据 ,需要进行base64 编码。与len参数连一起使用。
len 选填 原始语音文件的字节数,单位字节
POST http://vop.baidu.com/server_api

Content-Type:application/json

{
    "format":"speex",
    "rate":8000,
    "channel":1,
    "token":xxx,
    "cuid":"baidu_workshop",
    "len":4096,
    "speech":"xxx",
}

实现

# 获取token
access_token=`curl -s "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=$BAIDU_YUYIN_API_KEY&client_secret=$BAIDU_YUYIN_SECRET_KEY"|jshon -e access_token|sed 's/"//g'`
size=`/bin/ls -l $pcmfile|awk '{print $5}'`

if [ `myos` == 'linux' ];then
    base64data=`base64 -w 0 $pcmfile`
else
    base64data=`base64 $pcmfile`
fi

body="{
    \"format\":\"pcm\",
    \"rate\":8000,
    \"channel\":1,
    \"token\":\"$access_token\",
    \"cuid\":\"$BAIDU_YUYIN_CUID\",
    \"len\":$size,
    \"speech\":\"$base64data\"
}"

result=`curl -s -H "Content-Type:application/json" --data "$body" "http://vop.baidu.com/server_api"`
if [ `echo $result|jshon -e err_no` -eq 0 ];then
    echo $result|jshon -e result
else
    error "fail. the result is $result"
fi

PS: jshon是json解析程序,可以访问https://raw.githubusercontent.com/smallmuou/sm-cli/master/commands/a2t 获取全部源码

a2t使用方法:

./a2t xxx.pcm

PS: BAIDU_YUYIN_API_KEY、BAIDU_YUYIN_SECRET_KEY、BAIDU_YUYIN_CUID是在/etc/sm.conf配置