产品文档

语音识别

语音识别

一、接口描述

1. 功能描述

语音转换成文字。

2. 能力说明

语音识别API根据不同的使用场景,使用在对应领域场景下训练的模型,以提高识别准确率。

3. 音频要求

  1. 建议的音频格式:wav、mp3、amr
  2. 建议的音频采样率:8000 Hz 或 16000 KHz(根据模型领域选择)
  3. 建议的声道数:单声道
  4. 单次请求的音频最大时长:60秒以内

4. 接口使用

在获得使用权限后,您可使用已经封装好的SDK进行相应开发,整体流程详见调用方法

二、请求说明

1. 接口地址

 https://aiapi.jdcloud.com/jdai/asr 

2. 请求方式

https post aiapi.jdcloud.com/jdai/asr

3. 请求参数

(1)header请求参数

  • 字段说明:
Property | JSON | 是 | {...} | 语音识别请求参数:
- 注意:如果 Sequence-Id 为 1 或 -1 时,则 Property 参数必填;其他情况下,该参数可选填
名称 类型 必填 示例值 描述
Domain string search 模型领域:
- general,通用场景,需要使用 16000 Hz 采样率的音频
- call_center,呼叫中心场景,需要使用 8000 Hz 采样率的音频
Application-Id string your Application-Id 产品ID:
- 业务方应用名称,由业务方在客户端自行生成。
Request-Id string *56a847e6-84c0-4c01-bf4b-d566f2d2dd11 | 请求 ID:
- *注意:示例值仅供参考,正式使用请务必通过 uuid 生成
- 对于同一次请求 Request-Id 需要保持一致,多次请求使用同一个将会产生不可预知的错误 Sequence-Id | int | 是 | -1 | 语音传输分段号:
- 从 1 开始依次递增,最后一段语音取负值,分为下述两种情况:
1. 在一个 Request-Id 中,上传整个音频文件(整包请求)时:填 -1
2. 在一个 Request-Id 中,音频文件分段上传(分段请求)时,遵循默认规则依次递增。例如:一次语音识别请求中,音频分 10 次上传,则 Sequence-Id 依次为:1,2,3,4,5,6,7,8,9,-10 Asr-Protocol | int | 是 | 1 | 通信协议版本号:
- 默认填 1 Net-State | int | 否 | 2 | 客户端网络状态:
- NETSTATE_NO_NETWORK = 0;
- NETSTATE_NO_WIFI_MOBILE = 1;
- NETSTATE_WIFI = 2;
- NETSTATE_CDMA = 3;
- NETSTATE_EDGE = 4; //移动 2.5G
- NETSTATE_EVDO_0 =5;
- NETSTATE_EVDO_A = 6;
- NETSTATE_GPRS = 7;
- NETSTATE_HSDPA = 8; //联通 3G
- NETSTATE_HSPA = 9;
- NETSTATE_HSUPA = 10;
- NETSTATE_UMTS = 11;
- NETSTATE_EHRPD = 12;
- NETSTATE_EVDO_B = 13;
- NETSTATE_HSPAP = 14;
- NETSTATE_IDEN = 15;
- NETSTATE_LTE = 16;
- NETSTATE_UNKOWN_MOBILE = 20; Applicator | int | 否 | 1 | 业务方信息:
- 0:内部业务方
- 1:外部业务方
  • Property参数
名称 类型 必填 示例值 描述
autoend bool false 服务端自动断尾检测(VAD)功能开关:
- false:不开启 VAD 功能
- true:开启 VAD 功能
platform string Linux&Centos&7.3 平台信息:
格式:{系统信息}&{设备信息}&{系统版本号}
- 系统信息:如 Android,iOS,Linux,Windows
- 设备信息:如 Pixel 3,iPhone X 等
- 系统版本号:设备系统版本,如 2.3.3,4.2.1 等
- 示例:Android&Pixel 3&7.1;iOS&iPhone X&11.4.1
version string 0.0.0.1 客户端版本号
encode JSON {...} 音频参数
  • encode字段
名称 类型 必填 示例值 描述
channel int 1 音频声道数:
- 建议使用单声道音频,单声道填 1
format string wav 音频格式:
- 建议使用 wav,amr,mp3 格式
sample_rate int 16000 音频采样率:
- 通用场景使用 16000 Hz,填 16000
- 呼叫中心场景使用 8000 Hz,填 8000
post_process int 0 数字后处理:
- 0:根据服务端配置是否进行数字后处理
- 1:强制开启数字后处理(开启后,会把结果中的数字汉字转换成阿拉伯数字。例如,识别结果中的"一千"会转成"1000")

(2)body请求参数

填充待识别的音频数据(二进制)。 音频数据可按照自定义长度进行切分,按顺序分包上传,并与 header 请求参数中的 Sequence-Id 参数的顺序保持对应。

4. 请求代码示例

建议您使用我们提供的SDK进行调用,SDK获取及调用方式详见sdk的使用方法

Python 3 示例程序如下:

python import requests import json import time import uuid import hashlib from urllib.parse import urlencode import sys import importlib importlib.reload(sys)

url = 'https://aiapi.jd.com/jdai/asr'

encode = { 'channel':1, 'format':'wav', 'sample_rate':16000, } Property = { 'platform':'Linux', 'version':'0.0.0.1', 'autoend':False, 'encode':encode, } headers = { 'Content-Type':'application/octet-stream', 'Domain':'general', 'Request-Id':str(uuid.uuid1()), 'Sequence-Id':str(-1), 'Property':json.dumps(Property) } query = { 'appkey':'your appkey', 'timestamp':'', 'sign':'' }

audiofile = '16k_audio.wav' secretkey = 'your secretkey'

def test_single(audiofile): query['timestamp'],query['sign'] = sign(secretkey) url_query = '?'.join([url, urlencode(query)]) #seq = 1 #packagelen = 4000

with open(audiofile, mode='rb') as f: while True: audiodata=f.read() #audiodata=f.read(int(packagelen)) if not audiodata: break #else: #if len(audiodata) < int(packagelen): #headers['Sequence-Id'] = str(-seq) #else: #headers['Sequence-Id'] = str(seq) r = requests.post(url_query, headers=headers, data=audiodata) #seq += 1 print(r.text)

def sign(secretkey): m = hashlib.md5() nowTime = int(time.time() * 1000) before = secretkey + str(nowTime) m.update(before.encode('utf8')) return str(nowTime), m.hexdigest()

if name == '__main__': audiofile = sys.argv[1] if len(sys.argv) > 1 else audiofile test_single(audiofile)

三、返回说明

1. 返回参数

(1)公共返回参数

名称 类型 示例值 描述
code string 1000 参见错误码-系统级错误码
charge boolean false 或 true false:不扣费, true:扣费
remain long 1305 按天计算剩余调用次数
msg string 查询成功 参见错误码-系统级错误码
result object {...} 查询结果

(2)业务返回参数

服务器返回的识别结果采用json格式:

名称 类型 示例值 描述
request_id string 56a847e6-84c0-4c01-bf4b-d566f2d2dd11 请求id
status int 0 参见错误码-业务级错误码
index int -1 返回结果编号,负数表示全部最终结果
message string 语音数据为空 参见错误码-业务级错误码
content object {...} 识别结果

2. 返回示例

 {  "code": "10000",  "charge": false,  "remain": 0,  "msg": "查询成功",  "result": {  "request_id": "56a847e6-84c0-4c01-bf4b-d566f2d2dd11",  "status": 0,  "index": -1,  "message": "",  "content": [  {  "text": "你好 京东"  }  ]  } } 

更新时间:2020-04-28 21:14:25
文档反馈 docs feedback