文档中心
文档中心 / 语音识别

语音识别

参数说明

  • 格式支持:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式);8k/16k 采样率 16bit 位深的单声道。
  • 系统支持语言种类:中文(zh)、粤语(ct)、英文(en)

简介

目前 API 仅支持整段语音识别的模式,即需要上传完整语音文件进行识别。文件大小不超过10M,时长不超过60s。
语音数据上传POST方式有三种:

  1. JSON格式POST上传本地文件。
  2. raw格式POST上传本地文件
  3. JSON格式输入音频文件下载的url及用户服务器的回调url。(不推荐)

正式地址:http://vop.baidu.com/server_api

文件样例

推荐16K采样率 pcm文件


JSON方式上传

语音数据和其他参数通过标准 JSON 格式串行化 POST 上传, JSON 里包括的参数:

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

本地文件上传使用(speech, len) ;需要百度服务器根据url下载音频文件请使用 (url, callback)
(speech, len) 及 (url, callback) 这两组参数必须二选一,如果都填,默认处理第一种。 建议使用(speech, len)。

  • (speech, len): 开发者可以将语音文件进行
    base64编码,放在 “speech”字段中。并将语音数据的原始长度,填写“len”字段;

  • (url, callback):直接提供语音下载地址, 放在“url”字段中,并将识别结果的回调地址,放在“callback”参数中。

上传示例(speech, len 参数)

即:JSON格式POST上传本地文件
如使用(url, callback)请忽略此段

固定头部header

  1. Content-Type:application/json

请求示例

4K大小的pcm文件(普通话录音)请求:
speech 参数填写为 文件内容base64后的结果:

  1. {
  2. "format":"pcm",
  3. "rate":16000,
  4. "channel":1,
  5. "token":xxx,
  6. "cuid":"baidu_workshop",
  7. "len":4096,
  8. "speech":"xxx", // xxx base64FILE_CONTENT
  9. }

返回示例

  1. {"corpus_no":"6433214037620997779","err_msg":"success.","err_no":0,"result":["北京科技馆,"],"sn":"371191073711497849365"}

注意事项

len 字段表示原始语音大小字节数,不是 base64 编码之后的长度。

上传(url, callback参数)

即:JSON格式输入音频文件下载的url及用户服务器的回调url。(不推荐)
如使用(speech, len)请忽略此段。

url和callback 请确认是公网ip或者域名,确保百度服务器可以访问。
用户首先将url和callback参数传递给百度服务器。此时百度服务器会返回一个sn确认。
之后百度服务器异步下载这个url参数里的音频文件后。在识别结束后,回调用户callback参数的地址。使用之前sn,可以配对。

url中填写可以识别的音频文件地址,如 http://www.yourdomain.com/res/16k_test.pcm, 根据这个地址,百度服务器会自动下载音频文件。
callback, 填写回调地址,如http://www.yourdomain.com/post-dump.php 百度服务器会对这个地址发起http POST 请求,内容为json字符串。

固定头部header

  1. Content-Type: application/json

请求示例

  1. // 确保 http://www.yourdomain.com/res/16k_test.pcm 可以下载
  2. {
  3. "format": "pcm",
  4. "rate": 16000,
  5. "channel": 1,
  6. "token": "24.9817273447fabaf05b0e73cad4a4910a.2592000.1500434647.282335-9566711",
  7. "cuid": "aip-cxy",
  8. "url": "http://www.yourdomain.com/res/16k_test.pcm",
  9. "callback": "http://www.yourdomain.com/post-dump.php"
  10. }

返回示例

  1. {
  2. "err_msg": "success. ",
  3. "err_no": 0,
  4. "sn": "817756712911497936928"
  5. }

Callback地址回调

在callback中地址可以接受到如下post数据。注意callback 回调内容里的sn和之前识别请求返回的sn是一致的。

  1. // http://www.yourdomain.com/post-dump.php 会以POST方式接收到如下来自百度服务器的请求
  2. {"corpus_no":"817756712911497936928","err_msg":"success.","err_no":0,"result":["北京科技馆,"],"sn":"371191073711497849365"}

Raw 方式上传

即 raw格式POST上传本地文件
语音数据直接放在 HTTP BODY 中,控制参数以及相关统计信息通过 header和url里参数传递。

Header 参数说明

字段名 数据类型 可需 描述
format string(格式见下面示例) 必填 语音格式,pcm 或者 wav 或者 amr。不区分大小写,推荐使用pcm文件
rate int(格式见下面示例) 必填 采样率,支持 8000 或者 16000 ,推荐文件的采样率 16000

语音数据的采样率和压缩格式在 HTTP-HEADER 里的Content-Type 表明,例:

  1. Content-Type: audio/pcm;rate=16000

url参数说明

字段名 数据类型 可需 描述
cuid string 必填 用户唯一标识,用来区分用户,计算UV值。建议填写能区分用户的机器 MAC 地址或 IMEI 码,长度为60字符以内。
token string 必填 开放平台获取到的开发者 access_token
lan string 选填 语种选择,中文=zh、粤语=ct、英文=en,不区分大小写,默认中文

URL 示例:

  1. http://vop.baidu.com/server_api?lan=zh&cuid=******&token=1.a6b7dbd428f731035f771b8d********.86400.1292922000-2346678-124328

接口返回参数

两种上传方式都返回统一的结果,采用 JSON 格式封装,如果识别成功,识别结果放在 JSON的“result”字段中,统一采用 utf-8 方式编码。
(如果使用POST方式的(url,callback)方式,百度服务器会回调用户服务器的callback地址, 返回如下结果)

字段名 数据类型 可需 描述
err_no int 必填 错误码
err_msg string 必填 错误码描述
sn string 必填 语音数据唯一标识,系统内部产生。如果反馈及debug请提供sn。
result array ( [string,string,…]) 选填 识别结果数组,提供1-5 个候选结果, 优先使用第一个结果。utf-8 编码。

识别成功返回 case

  1. {"err_no":0,"err_msg":"success.","corpus_no":"15984125203285346378","sn":"481D633F-73BA-726F-49EF-8659ACCC2F3D","result":["北京天气"]}

识别错误返回 case

  1. {"err_no":2000,"err_msg":"data empty.","sn":"481D633F-73BA-726F-49EF-8659ACCC2F3D"}

错误码解释

见错误码及常见原因部分

测试demo

请申请应用后,至http://yuyin.baidu.com/sdk 上下载

  • 语音REST API示例代码 :: 一些简单的demo 有JAVA PHP 和C++
  • RestApi SDK 下载 :: rest api 的完整封装,有 JAVA PHP Python Nodejs 和 C# 语言。使用JSON方式上传本地音频文件。同rest api的功能一致,没有额外功能。