AngeVoice API 参考
先使用 OpenAI 风格的语音接口。只有需要上传参考音频或兼容旧客户端时,才使用 /api/tts。
地址和认证
| 部署方式 | HTTP | WebSocket |
|---|---|---|
| CPU | http://host:8100 | ws://host:8100/ws/v1/tts |
| 标准 GPU | http://host:8101 | ws://host:8101/ws/v1/tts |
| Legacy GPU | http://host:8102 | ws://host:8102/ws/v1/tts |
受保护接口使用:
Authorization: Bearer YOUR_TOKEN
状态和能力发现
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /health | 服务、模型和运行时状态 |
| GET | /v1/models | 可用模型与 Provider |
| GET | /v1/models/current | 当前模型和回退状态 |
| GET | /v1/tts/capabilities | 格式、编码和音色能力 |
| GET | /v1/audio/voices | 音色列表 |
| GET | /v1/audio/formats | 输出格式和 FFmpeg 状态 |
| GET | /v1/engines/parameter-schema | 模型专属参数 Schema |
模型加载和切换
| 方法 | 路径 | 用途 |
|---|---|---|
| POST | /v1/models/{model}/load | 预先加载指定模型 |
| POST | /v1/models/switch | 切换模型,并可释放旧模型 |
| POST | /v1/models/{model}/unload | 释放指定模型 |
curl -X POST "$BASE_URL/v1/models/switch" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"model":"moss","unload_previous":true}'
OpenAI 风格语音合成
curl -X POST "$BASE_URL/v1/audio/speech" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"model":"kokoro","input":"你好世界","voice":"zm_010","speed":1.0,"response_format":"wav"}' \
--output speech.wav
输出格式和编码
以 /v1/audio/formats 返回值为准。WAV 和 PCM 是基础路径;MP3、OGG、M4A 和 telegram_voice 需要对应转码能力。需要 JSON 响应时使用 response_encoding=base64。
成功响应会携带请求 ID;排障时优先记录请求 ID,不要记录完整 Token。
参考音频克隆
curl -X POST "$BASE_URL/api/tts" \
-H "Authorization: Bearer YOUR_TOKEN" \
-F model=moss \
-F text="这是参考音频克隆测试。" \
-F voice=Junhao \
-F prompt_audio=@reference.wav \
-F response_format=wav \
--output clone.wav
ZipVoice 请求还应提供 prompt_text。服务端默认参考音频可通过 MOSS_PROMPT_AUDIO_PATH 配置。
WebSocket 流式合成
{
"model": "kokoro",
"text": "你好世界,这是一段流式测试。",
"voice": "zm_010",
"format": "pcm_s16le",
"binary": false,
"token": "YOUR_TOKEN"
}
发送 {"type":"cancel"} 可取消后续分段。已进入同步推理的当前分段可能会先完成。
批量和取消
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /v1/audio/batch | 多段文本打包为 ZIP |
| POST | /v1/audio/requests/{request_id}/cancel | 取消 HTTP 或批量请求 |
| GET | /requests | 查看最近请求状态 |
curl -X POST "$BASE_URL/v1/audio/batch" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"model":"kokoro",
"voice":"zm_010",
"response_format":"wav",
"items":[
{"text":"第一段","filename":"001"},
{"text":"第二段","filename":"002"}
]
}' \
--output speech-batch.zip
Voice Profile
在 Studio 中保存的 Voice Profile 会出现在音色列表中,并可作为 voice 使用。调用前可通过 /v1/audio/voices?detail=true 查询可用 Profile、模型归属和音色详情。
交互式文档
/api-docs:面向普通用户的示例页。/docs:Swagger,适合查看完整请求 Schema。/redoc:ReDoc,适合阅读接口定义。