Skip to content

ASR API 接口文档 ​

🌐 语言切换 ​

中文版 | English

接口信息 ​

POST /openapi/autosubrt/v1/asr

这是语音识别服务

本接口的基地址是 https://autosubrt.jcaigc.cn,与剪映小助手(https://capcut-mate.jcaigc.cn)不是同一个服务,路径前缀也不同。

完整请求地址 = https://autosubrt.jcaigc.cn + /openapi/autosubrt/v1/asr

功能描述 ​

语音识别:把音频识别成带标点的完整文案,并按句末标点切成一句一句,同时给出每句话里每个字的时间线。适合「拿到音频 → 直接出文案或字幕」的场景。

只要纯文本用 语音转文本,只要 SRT 字幕文件用 语音转 SRT 字幕,要按自己写的文本对齐时间线用 文本对齐时间线。

标点由独立的标点模型恢复(whisper 对中文标点不可靠),因此 text 一定带标点,分句文本同样带标点。

请求参数 ​

json
{
  "audio_url": "https://example.com/audio.mp3",
  "apiKey": "123e4567-e89b-12d3-a456-426614174000"
}

参数说明 ​

参数名类型必填默认值说明
audio_urlstring✅-音频文件 URL,需可被服务端直接下载
apiKeystring开启计费时必填-合法 UUID;可登录 https://jcaigc.cn 获取

参数详解 ​

audio_url ​

  • 类型: string
  • 说明: 服务端会先把这个 URL 下载到本地再识别,因此必须是可直接访问的直链(不能是需要登录的网页地址)
  • 格式: 常见音视频文件均可,如 wav、mp3、m4a、aac、flac、ogg,mp4、mov 等视频文件也能直接传(服务端自动抽取音轨)
  • 限制: 单文件最大 100MB(服务端 FILE_SIZE_LIMIT 默认 104857600 字节)

apiKey ​

  • 类型: string
  • 说明: 必须是合法 UUID;计费开启时(默认开启)必填,且账户积分需大于 1

响应格式 ​

成功响应 (200) ​

json
{
  "code": 0,
  "message": "成功",
  "data": {
    "text": "多谢,请入席吧。",
    "utterances": [
      {
        "text": "多谢,请入席吧。",
        "words": [
          { "text": "多", "start_time": 2810, "end_time": 3070 },
          { "text": "谢", "start_time": 3070, "end_time": 3330 },
          { "text": "请", "start_time": 4889, "end_time": 5320 },
          { "text": "入", "start_time": 5320, "end_time": 5620 },
          { "text": "席", "start_time": 5620, "end_time": 5860 },
          { "text": "吧", "start_time": 5860, "end_time": 6009 }
        ]
      }
    ]
  }
}

响应字段说明 ​

字段名类型说明
codeint0 表示成功,非 0 见下方错误码说明
messagestring提示信息,默认中文,带 Accept-Language: en 时返回英文
data.textstring完整文案,一定带标点
data.utterancesarray分句结果,每条都是以句末标点收尾的完整句子
data.utterances[].textstring一句话的文本,标点计入其中
data.utterances[].wordsarray该句每个字的时间线,不含标点
data.utterances[].words[].textstring单个字符(英文按字母切分)
data.utterances[].words[].start_timeint开始时间(毫秒)
data.utterances[].words[].end_timeint结束时间(毫秒)

错误响应 ​

json
{
  "code": 2003,
  "message": "下载文件失败"
}

错误体不包含 data 字段;所有错误都返回 HTTP 200,需按 code 判断成功与否。

使用示例 ​

cURL 示例 ​

bash
curl -X POST https://autosubrt.jcaigc.cn/openapi/autosubrt/v1/asr \
  -H "Content-Type: application/json" \
  -d '{
    "audio_url": "https://example.com/audio.mp3",
    "apiKey": "123e4567-e89b-12d3-a456-426614174000"
  }'

Python 示例 ​

python
import requests

resp = requests.post(
    "https://autosubrt.jcaigc.cn/openapi/autosubrt/v1/asr",
    json={
        "audio_url": "https://example.com/audio.mp3",
        "apiKey": "123e4567-e89b-12d3-a456-426614174000",
    },
    timeout=600,
)

result = resp.json()
if result["code"] != 0:
    raise RuntimeError(result["message"])

for sentence in result["data"]["utterances"]:
    print(sentence["text"])
    for word in sentence["words"]:
        print(word["text"], word["start_time"], word["end_time"])  # 毫秒

计费 ​

本接口按音频时长扣费,与剪映小助手共用同一套积分体系。

项说明
单价0.00022 积分 / 秒
计费依据音频实际时长(秒),由识别引擎给出
扣费时机识别成功之后才扣费;识别失败不扣费
余额门槛调用前账户积分需大于 1,否则直接拒绝(2035)
音频时长费用(积分)
10 秒0.002200
60 秒0.013200
1 小时0.792000

apiKey 必须是合法 UUID,可登录 https://jcaigc.cn 获取。

错误码说明 ​

错误码错误信息说明解决方案
1001参数校验失败缺少 audio_url,或 apiKey 不是合法 UUID检查请求参数
2001识别音频失败音频无法解码、模型未加载,或 audio_url 返回 401/403/404换一个可正常播放的文件或可访问的直链
2002文件大小超出限制音频超过 100MB压缩或截取后再试
2003下载文件失败下载过程中网络或服务端错误,重试后仍失败确认是公网可直链下载的地址
2005下载文件超时下载整体超时换更快的源或更小的文件
2035账户余额不足账户积分需大于 1 才可继续使用服务完成充值后重试
2036无效的 apiKey计费开启时未传 apiKey登录 https://jcaigc.cn 获取 apiKey
9997服务器忙并发已达上限,请求未排队稍后重试
9998系统内部错误未预期的内部异常联系技术支持
9999未知异常积分服务不可用等稍后重试

注意事项 ​

  1. 时间单位是毫秒(1 秒 = 1000)。注意 文本对齐时间线 返回的是微秒,两者不同。
  2. 分句只按句末标点断句:遇到 。!?.!? 才结束一句话,逗号、顿号、冒号等句内标点留在句子内部。
  3. 各句拼接与 data.text 逐字一致:"".join(u.text) == data.text。
  4. 标点没有时间戳:words 只包含真实的字,句内的标点只出现在 text 里。
  5. 整段没有识别出语音时,data.text 为空字符串、data.utterances 为空数组,接口仍返回成功。
  6. 重复调用会重复扣费,超时后请勿盲目重试。

工作流程 ​

  1. 校验 apiKey 与账户余额(计费开启时)
  2. 下载 audio_url 指向的音视频到服务端临时目录
  3. 语音识别,得到逐字时间线
  4. 标点模型恢复标点,得到带标点的完整文案
  5. 按句末标点分句,标点随所属句子走
  6. 识别成功后按音频时长扣费
  7. 返回文案与分句时间线,删除临时文件

相关接口 ​