语音转文字
使用 transcribe-1 或 transcribe-1-pro 转写音频,可选时间戳与情绪标记。
使用 transcribe-1 或 transcribe-1-pro 将音频转写为文本,可选返回时间戳分段与情绪标记。
该接口为 BETA:仅接受 multipart/form-data(文件上传)或 application/msgpack,不支持 JSON + Base64 音频。
Base URL
https://api.autorouter.top— Production
Authentication
BearerAuth: http (bearer)
使用 Bearer Token 认证。
格式: Authorization: Bearer sk-xxxxxx
Endpoints
POST /fishaudio/v1/asr
创建语音转写请求
上传音频文件,返回转写文本。可通过 model Header 选择转写模型。
Headers
| Name | Type | Required | Description |
|---|---|---|---|
Authorization | string | Yes | 请求身份认证。格式:Bearer sk-xxxxxx |
model | string | No | ASR 模型。transcribe-1(默认,省略时使用):通用转写;transcribe-1-pro:多人对话转写,文本中保留情绪与人声事件标记。multipart 与 MessagePack 均通过此 Header 指定 |
Request Body
Content-Type: multipart/form-data 或 application/msgpack
multipart 请求由客户端自动设置 Content-Type 与 boundary。MessagePack 请求需设置 Content-Type: application/msgpack,并将 audio 编码为原始二进制字节。
Example:
{
"audio": "<binary>",
"language": "zh",
"ignore_timestamps": false
}Properties:
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
audio | file | Yes | — | multipart 为音频文件上传;MessagePack 为原始音频字节 |
language | string | null | No | 未设置 | 可选语种提示,如 en、zh、ja。无论是否传入,服务端仍会自动检测 |
ignore_timestamps | boolean | No | true | 设为 false 时请求带时间戳的分段。对齐会增加处理时间;对短于 30 秒的音频延迟更明显 |
Responses
200: 转写成功
Content-Type: application/json
401: 无权限
Content-Type: application/json
402: 余额不足
Content-Type: application/json
503: 服务过载
Content-Type: application/json
请求示例
下方为 multipart 示例。Content-Type(含 boundary)由 HTTP 客户端自动设置;请勿手动写成不含 boundary 的 multipart/form-data,否则请求会失败。Go 示例通过 FormDataContentType() 显式设置。MessagePack 写法见下方。
curl --request POST https://api.autorouter.top/fishaudio/v1/asr \
--header "Authorization: Bearer sk-xxxxxx" \
--header "model: transcribe-1-pro" \
--form audio=@conversation.wav \
--form ignore_timestamps=falseMessagePack 请求示例
需设置 Content-Type: application/msgpack,并将 audio 编码为原始二进制字节。
import msgpack
import requests
url = "https://api.autorouter.top/fishaudio/v1/asr"
with open("conversation.wav", "rb") as f:
payload = msgpack.packb({
"audio": f.read(),
"ignore_timestamps": False,
})
headers = {
"Authorization": "Bearer sk-xxxxxx",
"model": "transcribe-1-pro",
"Content-Type": "application/msgpack",
}
response = requests.post(url, headers=headers, data=payload)
print(response.text)响应示例
{
"text": "<|speaker:0|>你好。<|speaker:1|>[高兴]很开心认识你。<|speaker:0|>我也是。",
"duration": 6.4,
"segments": [],
"language_code": "zh",
"language": "Chinese"
}响应字段说明:
| Name | Type | Description |
|---|---|---|
text | string | 完整转写文本。Pro 模型会内联说话人标记(如 <|speaker:0|>),并可包含情绪与人声事件标记(如 [高兴]、[laughter]) |
duration | number | 音频时长(秒) |
segments | object[] | { "text", "start", "end" } 数组,时间戳单位为秒。跳过时间戳、对齐失败或未检测到语音时为空数组 |
segments[]. | string | 分段文本(不含说话人/情绪/事件标记) |
segments[]. | number | 分段开始时间(秒) |
segments[]. | number | 分段结束时间(秒) |
language_code | string | null | 检测到的 ISO 639-1 语种代码,如 en、ja。业务逻辑请用此字段 |
language | string | null | 检测到的语种名称,如 English,仅供展示 |
多人对话响应格式
Pro 模型将说话人轮次写在 text 字符串内部,使用 <|speaker:N|> 标记。数字标签 N 标识其后文本的说话人,直到下一个标记。同一标签再次出现表示该说话人再次发言。标签仅在单次录音内有效,不是跨请求的人名或身份。
上方 200 响应示例中,ignore_timestamps=true 时跳过时间戳:说话人 0 说「你好。」,说话人 1 说「[高兴]很开心认识你。」,说话人 0 说「我也是。」。[高兴] 描述说话人 1 的表达方式。
当 ignore_timestamps=false(如上方 curl 示例)时,text 中仍保留相同标记;segments 包含带时间的语音分段,对齐结果不含说话人、情绪与事件标记。segments 不是说话人轮次,也没有 speaker_id 字段。
接口不单独返回说话人列表或情绪字段。需要说话人轮次或情绪信息时,请解析 text 中的内联标记。
错误处理
HTTP 401 / 403 鉴权错误
401 Unauthorized:API Key 无效或已过期403 Forbidden:API Key 无权访问此模型(检查 token 的模型白名单)
HTTP 402 余额不足
返回 insufficient user quota。请前往 AutoRouter 控制台充值。
HTTP 503 服务过载
服务端负载过高,无法处理请求。请稍后重试。