1. 简介
讯飞开放平台通过 REST API 的方式给开发者提供语音转写的 HTTP 接口,基于该接口,开发者可以获取开发平台的语音转写能力,方便开发者使用自己熟悉的编程语言快速集成。
2. 接口说明
转写 API 包括以下接口: 预处理、 文件分片上传、 合并文件、 查询处理进度、 获取结果。
- 预处理 /prepare:
- 文件分片上传 /upload:
- 合并文件 /merge:
- 查询处理进度 /getProgress:
- 获取结果 /getResult:
通用返回说明:
参数 | 类型 | 说明 |
---|---|---|
ok | int | 调用成功标志(0:成功,-1:失败) |
err_no | int | 错误码,详见附录错误码 |
failed | string | 错误描述(null:未出错) |
data | string | 数据,具体含义见各接口返回说明(null:无返回值) |
task_id | string | 任务id,此字段只在主动回调的结果中存在 |
2.1. 接口调用流程
2.1.1. 预处理接口
说明:第一步调用预处理接口,上传待转写音频文件的基本信息(文件名、大小)和分片信息(若无需分片,slice_num=1)和相关的可配置参数。调用成功,返回任务ID(task_id,转写任务的唯一标识),是后续接口的必传参数。
URL
POST http[s]://raasr.xfyun.cn/api/prepare
请求头
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
参数说明
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
app_id | string | 是 | 讯飞开放平台应用ID | 595f23df |
signa | string | 是 | 加密数字签名(基于HMACSHA1算法,可参考实时转写生成方式或页面下方demo) | BFQEcN3SgZNC4eECvq0LFUPVHvI= |
ts | string | 是 | 当前时间戳,从1970年1月1日0点0分0秒开始到现在的秒数 | 1512041814 |
file_len | string | 是 | 文件大小(单位:字节) | 160044 |
file_name | string | 是 | 文件名称(带后缀) | lfasr_audio.wav |
slice_num | int | 是 | 文件分片数目(时长小于 5 min 音频,不建议分片,此时slice_num=1) | 1 |
check_length | double | 否 | 音频的时长(单位:秒), 用户校验剩余时长是否充足 | 29.0 |
lfasr_type | string | 否 | 转写类型,可选值: 0(格式包括 wav,flac,opus,mp3,m4a),默认0 | 0 |
has_participle | string | 否 | 转写结果是否包含分词信息 | false或true, 默认false |
has_seperate | string | 否 | 转写结果中是否包含发音人分离信息 | false或true,默认为false |
max_alternatives | string | 否 | 转写结果中最大的候选词个数 | 默认:0,最大不超过5 |
speaker_number | string | 否 | 发音人个数,可选值:0-10,0表示盲分 | 默认:2(适用通话时两个人对话的场景) |
has_sensitive | string | 否 | 是否需要对转写结果进行敏感词检测 | false或true, 默认:false |
sensitive_type | string | 否 | 敏感词检测类型 | 需要进行敏感词检测(has_sensitive为true)时必传,0(默认词库)或1(自定义敏感词) |
keywords | string | 否 | 自定义的敏感词 | 敏感词检测类型为1时必传,格式:科大讯飞,语音转写(每个词用英文逗号分割,整个字符串长度不超过256) |
注: 标准版和电话版本的已经合并,现在购买的都是标准版的订单,lfasr_type传0即可,发音人分离可通过"has_seperate=true"和"speaker_number=个数"来配置。
返回值
成功
{
"ok":0,
"err_no":0,
"failed":null,
"data":"383e72a47557490aa05a344074117a9d"
}
失败
{
"ok":-1,
"err_no":26601,
"failed":"非法应用信息",
"data":null
}
结果说明
调用成功,data即为taskId(任务ID),是后续接口的必传参数。
2.1.2. 文件分片上传接口
说明:预处理成功,调用文件上传接口,按预处理设置的分片信息(slice_num)依次上传音频切片(文件以二进制方式读取上传),直到全部切片上传成功(如预处理时 slice_num=2,则需将音频切分成两部分,slice_id=aaaaaaaaaa和aaaaaaaaab,并按顺序调用该接口)。上一切片成功上传,才可进行下一切片的上传操作。调用过程中若出现异常,可重试若干次。
url
POST http[s]://raasr.xfyun.cn/api/upload
请求头
Content-Type: multipart/form-data;
参数说明
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
app_id | string | 是 | 讯飞开放平台应用ID | 595f23df |
signa | string | 是 | 加密数字签名 | BFQEcN3SgZNC4eECvq0LFUPVHvI= |
ts | string | 是 | 时间戳 | 1512041814 |
task_id | string | 是 | 任务ID(预处理接口返回值) | 4b705edda27a4140b31b462df0033cfa |
slice_id | string | 是 | 分片序号 | aaaaaaaaaa,aaaaaaaaab |
content | 字节数组 | 是 | 分片文件内容 |
返回值
成功
{
"ok":0,
"err_no":0,
"failed":null,
"data":null
}
失败
{
"ok":-1,
"err_no":26602,
"failed":"任务ID不存在",
"data":null
}
slice_id生成代码(python)示例:
class SliceIdGenerator:
"""slice id生成器"""
def __init__(self):
self.__ch = 'aaaaaaaaa`'
def getNextSliceId(self):
ch = self.__ch
j = len(ch) - 1
while j >= 0:
cj = ch[j]
if cj != 'z':
ch = ch[:j] + chr(ord(cj) + 1) + ch[j+1:]
break
else:
ch = ch[:j] + 'a' + ch[j+1:]
j = j -1
self.__ch = ch
return self.__ch
注:每个转写任务上传开始前创建一个SliceIdGenerator,根据分片的顺序依次调用getNextSliceId生成对应的slice_id
2.1.3. 合并文件接口
说明:全部文件切片上传成功后,调用该接口,通知服务端进行文件合并与转写操作。该接口不会返回转写结果,而是通知服务端将任务列入转写计划。转写的结果通过 getResult 接口获取。
url
POST http[s]://raasr.xfyun.cn/api/merge
请求头
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
参数说明
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
app_id | string | 是 | 讯飞开放平台应用ID | 595f23df |
signa | string | 是 | 加密数字签名 | BFQEcN3SgZNC4eECvq0LFUPVHvI= |
ts | string | 是 | 时间戳 | 1512041814 |
task_id | string | 是 | 任务ID(预处理接口返回值) | 4b705edda27a4140b31b462df0033cfa |
返回值
成功
{
"ok":0,
"err_no":0,
"failed":null,
"data":null
}
失败
{
"ok":-1,
"err_no":26602,
"failed":"任务ID不存在",
"data":null
}
2.1.4. 查询处理进度接口
说明:在调用方发出合并文件请求后,服务端已将任务列入计划。在获取结果前,调用方需轮询该接口查询任务当前状态。当且仅当任务状态=9(转写结果上传完成),才可调用获取结果接口获取转写结果。轮询策略由调用方决定,建议每隔10分钟轮询一次。状态码说明见附录。
url
POST http[s]://raasr.xfyun.cn/api/getProgress
请求头
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
参数说明
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
app_id | string | 是 | 讯飞开放平台应用ID | 595f23df |
signa | string | 是 | 加密数字签名 | BFQEcN3SgZNC4eECvq0LFUPVHvI= |
ts | string | 是 | 时间戳 | 1512041814 |
task_id | string | 是 | 任务ID(预处理接口返回值) | 4b705edda27a4140b31b462df0033cfa |
返回值
成功
{
"ok":0,
"err_no":0,
"failed":null,
"data":"{\"desc\":\"任务创建成功\",\"status\":0}"
}
失败
{
"ok":-1,
"err_no":26640,
"failed":"文件上传失败",
"data":null
}
处理流程
2.1.5. 获取结果接口
说明:当任务处理进度状态=9(见查询处理进度接口),调用该接口获取转写结果。这是转写流程的最后一步。转写结果各字段的详细说明见转写结果说明文档。服务端也支持主动回调,转写完成之后主动发送转写结果到用户配置的回调地址,配置回调地址请联系技术支持。
url
POST http[s]://raasr.xfyun.cn/api/getResult
请求头
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
参数说明
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
app_id | string | 是 | 讯飞开放平台应用ID | 595f23df |
signa | string | 是 | 加密数字签名 | BFQEcN3SgZNC4eECvq0LFUPVHvI= |
ts | string | 是 | 时间戳 | 1512041814 |
task_id | string | 是 | 任务ID(预处理接口返回值) | 4b705edda27a4140b31b462df0033cfa |
返回值
成功
{
"ok":0,
"err_no":0,
"failed":null,
"data":"[{\"bg\":\"0\",\"ed\":\"4950\",\"onebest\":\"科大讯飞是中国最大的智能语音技术提供商。\",\"speaker\":\"0\"}]"
}
失败
{
"ok":-1,
"err_no":26601,
"failed":"非法应用信息",
"data":null
}
3. 附录
3.1. 转写结果字段说明
字段名 | 说明 |
---|---|
bg | 句子相对于本音频的起始时间,单位为ms |
ed | 句子相对于本音频的终止时间,单位为ms |
onebest | 句子内容 |
si | 句子标识,相同si表示同一句话,从0开始 |
speaker | 说话人编号,从1开始,未开启说话人分离时speaker都为0 |
wordsResultList | 分词列表,开启分词或者多候选词时才有 |
alternativeList | 多候选列表,按置信度排名,开启多候选词之后才有 |
wordBg | 词相对于本句子的起始帧,其中一帧是10ms |
wordEd | 词相对于本句子的终止帧,其中一帧是10ms |
wordsName | 词内容 |
wc | 句子置信度,范围为[0,1] |
wp | 词属性,n代表普通词,r代表人名,d代表数字,m代表量词,s代表顺滑词,t代表地名&多音字,p代表标点,g代表分段标识 |
3.2. 错误码
错误码 | 错误码描述 |
---|---|
0 | 成功 |
26000 | 转写内部通用错误 |
26100 | 转写配置文件错误 |
26101 | 转写配置文件app_id/secret_key为空 |
26102 | 转写配置文件lfasr_host错误 |
26103 | 转写配置文件file_piece_size错误 |
26104 | 转写配置文件file_piece_size建议设置10M~30M之间 |
26105 | 转写配置文件store_path错误,或目录不可读写 |
26201 | 转写参数上传文件不能为空或文件不存在 |
26202 | 转写参数类型不能为空 |
26203 | 转写参数客户端生成签名错误 |
26301 | 转写断点续传持久化文件读写错误 |
26302 | 转写断点续传文件夹读写错误 |
26303 | 转写恢复断点续传流程错误,请见日志 |
26401 | 转写上传文件路径错误 |
26402 | 转写上传文件类型不支持错误 |
26403 | 转写本地文件上传超过限定大小500M |
26404 | 转写上传文件读取错误 |
26500 | HTTP请求失败 |
26501 | 转写获取版本号接口错误 |
26502 | 转写预处理接口错误 |
26503 | 转写上传文件接口错误 |
26504 | 转写合并文件接口错误 |
26505 | 转写获取进度接口错误 |
26506 | 转写获取结果接口错误 |
26600 | 转写业务通用错误 |
26601 | 非法应用信息 |
26602 | 任务ID不存在 |
26603 | 接口访问频率受限(默认1秒内不得超过20次) |
26604 | 获取结果次数超过限制 |
26605 | 任务正在处理中,请稍后重试 |
26606 | 空音频,请检查 |
26610 | 请求参数错误 |
26621 | 预处理文件大小受限(500M) |
26622 | 预处理音频时长受限(5小时) |
26623 | 预处理音频格式受限 |
26625 | 预处理服务时长不足。您剩余的可用服务时长不足,请移步产品页http://www.xfyun.cn/services/lfasr 进行购买或者免费领取 |
26631 | 音频文件大小受限(500M) |
26632 | 音频时长受限(5小时) |
26633 | 音频服务时长不足。您剩余的可用服务时长不足,请移步产品页http://www.xfyun.cn/services/lfasr 进行购买或者免费领 |
26634 | 文件下载失败 |
26635 | 文件长度校验失败 |
26640 | 文件上传失败 |
26641 | 上传分片超过限制 |
26642 | 分片合并失败 |
26643 | 计算音频时长失败,请检查您的音频是否加密或者损坏 |
26650 | 音频格式转换失败,请检查您的音频是否加密或者损坏 |
26660 | 计费计量失败 |
26670 | 转写结果集解析失败 |
26680 | 引擎处理阶段错误 |
3.3. 任务状态码
状态ID | 状态描述 |
---|---|
0 | 任务创建成功 |
1 | 音频上传完成 |
2 | 音频合并完成 |
3 | 音频转写中 |
4 | 转写结果处理中 |
5 | 转写完成 |
9 | 转写结果上传完成 |
3.4. 调用示例
Copyright © iflytek.com 2018 all right reserved,powered by Gitbook该文件修订时间:2019-05-07 07:12:51