# 录音文件转写大模型

# 1. 接口说明

注意:该接口可正式使用。如您需要申请使用,请通过讯飞开放平台相关渠道领取免费额度或开通服务,确保获取有效的API密钥(AppID、APIKey、APISecret)后再调用。

该接口用于将音频文件(如WAV、MP3格式)转换为文本,支持最长音频时长需参考讯飞平台具体限制(示例中音频文件大小对应合理时长),适用于语音内容存档、字幕生成、语音指令识别等场景。

# 2. 请求说明

内容 说明
请求协议 HTTPS(为保障数据安全,强制使用HTTPS)
请求地址 https://office-api-ist-dx.iflyaisol.com/v2/upload
接口鉴权 签名机制(基于HMAC-SHA1算法),详情请参照下方接口鉴权
字符编码 UTF-8
响应格式 统一采用JSON格式
开发语言 任意(支持发起HTTP POST请求的语言,如Python、Java、JavaScript等)
音频属性 采样率:16kHz或8kHz;位长:16bit;声道:单声道(需与音频文件实际属性匹配)
音频格式 WAV、MP3(其他格式需提前确认平台支持情况)
音频文件大小 示例中文件大小为3136940字节(约3MB,对应16kHz、16bit、单声道WAV格式时长约16秒),具体最大限制以讯飞平台文档为准

# 3. 接口鉴权

接口通过请求头上传 signature 鉴权参数,具体生成方式如下:

# 3.1 签名生成流程

# 3.1.1 参数处理

  • 排除待签名参数中的"signature"字段
  • 对剩余参数按参数名进行自然排序(与Java TreeMap排序规则一致)

# 3.1.2 构建基础字符串(baseString)

  • 对排序后的每个参数的键(key)和值(value)分别进行URL编码
    • 编码方式:标准URL编码,不保留特殊字符
    • 空值或空字符串不参与签名
  • 编码后的键值对格式:encoded_key=encoded_value
  • 所有键值对用&连接,形成完整baseString

# 3.1.3 生成签名

  • 使用HMAC-SHA1算法对baseString进行加密
    • 密钥:access_key_secret(需UTF-8编码)
    • 待加密内容:baseString(需UTF-8编码)
  • 对加密结果进行Base64编码,得到最终签名(signature)

# 3.2 鉴权示例代码

public static String signature(String accessKeySecret, Map<String, String> queryParam) throws Exception {
    TreeMap<String, String> treeMap = new TreeMap<>(queryParam);
    treeMap.remove("signature");
    StringBuilder builder = new StringBuilder();
    for (Map.Entry<String, String> entry : treeMap.entrySet()) {
        String value = entry.getValue();
        if (value != null && !value.isEmpty()) {
            String encode = URLEncoder.encode(value, StandardCharsets.UTF_8.name());
            builder.append(entry.getKey()).append("=").append(encode).append("&");
        }
    }
    if (builder.length() > 0) {
        builder.deleteCharAt(builder.length() - 1);
    }
    String baseString = builder.toString();
    System.out.println("baseString:" + baseString);
    Mac mac = Mac.getInstance("HmacSHA1");
    SecretKeySpec keySpec = new SecretKeySpec(accessKeySecret.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8.name());
    mac.init(keySpec);
    byte[] signBytes = mac.doFinal(baseString.getBytes(StandardCharsets.UTF_8));
    return Base64.getEncoder().encodeToString(signBytes);
}

# 4. 核心接口说明

非实时语音转写流程分为两步:音频上传(获取订单ID)和结果查询(通过订单ID获取转写文本),需依次调用两个接口。

# 4.1 音频上传接口(/v2/upload)

# 4.1.1 接口功能

上传音频文件至讯飞服务器,服务器接收后返回唯一orderId(订单ID),用于后续查询转写结果。

# 4.1.2 请求方式

HTTP POST

# 4.1.3 请求头

请求头字段 类型 是否必传 说明
Content-Type string 固定值:application/octet-stream(表示上传二进制音频文件)
signature string 基于请求参数计算的签名(签名生成规则见接口鉴权

# 4.1.4 请求参数(URL查询参数)

所有参数需拼接在URL后,且部分参数需参与签名计算(未编码原始值),最终URL参数需做URL编码(特殊字符如:%3A+%2B)。

参数名称 类型 是否必传 取值范围/格式 描述
appId string 讯飞平台分配的唯一应用ID(如37f3f2b5) 用于标识调用的应用,需从控制台获取
accessKeyId string 讯飞平台分配的访问密钥ID(如a296be0df88f701ec2e4882be7727568) 用于签名计算的身份标识,需从控制台获取
dateTime string yyyy-MM-dd'T'HH:mm:ss±HHmm(如2025-09-08T22:58:29+0800) 请求发起的本地时间(带时区偏移,东八区为+0800),需严格匹配格式
signatureRandom string 16位大小写字母+数字组合(如moI5WkopgjL1EL5Y) 随机字符串,用于增加签名随机性,每次请求需重新生成
fileSize string 正整数(单位:字节) 音频文件的实际大小,需通过代码获取文件属性计算(如3136940)
fileName string 音频文件名(如lfasr_涉政.wav) 需包含文件后缀,用于服务器识别音频格式
duration string 正整数(单位:毫秒) 音频时长,需与实际音频时长一致
language string 可选范围:
autodialect
autominor
autodialect:支持中英 + 202 种方言免切识别
autominor:支持 37 个语种免切识别 (暂需联系人工对接)
pd string 领域参数 领域个性化参数,优化特定领域识别效果: 法律:court、 金融:finance、 医疗:medical、 科技:tech、 体育:sport、 教育:edu、 运营商:isp、 政府:gov、 游戏:game、 电商:ecom、 军事:mil、 企业:com、 生活:life、 娱乐:ent、 人文历史:culture、 汽车:car
callbackUrl String 回调地址 订单完成时回调该地址通知完成 支持get请求,我们会在回调地址中拼接参 http://{ip}/{port}?xxx&OrderId=xxxx&status=1 参数: orderId 为订单号 status 为订单状态 1-转写识别成功 -1转写识别失败 长度限制512
audioMode String 转写音频上传方式 fileStream: 文件流
urlLink:音频url外链
默认为fileStream
audioUrl String 音频url外链地址 当audioMode为urlLink时该值必传, 如果url中包含特殊字符,audioUrl需要UrlEncode(不包含签名时需要的UrlEncode) 长度限制512
eng_smoothproc boolean 顺滑开关 true:表示开启
false:表示关闭
默认为true
eng_colloqproc boolean 口语规整开关 口语规整是顺滑的升级版本 true:表示开启 false:表示关闭 默认为false 1.当eng_smoothproc为false,eng_colloqproc为false时只返回原始转写结果 2.当eng_smoothproc为true,eng_colloqproc为false时返回包含顺滑词的结果和原始结果 3. 当eng_smoothproc为true,eng_colloqproc为true时返回包含口语规整的结果和原始结果 4. 当eng_smoothproc为false,eng_colloqproc为true时返回包含口语规整的结果和原始结果
eng_vad_mdn int 远近场模式 1:远场模式
2:近场模式
默认为1

# 转写结果异步回调

当订单转写流程结束时会回调用户(如果录音文件转写接口upload传了callbackUrl),会把订单号和订单状态返回,具体的格式和参数说明如下:

GET http://ip:prot/server/xxx?orderId=DKHJQ202004291620042916580FBC96690001F&status=1
# 参数说明
参数名 类型 是否必传 描述
orderId string 转写订单号,用于查询结果
status string 订单状态
-1:失败
1:成功
注:
1、成功需要调用getResult接口查询转写结果数据;
2、如果任务包含翻译环节且任务在转码、转写环节失败不会进行翻译的回调;
resultType string 回调任务类型:
为空或不包含该字段时为转写回调
转写:transfer;
翻译:translate;
质检:predict;
语音语种识别:analysis;

# 4.1.5 请求示例

https://office-api-ist-dx.iflyaisol.com/v2/upload?accessKeyId=testaccesskeyid&dateTime=2018-04-13T20%3A22%3A53%2B0800&duration=56352&fileName=1%E5%88%86%E9%92%9F%E9%9F%B3%E9%A2%91.mp3&fileSize=397144&language=en&signatureRandom=a0289d60-26b3-4601-ad18-d2179dc95fd2

# 4.1.6 成功响应示例

{
    "descInfo": "success", 
    "code": "000000", 
    "content": {
        "orderId": "DKHJQ2020042816200428163809B030D800083", //订单id ,用于查询转写结果
        "taskEstimateTime": 128000  // 预估转写完成时长
    }
}

# 响应参数通用说明

参数名称 类型 描述
code int 错误码:"000000"表示请求成功(业务状态需看content中的status);其他值表示请求失败
descInfo string 描述信息:成功时为"success",失败时为具体错误原因(如"dateTime format must be [yyyy-MM-dd'T'HH:mm:ssZ]")
content object 业务数据:返回orderId (订单唯一标识,用户后续获取转写结果)和 taskEstimateTime(预计转写时长)

# 4.1.7 失败响应示例

{
    "code": 100003,
    "descInfo": "dateTime format must be [yyyy-MM-dd'T'HH:mm:ssZ]" // 时间格式错误提示
}

# 4.2 结果查询接口(/v2/getResult)

# 4.2.1 接口功能

通过音频上传接口返回的orderId,查询音频转写的进度和最终结果(支持轮询,直到转写完成)。

# 4.2.2 请求方式

HTTP POST

# 4.2.3 请求头

请求头字段 类型 是否必传 说明
Content-Type string 固定值:application/json(表示请求体为JSON格式)
signature string 基于请求参数计算的签名(签名生成规则与上传接口一致,见接口鉴权

# 4.2.4 请求参数(URL查询参数)

所有参数需拼接在URL后,参与签名计算(未编码原始值),最终需做URL编码。

参数名称 类型 是否必传 取值范围/格式 描述
accessKeyId string 与上传接口一致的访问密钥ID 身份标识,用于签名计算
dateTime string 与上传接口格式一致(yyyy-MM-dd'T'HH:mm:ss±HHmm 查询请求发起的时间,需重新生成(与上传接口的dateTime不同)
signatureRandom string 与上传接口一致的16位随机字符串 需与上传接口使用相同的随机串,确保请求关联性
orderId string 上传接口返回的订单ID(如8a9f9999-xxxx-xxxx-xxxx-123456789abc) 关联需查询的音频转写任务
resultType string 固定值:transfer,predict 表示查询转写结果,不可修改

# 4.2.5 请求体

空JSON对象(需传递{},不可省略):

https://ai-test-integ-env.iflyrec.com/v2/getResult?accessKeyId=testaccesskeyid&dateTime=2018-02-27T16%3A54%3A01%2B0800&orderId=DKHJQ20180208100000DD&signatureRandom=2bec2cc6-186a-414c-8c68-5d30a6fb14bb

# 4.2.6 处理中响应示例

# 处理中的返回结果:
{
    "code": "000000",
    "descInfo": "success",
    "content": {
        "orderInfo": {
            "orderId": "DKHJQ20250909161126126fxIy4kSppb6zi46H",
            "failType": 0,
            "status": 3,
            "originalDuration": 98028
        },
        "orderResult": "",
        "taskEstimateTime": 25000
    }
}
# 处理完成的返回结果:
{
"content": {
"orderResult": "{\"lattice\":[{\"json_1best\":\"{\\\"st\\\":{\\\"pa\\\":\\\"0\\\",\\\"rt\\\":
[{\\\"ws\\\":[{\\\"cw\\\":[{\\\"w\\\":\\\"为
\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"0.7511\\\"}],\\\"wb\\\":22,\\\"we\\\":75}]}],\\\"bg\\\":\\\"88
0\\\",\\\"rl\\\":\\\"1\\\",\\\"ed\\\":\\\"1680\\\"}}\"},{\"json_1best\":\"{\\\"st\\\":
{\\\"pa\\\":\\\"0\\\",\\\"rt\\\":[{\\\"ws\\\":[{\\\"cw\\\":[{\\\"w\\\":\\\"喂
\\\",\\\"wp\\\":\\\"s\\\",\\\"wc\\\":\\\"0.9806\\\"}],\\\"wb\\\":19,\\\"we\\\":52},{\\\"cw\\\":
[{\\\"w\\\":\\\"你好
\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":53,\\\"we\\\":111},{\\\"cw\\\":
[{\\\"w\\\":\\\"。
\\\",\\\"wp\\\":\\\"p\\\",\\\"wc\\\":\\\"0.0000\\\"}],\\\"wb\\\":111,\\\"we\\\":111}]}],\\\"bg\\\":\\\"
2390\\\",\\\"rl\\\":\\\"1\\\",\\\"ed\\\":\\\"3640\\\"}}\"},{\"json_1best\":\"{\\\"st\\\":
{\\\"pa\\\":\\\"0\\\",\\\"rt\\\":[{\\\"ws\\\":[{\\\"cw\\\":[{\\\"w\\\":\\\"舒
\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"0.8630\\\"}],\\\"wb\\\":20,\\\"we\\\":44},{\\\"cw\\\":
[{\\\"w\\\":\\\"高\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":45,\\\"we\\\":65},
{\\\"cw\\\":[{\\\"w\\\":\\\"生
\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"0.2461\\\"}],\\\"wb\\\":66,\\\"we\\\":79},{\\\"cw\\\":
[{\\\"w\\\":\\\"先生
\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"0.9709\\\"}],\\\"wb\\\":80,\\\"we\\\":109},{\\\"cw\\\":
[{\\\"w\\\":\\\"是\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":110,\\\"we\\\":118},
{\\\"cw\\\":[{\\\"w\\\":\\\"吧
\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":119,\\\"we\\\":138},{\\\"cw\\\":
[{\\\"w\\\":\\\"?\\\",\\\"wp\\\":\\\"p\\\",\\\"wc\\\":\\\"0.0000\\\"}],\\\"wb\\\":138,\\\"we\\\":138},
{\\\"cw\\\":[{\\\"w\\\":\\\"喂
\\\",\\\"wp\\\":\\\"s\\\",\\\"wc\\\":\\\"0.9078\\\"}],\\\"wb\\\":139,\\\"we\\\":144}]}],\\\"bg\\\":\\\"
5130\\\",\\\"rl\\\":\\\"1\\\",\\\"ed\\\":\\\"7200\\\"}}\"},{\"json_1best\":\"{\\\"st\\\":
{\\\"pa\\\":\\\"0\\\",\\\"rt\\\":[{\\\"ws\\\":[{\\\"cw\\\":[{\\\"w\\\":\\\"为
\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"0.7511\\\"}],\\\"wb\\\":3,\\\"we\\\":115},{\\\"cw\\\":
[{\\\"w\\\":\\\"。
\\\",\\\"wp\\\":\\\"p\\\",\\\"wc\\\":\\\"0.0000\\\"}],\\\"wb\\\":115,\\\"we\\\":115}]}],\\\"bg\\\":\\\"
7200\\\",\\\"rl\\\":\\\"1\\\",\\\"ed\\\":\\\"8650\\\"}}\"},{\"json_1best\":\"{\\\"st\\\":
{\\\"pa\\\":\\\"0\\\",\\\"rt\\\":[{\\\"ws\\\":[{\\\"cw\\\":[{\\\"w\\\":\\\"喂
\\\",\\\"wp\\\":\\\"s\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":64,\\\"we\\\":88},{\\\"cw\\\":
[{\\\"w\\\":\\\"听\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":89,\\\"we\\\":106},
{\\\"cw\\\":[{\\\"w\\\":\\\"得到
\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":107,\\\"we\\\":128},{\\\"cw\\\":
[{\\\"w\\\":\\\"吗\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"1.0000\\\"}],\\\"wb\\\":129,\\\"we\\\":166},
{\\\"cw\\\":[{\\\"w\\\":\\\"?
\\\",\\\"wp\\\":\\\"p\\\",\\\"wc\\\":\\\"0.0000\\\"}],\\\"wb\\\":166,\\\"we\\\":166},{\\\"cw\\\":
[{\\\"w\\\":\\\"一\\\",\\\"wp\\\":\\\"n\\\",\\\"wc\\\":\\\"0.8993\\\"}],\\\"wb\\\":167,\\\"we\\\":169},
{\\\"cw\\\":[{\\\"w\\\":\\\"。
\\\",\\\"wp\\\":\\\"p\\\",\\\"wc\\\":\\\"0.0000\\\"}],\\\"wb\\\":169,\\\"we\\\":169},{\\\"cw\\\":
[{\\\"w\\\":\\\"\\\",\\\"wp\\\":\\\"g\\\",\\\"wc\\\":\\\"0.0000\\\"}],\\\"wb\\\":169,\\\"we\\\":169}]}],
\\\"bg\\\":\\\"9330\\\",\\\"rl\\\":\\\"1\\\",\\\"ed\\\":\\\"11240\\\"}}\"}]}", 
"orderInfo": {
"failType": 0, 
"status": 4, 
"orderId": "DKHJQ202003171520031715109E1FF5E50001D", 
"originalDuration": 14000
}
}, 
"descInfo": "success", 
"code": "000000"
}

# 响应参数说明

# 返回参数
参数名​ 类型​ 必传​ 描述​
orderResult​ String​ 否​ 转写结果​
orderInfo​ Object​ 是​ 转写订单信息​
taskEstimateTime​ Int​ 是​ 订单预估耗时,单位毫秒​
transResult​ List 否​ 翻译结果,请参考TransResult​
predictResult​ String​ 否​ 质检结果,请参考PredictResult​
# orderInfo 对象
参数名​ 类型​ 必传​ 描述​
failType - - 5:音频校验失败(duration对应的值与真实音频时长不符合要求)
11:upload接口创建任务时,未开启质检或者翻译能力;备注: resultType=translate,未开启翻译能力;resultType=predict,未开启质检能力
12:音频语种分析失败
99:其他
orderId​ String​ 是​ 订单Id​
originalDuration​ Long​ 是​ 原始音频时长,单位毫秒​
expireTime​ Long​ 否​ 订单结果过期时间,单位毫秒​
备注: 1、查询转写结果和翻译结果时返回订单结果过期时间,质检结果不返回;2、订单转写成功或者翻译成功时返回过期时间字段
language​ String​ 否​ 开启了语音语种分析能力,resultType传入的为analysis时返回识别的语种​
# orderResult文本内容
参数名​ 类型​ 必传​ 描述​
lattice​ List 是​ 做顺滑功能的识别结果​
lattice2​ List 是​ 未做顺滑功能的识别结果,当开启顺滑和后语规整后orderResult才返回lattice2字段(需要开通权限)​
label​ Object​ 否​ 转写结果标签信息,用于补充转写结果相关信息,目前开启双通道转写时该对象会返回,标记转写结果角色和声道的对应关系​
# TransResult
参数名​ 类型​ 必传​ 描述​
segId​ String​ 是​ 段落序号​
dst​ String​ 是​ 翻译结果​
bg​ int​ 否​ 开始时间​
ed​ int​ 否​ 结束时间​
tags​ List 否​ 标签​
roles​ List 否​ 角色​
# PredictResult对象
参数名​ 类型​ 必传​ 描述​
keywords​ List 是​ 关键词相关信息,请参考:KeyWord对象​
# KeyWord对象
参数名​ 类型​ 必传​ 描述​
word​ String​ 是​ 质检关键词内容​(开启质检后会输出内容)
label​ String​ 是​ 词库标签信息​
timeStamp List 是​ 质检关键词出现位置时间戳信息,请参考TimeStamp对象​
# TimeStamp对象
参数名​ 类型​ 必传​ 描述​
bg​ Long​ 是​ 词出现的开启位置时间戳​
ed​ Long​ 是​ 词出现的结束位置时间戳​
# Lattice包含的集合对象
参数名​ 类型​ 必传​ 描述​
json_1best​ String​ 是​ 单个vad的结果的json内容​
# json_1best对应的对象
参数名​ 类型​ 必传​ 描述​
st​ Object​ 是​ 单个句子的结果对象​
# st对象
参数名​ 类型​ 描述​
bg​ String​ 单个句子的开始时间,单位毫秒​
ed​ String​ 单个句子的结束时间,单位毫秒​
rl​ String​ 分离的角色编号,取值正整数,需开启角色分离的功能才返回对应的分离角色编号​
# ws对象(词语候选识别结果)
参数名​ 类型​ 必传​ 描述​
wb​ Long​ 是​ 词语开始的帧数(注一帧10ms),位置是相对bg​
we​ Long​ 是​ 词语结束的帧数(注一帧10ms),位置是相对bg​
cw​ List 否​ 词语候选识别结果集合​
# cw包含的对象
参数名​ 类型​ 必传​ 描述​
w​ String​ 是​ 识别结果​
wp​ String​ 是​ 词语的属性,n:正常词;s:顺滑;p:标点;g:分段(按此标识进行分段)​
# label 对象
参数名​ 类型​ 必传​ 描述​
rl_track​ List 否​ 双通道模式转写结果中角色和音频轨道对应信息,开启分轨模式该字段会返回​
# rl_track对象
参数名 描述
rl 分离的角色编号,取值正整数​
track​ 音频轨道信息,L:左声道,R:右声道​

# 5. 代码示例

Python 示例代码 (opens new window)

# 6.错误码说明

# 错误码对照表

错误码 描述
000000 成功
999999 未知异常
000001 参数错误或不完整
000002 accessKeyId不存在
1000000 不支持的操作
100001 订单不存在或状态异常
100002 订单音频未上传
100003 参数错误
100004 查询订单错误
100005 查询音频为空
100006 上传音频异常
100007 权限错误
100008 签名异常-请求时间超过限制
100009 签名校验不通过
100012 请求超过频率限制
100013 订单未完成
100015 热词必须是中文
100016 热词超出长度限制
100017 热词超出数量限制
100018 热词分隔符不能连续出现
100019 热词验证失败
100020 语言验证失败
100021 热词上传失败
100022 热词不断重复
100023 热词保存失败
100024 热词为空
100025 热词ID未知
100026 时间格式必须为:yy-MM-dd
100027 patch ID未知
100028 Patch验证失败
100029 文件已存在
100030 未知的文件格式
100031 多候选ID未知
100032 多候选验证失败
100033 无效的角色分离个数,角色分离个数范围:[0-10]
100034 更改AccesskeySecret失败
100037 非法的订单号
100038 删除订单验证失败
100039 订单为空
100040 订单个数超出限制
100042 外链地址无效
100041 切换通道失败
100043 通道类型验证失败
100044 通道类型不存在
在线咨询
体验中心