TensorFusion Docs

语音识别(ASR)与语音合成(TTS)

OpenAI 兼容 POST /v1/audio/transcriptions 语音转文字(multipart)与 POST /v1/audio/speech 文字转语音(JSON)。

无界模型云提供语音识别(ASR,语音转文字)与语音合成(TTS,文字转语音)两个能力。数据面入口采用 OpenAI 兼容路径:

  • ASRPOST https://api.tos.run/v1/audio/transcriptionsmultipart/form-data 上传音频,返回识别文本。
  • TTSPOST https://api.tos.run/v1/audio/speechapplication/json 提交文本,返回二进制音频。

私有化部署 API 完全一致,仅需替换 Base 域名 → 企业私有化部署

master host 上另有 POST https://ai.tos.run/v1/transcribePOST 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 请求。

字段

字段类型必填说明
audiofile音频文件;也可用 file 字段名
formatstring音频格式 pcm / wav / mp3 / ogg;不传时由文件名后缀 / MIME 推断
languagestring识别语言,默认 zh-CN
sample_rateinteger采样率,默认 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)。

字段

字段类型必填说明
textstring待合成文本,不能为空≤ 5000 字符
voicestring音色,默认 default(可用音色以控制台为准)
speednumber语速,范围 0.52.0,默认 1.0
formatstring输出格式 mp3 / wav / pcm,默认 mp3

响应 Content-Type

响应体是原始音频字节,Content-Typeformat 而定:

formatContent-Type
mp3(默认)audio/mp3
wavaudio/wav
pcmaudio/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.mp3
import 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,scope ai:asr)。
  • POST https://ai.tos.run/v1/synthesize(TTS,scope ai:tts)。

这两个路径只在 master host 上提供,数据面 api.tos.run 不代理。公有云接入请优先用本页的数据面路径 /v1/audio/transcriptions/v1/audio/speech(由 follower 就近鉴权、审计后转发处理)。

相关页面

目录