给 AI 的最短说明
调用 POST https://tts.delia.love/api/tts,请求头携带 X-API-Key,JSON body 至少包含 text。成功响应是 MP3 二进制数据,不是 JSON。
认证
所有 TTS 请求都必须提供有效且已启用的 API Key:
X-API-Key: dtts_YOUR_API_KEY也可以使用 Authorization: Bearer dtts_YOUR_API_KEY。不要同时发送两种认证头。
合成语音
https://tts.delia.love/api/tts| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
text | string | 是 | 需要朗读的纯文本,硬上限 5000 字符;建议单次 ≤ 2000 汉字,详见字数限制 |
voice | string | 否 | 声音名称,默认 zh-CN-XiaoxiaoNeural |
rate | string | 否 | 语速,例如 +20% 或 -10%,默认 +0% |
pitch | string | 否 | 音高,例如 +5Hz,默认 +0Hz |
volume | string | 否 | 音量,例如 +10%,默认 +0% |
字数限制与耗时参考
上游(Microsoft Edge TTS)的真实限制不是字符数,而是单次合成的音频时长约 10 分钟。按 1 倍语速换算,中文约 2500–2800 字封顶,超过会返回 502;语速调快(如 rate: "+100%")单位时间读得更多,可容纳的字数相应增加。
建议:单次请求控制在 2000 汉字(或 3000 英文词)以内;追求响应速度时按句或按段切分(每次几十到几百字)并发请求,客户端再按顺序播放或拼接——同为 24kHz/48kbps 单声道 MP3,分段音频可直接按字节顺序拼接。
实测耗时参考(中文、1 倍速、zh-CN-XiaoxiaoNeural,含网络往返):
| 文本长度 | 音频时长 | 响应时间(约) |
|---|---|---|
| 一句话(约 20 字) | 数秒 | 0.5–1 秒 |
| 500 字 | ≈ 1.8 分钟 | 3–4 秒 |
| 1000 字 | ≈ 3.6 分钟 | 6–8 秒 |
| 2000 字 | ≈ 7 分钟 | 12–15 秒 |
| 2500 字 | ≈ 9 分钟 | 18–20 秒 |
| 3000 字以上 | 超过 10 分钟上限 | 失败(502) |
响应时间与文本长度大致成正比(合成是实时流式的,约每秒生成 30 秒音频)。注意服务端单次请求总时限 60 秒,长文本请务必分段。
成功响应
状态码 200,Content-Type 为 audio/mpeg,响应体是 MP3 文件字节。客户端应保存为 .mp3、创建 Blob,或直接送入音频播放器。
声音列表
https://tts.delia.love/api/voices返回 Microsoft Edge TTS 可用声音的 JSON 数组。使用每项的 ShortName 作为合成请求的 voice。
机器可读 OpenAPI
https://tts.delia.love/api/openapi.json支持 OpenAPI 3.1 的 AI Agent、ChatGPT Action、Postman 或代码生成工具可以直接导入这个地址,自动识别接口、参数、认证方式和响应类型。
代码示例
curl
curl -X POST https://tts.delia.love/api/tts \
-H "Content-Type: application/json" \
-H "X-API-Key: dtts_YOUR_API_KEY" \
-d '{"text":"你好,世界","voice":"zh-CN-XiaoxiaoNeural","rate":"+0%"}' \
--output speech.mp3JavaScript
const response = await fetch("https://tts.delia.love/api/tts", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "dtts_YOUR_API_KEY"
},
body: JSON.stringify({
text: "你好,世界",
voice: "zh-CN-XiaoxiaoNeural",
rate: "+0%"
})
});
if (!response.ok) throw new Error(await response.text());
const audioBlob = await response.blob();Python
import requests
response = requests.post(
"https://tts.delia.love/api/tts",
headers={"X-API-Key": "dtts_YOUR_API_KEY"},
json={
"text": "你好,世界",
"voice": "zh-CN-XiaoxiaoNeural",
"rate": "+0%",
},
)
response.raise_for_status()
open("speech.mp3", "wb").write(response.content)错误响应
错误响应是 JSON:{"error":"错误信息"}
| 状态码 | 含义 |
|---|---|
| 400 | JSON 无效、缺少 text 或参数错误 |
| 401 | 缺少、无效或已停用的 API Key |
| 413 | 文本超过 5000 字符 |
| 502 | 上游语音合成失败(常见原因:文本过长,音频超过约 10 分钟上限,请分段) |
| 503 | API Key 数据库暂时不可用 |
AI Agent 行为要求
- 不要虚构 API Key;缺少 Key 时向用户索取。
- 将成功响应按二进制处理,不要尝试解析为 JSON 或文本。
- 需要选择声音时,先调用
/api/voices。 - 不要把真实 API Key 写入公开代码、日志或回答正文。