跳转到主要内容
将音频文件中的人声内容异步识别为文本,适合较长音频的离线转写。当前支持中英文识别(暂不支持中文方言及其他语种),支持分句与字 / 词级时间戳、双声道分轨、说话人识别(Speaker Diarization),暂不支持热词。推荐使用模型 stepaudio-2.5-asr

提交任务

创建一个新的语音识别任务。 请求地址:POST https://api.stepfun.com/v1/audio/asr/file/submit

请求头

  • Authorization string required
    认证令牌,格式为 Bearer $STEPFUN_API_KEY
  • Content-Type string required
    固定为 application/json
  • X-Trace-Id string optional
    调用方自定义 Trace ID;不传则由服务端生成。
  • X-Request-Id string optional
    调用方自定义 Request ID;不传则由服务端生成。

请求参数

  • audio object optional
    音频配置。pcm 格式必填相关参数,其他格式可由文件自动识别。
  • request object required
    识别配置:模型能力与输出格式。

请求示例

返回

  • task_id string
    任务 ID,用于后续查询结果。

查询结果

根据任务 ID 查询识别进度或获取最终结果。 请求地址:POST https://api.stepfun.com/v1/audio/asr/file/query

请求参数

  • task_id string required
    提交任务时返回的任务 ID。

返回字段

  • status string
    任务状态。排队 / 运行中时返回 RUNNING,此时响应体仅含该字段。
  • duration float
    音频时长(秒),仅识别成功时返回。
  • result object array
    识别结果,仅识别成功时返回。

示例

处理中(排队 / 运行中):
处理成功:

声道拆分说明

enable_channel_split=true 且输入为立体声时,服务端会拆分为多个声道分别识别,result 数组长度可能为 2,每个元素对应一个声道的输出。

说话人识别说明

在本接口可选开启说话人识别:
  • enable_speaker_info=true:每个 utterance 附带 speaker.id,标识该句属于哪个说话人。需同时设置 show_utterances=truespeaker.id 挂在 utterance 下,无 utterances 则无处体现)。
  • speaker.id(如 spk_1)同一任务内稳定、跨任务不保证。
  • 可与 enable_channel_split 并存:分声道后在各声道内再区分说话人。
请求示例(开启说话人识别):
返回示例(含说话人标记,节选):

错误处理

接口以标准 JSON 错误响应返回失败原因(HTTP 状态码与错误结构以网关 / 服务端实现为准)。常见场景:
  • 鉴权失败:未提供或提供了错误的 Authorization 头(Bearer $STEPFUN_API_KEY)。
  • 模型不支持:request.model_namestepaudio-2.5-asr
  • 限流 / 白名单限制:请求被限流或不在白名单。
  • 任务不存在:task_id 不存在或不属于当前 uid。
  • 任务失败:后台处理失败(下载失败 / 转码失败 / 识别失败等)。
完整错误码参见 错误码

示例

最佳实践

  • 轮询节流:建议 1s~3s 轮询一次,避免过于频繁造成限流。
  • 超时控制:客户端设置总体超时,避免无限等待。
  • URL 可达性:确保 audio.url 可被服务端直接下载(建议 HTTPS、可公网访问,或在服务网络内可访问)。
  • 结果粒度:只需整段文本时用 show_utterances=false;需要时间戳 / 字幕对齐时用 show_utterances=true
  • 声道拆分:双人对话、左右声道分别录制的场景可开启 enable_channel_split=true

音频建议

  • 优先使用清晰、背景噪音较少的录音。
  • 若可控制录制格式,建议 16kHz / 16bit / 单声道。
  • 立体声场景如需分别识别两路说话人,可开启声道拆分。