API 文档

王小听 API 兼容 OpenAI 格式,开发者可零成本迁移。

基础地址

https://api.wxtts.com/v1

所有 API 路径以 /v1 开头,兼容 OpenAI 格式。

鉴权方式

在请求头携带 API Key:

Authorization: Bearer sk-wxtts-xxx

在控制台「API Key 管理」创建 Key,格式为 sk-wxtts- 前缀。

POST /audio/speech

文字转语音,兼容 OpenAI 接口。

curl -X POST https://api.wxtts.com/v1/audio/speech \
  -H "Authorization: Bearer sk-wxtts-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "你好,欢迎使用王小听。",
    "voice": "xiaoxiao",
    "response_format": "mp3",
    "speed": 1.0,
    "pitch": 1.0
  }' --output speech.mp3
参数类型必填说明
inputstring必填要合成的文本,单次最长 5000 字符
voicestring必填音色 ID,完整列表见 GET /v1/voices
modelstring-模型 ID,tts-1 或 tts-1-hd,默认 tts-1
response_formatstring-音频格式 mp3 / wav / pcm,默认 mp3
speednumber-语速 0.5-2.0,默认 1.0
pitchnumber-音调 0.5-2.0,默认 1.0

响应格式

默认返回 JSON,音频以 base64 编码:

{
  "code": 0,
  "data": {
    "audioBase64": "UklGRiQAAABXQVZF...",
    "format": "mp3",
    "charCount": 12,
    "voice": "xiaoxiao",
    "model": "tts-1",
    "timestamps": [
      { "beginTime": 0, "endTime": 1500, "text": "你好,欢迎使用王小听。" }
    ]
  }
}

设置请求头 Accept: audio/mpeg 可直接返回二进制音频流,响应头包含 X-Char-Count(字符数)、X-Voice(音色)、X-Model(模型)。

字段类型说明
audioBase64stringbase64 编码的音频数据
formatstring音频格式
charCountinteger本次合成字符数
voicestring音色 ID
modelstring模型 ID
timestampsarray句子级时间戳(用于字幕生成,可能为空)

其他接口

  • GET /v1/voices — 获取音色列表
  • GET /v1/models — 获取可用模型列表
  • GET /v1/usage — 查询当前用量

SSML 支持

在 input 字段中使用 SSML 标签可控制停顿、语速音调、强调等。后端会自动解析标签分段合成拼接,无 SSML 标签时按普通文本处理。

标签说明
<break time="500ms"/>插入指定时长静音(支持 ms / s 单位),仅 wav/pcm 格式生效
<prosody rate="0.8">...</prosody>调整语速/音调,rate/pitch 支持绝对值(0.5-2.0)、百分比(+10%)、关键字(slow/fast/normal)
<emphasis>...</emphasis>强调片段,自动略增音调并轻微减速
<speak>...</speak>外层包装标签(可选),自动剥离
<speak>
  你好,欢迎使用王小听。
  <break time="500ms"/>
  <prosody rate="0.8" pitch="1.1">这里是慢速高音调片段。</prosody>
  <emphasis>重点强调内容</emphasis>
</speak>

多说话人对话

使用 <dialog> 包裹多段 <speaker voice="音色ID">文本</speaker> 实现一段文本多角色配音,每个说话人使用不同音色,对话之间自动插入 300ms 短停顿。

<dialog>
<speaker voice="longanhuan">你好,今天天气真好。</speaker>
<speaker voice="longanyang">是啊,我们去公园散步吧。</speaker>
<speaker voice="longanhuan">好主意,走吧!</speaker>
</dialog>

流式 TTS

POST /v1/audio/speech/stream 按句切分,每段合成完成立即推送 PCM 字节流(16-bit 单声道),实现首字低延迟播放。响应 Content-Type: audio/pcm。前端使用 fetch + ReadableStream 读取,AudioContext 解码播放。流式接口固定输出 PCM,不支持 mp3/wav。

// 浏览器 fetch + ReadableStream 流式播放
const resp = await fetch("https://api.wxtts.com/v1/audio/speech/stream", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sk-wxtts-xxx",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "tts-1",
    input: "长文本将按句切分,每段合成完成立即推送 PCM 流,实现首字低延迟。",
    voice: "longanhuan"
  })
});

const reader = resp.body.getReader();
const audioCtx = new AudioContext({ sampleRate: 22050 });
while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  // value 为 16-bit PCM 字节,用 AudioBufferSourceNode 播放
  const audioBuffer = pcmToAudioBuffer(value, 22050);
  const src = audioCtx.createBufferSource();
  src.buffer = audioBuffer;
  src.connect(audioCtx.destination);
  src.start();
}

错误码

状态码说明
400请求参数错误(如文本为空、音色不存在、格式不支持)
401未认证或 API Key 无效
429请求过于频繁,请稍后再试
500服务器内部错误

限流策略

API 服务仅向 Pro 用户开放,Free / Creator 用户请使用配音工具进行语音合成。
套餐并发每分钟请求每月字符
Free / Creator不支持不支持不支持
Pro56010 万

超限返回 429。