Skip to content
当前页面

语音转写 API 文档

接口说明

语音转写:(Long Form ASR)基于深度全序列卷积神经网络,将长段音频(5 小时以内)数据转换成文本数据,为信息处理和数据挖掘提供基础。

接口要求

集成语音转写 API 时,需按照以下要求。

请求地址:

注:服务器 IP 不固定,为保证您的接口稳定,请勿通过指定 IP 的方式调用接口,使用域名方式调用_

http[s]: //raasr.xfyun.cn/api/xxx
内容说明
请求协议http[s](为提高安全性,强烈推荐 https)
请求方式POST
接口鉴权签名机制
字符编码UTF-8
响应格式统一采用 JSON 格式
开发语言任意
音频属性采样率 16k 或 8k、位长 8bits 或 16bits、单声道&多声道
音频格式wav/flac/opus/m4a/mp3
音频大小不超过 500M
音频时长不超过 5 小时,建议 5 分钟以上
语言种类中文普通话、英文
转写结果保存时长30 天
获取结果次数不得超过 100 次
SLA 保障时长返回时长最大不超过 12 小时

接口调用流程

转写 API 包括以下接口: 预处理、 文件分片上传、 合并文件、 查询处理进度、 获取结果。

  • 预处理 /prepare:
  • 文件分片上传 /upload:
  • 合并文件 /merge:
  • 查询处理进度 /getProgress:
  • 获取结果 /getResult:

转写流程图

通用返回说明:

参数类型说明
okint调用成功标志(0:成功,-1:失败)
err_noint错误码
failedstring错误描述(null:未出错)
datastring数据,具体含义见各接口返回说明(null:无返回值)
task_idstring任务 id,此字段只在主动回调的结果中存在

1、预处理接口

概述

	首先调用预处理接口,上传待转写音频文件的基本信息(文件名、大小)和分片信息(建议分片大小设置为10M,若无需分片,slice_num=1)和相关的可配置参数。
	调用成功,返回任务ID(task_id,转写任务的唯一标识),是后续接口的必传参数。

URL

	POST https://aicp.teamshub.com/sitech/aiopen//file/voice2text

请求头

	Content-Type: application/x-www-form-urlencoded; charset=UTF-8

参数说明

参数类型必须说明
app_idstring应用 ID
signastring加密数字签名
tsstring当前时间戳
file_lenstring文件大小(单位:字节)
file_namestring文件名称(带后缀)
slice_numint文件分片数目(建议分片大小为 10M,若文件<10M,则 slice_num=1)
lfasr_typestring转写类型,默认 0 0: (标准版,格式: wav,flac,opus,mp3,m4a) 2: (电话版,已取消)
has_participlestring转写结果是否包含分词信息
max_alternativesstring转写结果中最大的候选词个数
speaker_numberstring发音人个数,可选值:0-10,0 表示盲分 :发音人分离目前还是测试效果达不到商用标准,如测试无法满足您的需求,请慎用该功能。
has_seperatestring转写结果中是否包含发音人分离信息
role_typestring支持两种参数 1: 通用角色分离 2: 电话信道角色分离(适用于 speaker_number 为 2 的说话场景)
languagestring语种 cn:中英文&中文(默认) en:英文(英文不支持热词)
pdstring垂直领域个性化参数: 法院: court 教育: edu 金融: finance 医疗: medical 科技: tech

返回值

成功

{
  "ok": 0,
  "err_no": 0,
  "failed": null,
  "data": "383e72a47557490aa05a344074117a9d"
}

失败

{
  "ok": -1,
  "err_no": 26601,
  "failed": "非法应用信息",
  "data": null
}

结果说明

调用成功,data 即为 taskId(任务 ID),是后续接口的必传参数。

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_idstring开放平台应用 ID595f23df
signastring加密数字签名,详见下方BFQEcN3SgZNC4eECvq0LFUPVHvI=
tsstring时间戳1512041814
task_idstring任务 ID(预处理接口返回值)4b705edda27a4140b31b462df0033cfa
slice_idstring分片序号aaaaaaaaaa,aaaaaaaaab
content字节数组分片文件内容

signa 生成

① 获取 baseString

	baseString由appid和当前时间戳ts拼接而成;
	假如appid = 595f23df,ts = 1512041814,则baseString = 595f23df1512041814

② 对 baseString 进行 MD5

	假如baseString为上一步生成的595f23df1512041814,MD5之后则为 0829d4012497c14a30e7e72aeebe565e

③ 以 secret key 为 key 对 MD5 之后的 baseString 进行 HmacSHA1 加密,然后再对加密后的字符串进行 base64 编码。

	假如secretkey = d9f4aa7ea6d94faca62cd88a28fd5234,
	MD5之后的baseString为上一步生成的0829d4012497c14a30e7e72aeebe565e,
	则HmacSHA1加密之后再进行base64编码得到的signa为: IrrzsJeOFk1NGfJHW6SkHUoN9CU=

备注:

  • secretkey:接口密钥,在应用中添加语音转写服务后,显示在服务管理页面,请调用方注意保管;
  • signa 的生成公式:HmacSHA1(MD5(appid + ts),secretkey),具体的生成方法详见;

返回值

成功

{
  "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

3、合并文件接口

概述

	全部文件切片上传成功后,调用该接口,通知服务端进行文件合并与转写操作。
	该接口不会返回转写结果,而是通知服务端将任务列入转写计划。转写的结果通过 getResult 接口获取。

url

	POST  http[s]://raasr.xfyun.cn/api/merge

请求头

	Content-Type: application/x-www-form-urlencoded; charset=UTF-8

参数说明

参数类型必须说明示例
app_idstring开放平台应用 ID595f23df
signastring加密数字签名BFQEcN3SgZNC4eECvq0LFUPVHvI=
tsstring时间戳1512041814
task_idstring任务 ID(预处理接口返回值)4b705edda27a4140b31b462df0033cfa

返回值

成功

{
  "ok": 0,
  "err_no": 0,
  "failed": null,
  "data": null
}

失败

{
  "ok": -1,
  "err_no": 26602,
  "failed": "任务ID不存在",
  "data": null
}

4、查询处理进度接口

概述

	在调用方发出合并文件请求后,服务端已将任务列入计划。在获取结果前,调用方需轮询该接口查询任务当前状态。
	当且仅当任务状态=9(转写结果上传完成),才可调用获取结果接口获取转写结果。
	轮询策略由调用方决定,建议每隔10分钟轮询一次。状态码说明见附录。

url

	POST  http[s]://raasr.xfyun.cn/api/getProgress

请求头

	Content-Type: application/x-www-form-urlencoded; charset=UTF-8

参数说明

参数类型必须说明示例
app_idstring开放平台应用 ID595f23df
signastring加密数字签名BFQEcN3SgZNC4eECvq0LFUPVHvI=
tsstring时间戳1512041814
task_idstring任务 ID(预处理接口返回值)4b705edda27a4140b31b462df0033cfa

返回值

成功

{
  "ok": 0,
  "err_no": 0,
  "failed": null,
  "data": "{\"desc\":\"任务创建成功\",\"status\":0}"
}

失败

{
  "ok": -1,
  "err_no": 26640,
  "failed": "文件上传失败",
  "data": null
}

处理流程

转写-查询处理进度流程图

5、获取结果接口

概述

	当任务处理进度状态=9(见查询处理进度接口),调用该接口获取转写结果。这是转写流程的最后一步。
	转写结果各字段的详细说明见转写结果说明文档。
	服务端也支持主动回调,转写完成之后主动发送转写结果到用户配置的回调地址,配置回调地址请联系技术支持。

url

	POST  http[s]://raasr.xfyun.cn/api/getResult

请求头

	Content-Type: application/x-www-form-urlencoded; charset=UTF-8

参数说明

参数类型必须说明示例
app_idstring开放平台应用 ID595f23df
signastring加密数字签名BFQEcN3SgZNC4eECvq0LFUPVHvI=
tsstring时间戳1512041814
task_idstring任务 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
}

附录

转写结果字段说明

字段名说明
bg句子相对于本音频的起始时间,单位为 ms
ed句子相对于本音频的终止时间,单位为 ms
onebest句子内容
speaker说话人编号,从 1 开始,未开启说话人分离时 speaker 都为 0
si句子标识,相同 si 表示同一句话,从 0 开始 注:仅开启分词或者多候选时返回
wordsResultList分词列表 注:仅开启分词或者多候选时返回,且英文暂不支持
alternativeList多候选列表,按置信度排名 注:仅开启分词或者多候选时返回,且英文暂不支持
wordBg词相对于本句子的起始帧,其中一帧是 10ms 注:仅开启分词或者多候选时返回,且英文暂不支持
wordEd词相对于本句子的终止帧,其中一帧是 10ms 注:仅开启分词或者多候选时返回,且英文暂不支持
wordsName词内容 注:仅开启分词或者多候选时返回,且英文暂不支持
wc句子置信度,范围为[0,1] 注:仅开启分词或者多候选时返回,且英文暂不支持
wp词属性,n 代表普通词,r 代表人名,d 代表数字,m 代表量词,s 代表顺滑词(语气词),t 代表地名&多音字,p 代表标点,g 代表分段标识 注:仅开启分词或者多候选时返回

错误码

错误码错误码描述
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转写上传文件读取错误
26500HTTP 请求失败
26501转写获取版本号接口错误
26502转写预处理接口错误
26503转写上传文件接口错误
26504转写合并文件接口错误
26505转写获取进度接口错误
26506转写获取结果接口错误
26600转写业务通用错误
26601非法应用信息
26602任务 ID 不存在
26603接口访问频率受限(默认 1 秒内不得超过 20 次)
26604获取结果次数超过限制,最多 100 次
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引擎处理阶段错误

任务状态码

状态 ID状态描述
0任务创建成功
1音频上传完成
2音频合并完成
3音频转写中
4转写结果处理中
5转写完成
9转写结果上传完成

文档中心