ASR 语音转文字接口文档

概述

说明
Base URL http://asr.aodianyun.com(内网http://asr.asr.svc.cluster.local)
业务统一入口 POST /asr/api,通过 cmd 区分能力
鉴权 access_id + signature(与 MSS 签名算法一致)
请求体 application/x-www-form-urlencoded,字段 parameter=<JSON>

统一响应结构:

{
  "code": 0,
  "message": "ok",
  "data": {}
}
code 含义
0 成功
400 参数/鉴权/业务校验失败
500 服务内部错误

签名算法

  1. 准备业务参数(不含 signature
  2. 按 key 字典序排序
  3. 用与 PHP json_encode(..., JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES) 一致的方式序列化为 JSON
    • 数字保持数字类型(如 user: 41250,不要写成 "41250"
    • 斜杠、中文不转义
  4. 拼接:json字符串 + access_key
  5. 对结果做 MD5,输出 小写 hex,写入 signature

伪代码(PHP):

ksort($param);
unset($param['signature']); // 若已存在则排除
$signature = md5(json_encode($param, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES) . $accessKey);

鉴权相关配置:

配置项 说明
ASR_SERVICE_ACCESS_ID 服务端校验用的 access_id
ASR_SERVICE_ACCESS_KEY 服务端校验用的 access_key

调用方传入的 access_id 必须与服务端配置一致;cmd 必须参与签名。


1. 统一业务接口

POST /asr/api

Content-Type: application/x-www-form-urlencoded

Body:

parameter={"cmd":"...","access_id":"...","user":41250,...,"signature":"..."}

也支持直接 POST 原始 JSON,或 parameter= 前缀的 raw body。

公共字段

字段 类型 必填 说明
cmd string transcribe / recognize / getTask(大小写不敏感)
access_id string 服务 access_id
user int 用户 UIN
signature string 签名

1.1 创建异步转写任务 — cmd=transcribe

创建业务任务并异步处理。若同一 user + file_url 已有最新 completed 记录,直接返回该任务(若传了 callback_url 会异步回调完成结果)。

请求参数

字段 类型 必填 说明
cmd string 固定 transcribe
user int 用户 UIN
file_url string 音视频地址(也可用 fileUrl
callback_url string 完成后回调地址(也可用 callbackUrl
access_id string 鉴权 ID
signature string 签名

请求示例

{
  "cmd": "transcribe",
  "access_id": "ltjg6cblz3y3unjq",
  "user": 41250,
  "file_url": "http://example.com/demo.mp4",
  "callback_url": "https://example.com/asr/callback",
  "signature": "<md5>"
}

curl

curl -X POST "http://localhost:8080/asr/api" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode 'parameter={"cmd":"transcribe","access_id":"...","user":41250,"file_url":"http://example.com/demo.mp4","signature":"..."}'

成功响应

{
  "code": 0,
  "message": "ok",
  "data": {
    "task_id": "3964b16b472748dab5f50d1c75b2f7d0",
    "task_status": "pending",
    "source_url": "http://example.com/demo.mp4",
    "uin": 41250
  }
}
data 字段 说明
task_id 业务任务 ID
task_status 任务状态
source_url 源文件地址
provider 服务商,如 tingwu / mss
uin 用户 UIN

1.2 同步识别 — cmd=recognize

同步等待识别结果返回。不入库、不走异步任务链路。

请求参数

字段 类型 必填 说明
cmd string 固定 recognize
user int 用户 UIN
file_url string 音视频地址
access_id string 鉴权 ID
signature string 签名

请求示例

{
  "cmd": "recognize",
  "access_id": "ltjg6cblz3y3unjq",
  "user": 41250,
  "file_url": "http://example.com/demo.mp4",
  "signature": "<md5>"
}

成功响应

{
  "code": 0,
  "message": "ok",
  "data": {
    "result_text": "识别出的文字内容",
    "uin": 41250
  }
}

1.3 查询任务 — cmd=getTask

task_id 查询异步任务;user 必须与任务归属用户一致。

请求参数

字段 类型 必填 说明
cmd string 固定 getTask
user int 用户 UIN
task_id string 业务任务 ID
access_id string 鉴权 ID
signature string 签名

请求示例

{
  "cmd": "getTask",
  "access_id": "ltjg6cblz3y3unjq",
  "user": 41250,
  "task_id": "3964b16b472748dab5f50d1c75b2f7d0",
  "signature": "<md5>"
}

成功响应(进行中)

{
  "code": 0,
  "message": "ok",
  "data": {
    "task_id": "3964b16b472748dab5f50d1c75b2f7d0",
    "uin": 41250,
    "source_url": "http://example.com/demo.mp4",
    "task_status": "processing",
    "create_time": "2026-08-19T10:00:00Z",
    "update_time": "2026-08-19T10:05:00Z"
  }
}

成功响应(已完成)

{
  "code": 0,
  "message": "ok",
  "data": {
    "task_id": "3964b16b472748dab5f50d1c75b2f7d0",
    "uin": 41250,
    "source_url": "http://example.com/demo.mp4",
    "task_status": "completed",
    "srt_url": "http://ad-asr-oss.aodianyun.com/asr/xxx.srt",
    "result_text": "",
    "create_time": "2026-08-19T10:00:00Z",
    "update_time": "2026-08-19T10:10:00Z"
  }
}

成功响应(失败)

{
  "code": 0,
  "message": "ok",
  "data": {
    "task_id": "3964b16b472748dab5f50d1c75b2f7d0",
    "uin": 41250,
    "source_url": "http://example.com/demo.mp4",
    "task_status": "failed",
    "error": "失败原因",
    "create_time": "2026-08-19T10:00:00Z",
    "update_time": "2026-08-19T10:03:00Z"
  }
}
data 字段 说明
task_id 业务任务 ID
uin 用户 UIN
source_url 源文件地址
task_status 任务状态
srt_url 完成时返回字幕文件 URL
result_text 完成时固定返回空字符串
error 失败时返回错误信息
tingwu_status / tingwu_result 听悟侧状态/结果(如有)
srt_error 字幕相关错误(如有)
create_time / update_time 创建/更新时间

不返回: srt_contentcallback_urltingwu_task_id


任务状态

status 说明
pending 已创建,等待处理
converting ffmpeg 转码中
uploading 上传 OSS 中
submitted 已提交上游识别
processing 上游处理中
completed 完成
failed 失败

常见错误

message 场景
parameter参数不能为空 未传 parameter
parameter JSON无效 JSON 解析失败
access_id参数不能为空 缺 access_id
accessId错误 access_id 与服务端不一致
signature参数不能为空 缺 signature
签名错误 签名计算不一致(常见:缺 cmduser 类型不对)
cmd参数无效 cmd 不是 transcribe / recognize / getTask
用户信息错误 user/uin 缺失或 ≤ 0
file_url参数不能为空 创建/同步识别未传文件地址
task_id参数不能为空 查询未传任务 ID
任务与用户信息不匹配 查询时 user 与任务归属不一致

最后编辑: 广电云技术部  文档更新时间: 2026-08-20 11:28   作者:广电云技术部