语音识别(ASR)与语音合成(TTS)
OpenAI 兼容 POST /v1/audio/transcriptions 语音转文字(multipart)与 POST /v1/audio/speech 文字转语音(JSON)。
无界模型云提供语音识别(ASR,语音转文字)与语音合成(TTS,文字转语音)两个能力。数据面入口采用 OpenAI 兼容路径:
- ASR:
POST https://api.tos.run/v1/audio/transcriptions,multipart/form-data上传音频,返回识别文本。 - TTS:
POST https://api.tos.run/v1/audio/speech,application/json提交文本,返回二进制音频。
私有化部署 API 完全一致,仅需替换 Base 域名 → 企业私有化部署。
master host 上另有 POST https://ai.tos.run/v1/transcribe 与 POST https://ai.tos.run/v1/synthesize 两个别名(语义与字段相同)。公有云接入请优先用本页的 /v1/audio/* 数据面路径——/v1/transcribe / /v1/synthesize 只在 master host 上提供,数据面 api.tos.run 不代理它们。
鉴权与 Base
- API 数据面 Base:
https://api.tos.run(curl / SDK 都打到此 host)。 - 控制台
https://ai.tos.run仅用于浏览器管理,不要作为 curl / SDK 的 API Base。 - 鉴权头:
Authorization: Bearer $TOS_API_KEY,Key 以gk_开头。 - scope:ASR 需要
ai:asr,TTS 需要ai:tts(创建 Key 时勾选;ai:*通配亦可)。
详见 鉴权。
语音识别(ASR)
向 /v1/audio/transcriptions 发送 multipart/form-data 请求。
字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
audio | file | 是 | 音频文件;也可用 file 字段名 |
format | string | 否 | 音频格式 pcm / wav / mp3 / ogg;不传时由文件名后缀 / MIME 推断 |
language | string | 否 | 识别语言,默认 zh-CN |
sample_rate | integer | 否 | 采样率,默认 16000(主要对 pcm 有意义) |
- 支持格式:
pcm/wav/mp3/ogg。 - 空音频(0 字节)会返回 400。长音频会显著增加延迟,建议先分片再逐段识别。
请求示例
curl "https://api.tos.run/v1/audio/transcriptions" \
-H "Authorization: Bearer $TOS_API_KEY" \
-F "audio=@speech.wav" \
-F "language=zh-CN"import os
import requests
with open("speech.wav", "rb") as f:
resp = requests.post(
"https://api.tos.run/v1/audio/transcriptions",
headers={"Authorization": f"Bearer {os.environ['TOS_API_KEY']}"},
data={"language": "zh-CN"},
files={"audio": ("speech.wav", f, "audio/wav")},
timeout=120,
)
resp.raise_for_status()
print(resp.json()["text"])import fs from "node:fs";
const form = new FormData();
form.set("language", "zh-CN");
form.append("audio", new Blob([fs.readFileSync("speech.wav")]), "speech.wav");
const resp = await fetch("https://api.tos.run/v1/audio/transcriptions", {
method: "POST",
headers: { "Authorization": `Bearer ${process.env.TOS_API_KEY}` },
body: form,
});
const data = await resp.json();
console.log(data.text);响应
返回 JSON,包含完整识别文本、音频时长,以及带时间戳的分句(utterances):
{
"text": "今天天气不错,我们去公园散步吧。",
"duration_ms": 3200,
"utterances": [
{
"text": "今天天气不错",
"start_time": 0,
"end_time": 1600
},
{
"text": "我们去公园散步吧",
"start_time": 1600,
"end_time": 3200
}
]
}语音合成(TTS)
向 /v1/audio/speech 发送 application/json 请求,返回二进制音频(不是 JSON)。
字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
text | string | 是 | 待合成文本,不能为空,≤ 5000 字符 |
voice | string | 否 | 音色,默认 default(可用音色以控制台为准) |
speed | number | 否 | 语速,范围 0.5–2.0,默认 1.0 |
format | string | 否 | 输出格式 mp3 / wav / pcm,默认 mp3 |
响应 Content-Type
响应体是原始音频字节,Content-Type 随 format 而定:
format | Content-Type |
|---|---|
mp3(默认) | audio/mp3 |
wav | audio/wav |
pcm | audio/L16 |
请求示例
curl "https://api.tos.run/v1/audio/speech" \
-H "Authorization: Bearer $TOS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "欢迎使用无界模型云语音合成。",
"voice": "default",
"speed": 1.0,
"format": "mp3"
}' \
--output out.mp3import os
import requests
resp = requests.post(
"https://api.tos.run/v1/audio/speech",
headers={"Authorization": f"Bearer {os.environ['TOS_API_KEY']}"},
json={
"text": "欢迎使用无界模型云语音合成。",
"voice": "default",
"speed": 1.0,
"format": "mp3",
},
timeout=120,
)
resp.raise_for_status()
with open("out.mp3", "wb") as f:
f.write(resp.content)import fs from "node:fs";
const resp = await fetch("https://api.tos.run/v1/audio/speech", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.TOS_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
text: "欢迎使用无界模型云语音合成。",
voice: "default",
speed: 1.0,
format: "mp3",
}),
});
const buf = Buffer.from(await resp.arrayBuffer());
fs.writeFileSync("out.mp3", buf);TTS 成功响应是二进制音频,请用流 / arrayBuffer 读取并落盘,不要按 JSON 解析。只有错误响应才是 JSON(如 400 参数错误、429 限流、502 上游错误)。
master 端别名
master host https://ai.tos.run 上额外提供两个等价别名,字段与本页一致:
POST https://ai.tos.run/v1/transcribe(ASR,scopeai:asr)。POST https://ai.tos.run/v1/synthesize(TTS,scopeai:tts)。
这两个路径只在 master host 上提供,数据面 api.tos.run 不代理。公有云接入请优先用本页的数据面路径 /v1/audio/transcriptions 与 /v1/audio/speech(由 follower 就近鉴权、审计后转发处理)。