TTS语音合成
语音合成 API 文档
Section titled “语音合成 API 文档”语音合成(Text-to-Speech, TTS)API 允许你将文本转换为自然流畅的语音。该API兼容 OpenAI 标准,同时支持通义千问 qwen-tts 系列模型,提供高质量的中文和英文语音合成服务。
- 端点:
/v1/audio/speech - 方法:
POST - 内容类型:
application/json - 认证: Bearer Token
Qwen-TTS 系列模型
Section titled “Qwen-TTS 系列模型”本系统完整支持通义千问的 qwen-tts 系列模型:
| 模型名称 | 描述 | 特点 |
|---|---|---|
qwen-tts | 基础版本 | 标准音质,适合一般场景 |
qwen-tts-latest | 最新版本 | 音质更佳,支持更多音色 |
qwen-tts-2025-05-22 | 指定版本 | 稳定版本,适合生产环境 |
通用音色(所有版本支持)
Section titled “通用音色(所有版本支持)”| 音色代码 | 音色名称 | 性别 | 特点 |
|---|---|---|---|
Cherry | 甜美女声 | 女 | 声音甜美,适合温馨场景 |
Serena | 温柔女声 | 女 | 声音温柔,适合专业播报 |
Ethan | 稳重男声 | 男 | 声音沉稳,适合商务场景 |
Chelsie | 活泼女声 | 女 | 声音活泼,适合年轻化场景 |
高级音色(qwen-tts-latest 和 qwen-tts-2025-05-22 支持)
Section titled “高级音色(qwen-tts-latest 和 qwen-tts-2025-05-22 支持)”| 音色代码 | 音色名称 | 性别 | 特点 |
|---|---|---|---|
Dylan | 北京话 | 男 | 青春活力,适合时尚内容 |
Jada | 吴语 | 女 | 知性优雅,适合教育内容 |
Sunny | 四川话 | 女 | 阳光开朗,适合儿童内容 |
{ "model": "qwen-tts", "input": "你好,欢迎使用语音合成服务!", "voice": "Cherry"}完整请求参数
Section titled “完整请求参数”{ "model": "qwen-tts-latest", "input": "这是一段需要转换为语音的文本内容。支持中文、英文以及中英混合的文本输入。", "voice": "Serena", "speed": 1.0, "response_format": "wav"}| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
model | string | 是 | 要使用的TTS模型,支持Openai tts和 qwen-tts 系列 |
input | string | 是 | 要转换为语音的文本,最长512个Token |
voice | string | 是 | 语音音色,见支持的音色列表 |
speed | number | 否 | 语音速度,范围0.25-4.0,默认1.0 |
response_format | string | 否 | 音频格式,目前支持 wav |
API 直接返回音频文件内容,响应头包含:
Content-Type: audio/wavContent-Disposition: attachment; filename="audio.wav"音频格式规格:
- 格式: WAV (RIFF)
- 编码: 16位 PCM
- 声道: 单声道 (Mono)
- 采样率: 24000 Hz
{ "error": { "message": "错误描述", "type": "invalid_request_error", "code": "error_code" }}cURL 示例
Section titled “cURL 示例”curl -X POST "https://api.4allapi.com/v1/audio/speech" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen-tts", "input": "你好,这是语音合成测试", "voice": "Cherry" }' \ --output audio.wav高级音色请求
Section titled “高级音色请求”curl -X POST "https://api.4allapi.com/v1/audio/speech" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen-tts-latest", "input": "欢迎使用通义千问语音合成服务,我是Jada!", "voice": "Jada", "speed": 1.2 }' \ --output audio_jada.wavJavaScript 示例
Section titled “JavaScript 示例”async function generateSpeech(text, voice = 'Cherry') { const response = await fetch('/v1/audio/speech', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'qwen-tts-latest', input: text, voice: voice }) });
if (response.ok) { const audioBlob = await response.blob(); const audioUrl = URL.createObjectURL(audioBlob);
// 播放音频 const audio = new Audio(audioUrl); audio.play();
return audioUrl; } else { const error = await response.json(); throw new Error(error.error.message); }}
// 使用示例generateSpeech('你好,世界!', 'Serena');Python 示例
Section titled “Python 示例”import requestsimport io
def generate_speech(text, voice='Cherry', model='qwen-tts-latest'): url = 'https://api.4allapi.com/v1/audio/speech' headers = { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' } data = { 'model': model, 'input': text, 'voice': voice }
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200: return response.content else: raise Exception(f"API Error: {response.status_code} - {response.text}")
# 使用示例audio_content = generate_speech('你好,这是Python调用示例!', 'Ethan')
# 保存音频文件with open('output.wav', 'wb') as f: f.write(audio_content)Node.js 示例
Section titled “Node.js 示例”const fs = require('fs');const fetch = require('node-fetch');
async function generateSpeech(text, voice = 'Cherry') { try { const response = await fetch('https://api.4allapi.com/v1/audio/speech', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'qwen-tts-latest', input: text, voice: voice }) });
if (response.ok) { const buffer = await response.buffer(); fs.writeFileSync('audio.wav', buffer); console.log('音频文件已保存为 audio.wav'); } else { const error = await response.json(); console.error('API错误:', error); } } catch (error) { console.error('请求失败:', error); }}
// 使用示例generateSpeech('欢迎使用Node.js语音合成!', 'Dylan');流式响应(待支持)
Section titled “流式响应(待支持)”对于长文本,可以使用流式响应获得更快的首字节时间:
curl -X POST "https://api.4allapi.com/v1/audio/speech" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -H "X-DashScope-SSE: enable" \ -d '{ "model": "qwen-tts", "input": "这是一段较长的文本,使用流式响应可以获得更好的体验...", "voice": "Chelsie" }' \ --no-buffer- 单次请求最大文本长度:512个Token
- 支持语言:中文、英文、中英混合
- 特殊字符会被自动处理
- 频率限制:根据你的订阅计划
- 并发限制:默认支持多并发请求
- 文件大小:生成的音频文件大小取决于文本长度
- 最大音频时长:约5分钟(取决于文本长度)
- 音频质量:24kHz, 16-bit PCM
- 输出格式:WAV
| 错误码 | 描述 | 解决方案 |
|---|---|---|
invalid_api_key | API密钥无效 | 检查Authorization头中的API密钥 |
model_not_found | 模型不存在 | 确认使用正确的qwen-tts模型名称 |
invalid_voice | 音色不支持 | 检查音色参数是否在支持列表中 |
text_too_long | 文本过长 | 减少输入文本长度至512个Token以内 |
quota_exceeded | 配额不足 | 检查账户余额或请求频率限制 |
- 音频文件为空或损坏
- 检查API密钥是否有效
- 确认渠道配置正确
- 验证模型名称和音色参数
- 请求超时
- 检查网络连接
- 减少文本长度
- 重试请求
- 音色不生效
- 确认使用的模型版本支持该音色
- 检查音色参数大小写
qwen-tts 系列模型按照字符数计费:
- 计费单位: 按输入字符数计算
- 计费方式: 预付费模式,从账户余额扣除
- 价格: 详见管理后台的价格配置
- 标点符号: 合理使用标点符号可以改善语音节奏
- 数字处理: 建议将数字写成中文形式(如:123 → 一百二十三)
- 英文单词: 中英混合时,英文单词会按照中文语音规则发音
- 场景匹配: 根据内容类型选择合适的音色
- 一致性: 同一应用建议使用统一的音色
- 测试: 建议先测试各种音色效果再确定
- 缓存: 对于重复的文本可以缓存音频文件
- 分段: 长文本建议分段处理
- 并发: 合理控制并发请求数量
v1.0.0 (2025-08-29)
Section titled “v1.0.0 (2025-08-29)”- :check_mark_button: 新增qwen-tts系列模型支持
- :check_mark_button: 支持7种不同音色
- :check_mark_button: 兼容OpenAI标准API格式
- :check_mark_button: 支持流式和非流式响应
- :check_mark_button: 完整的错误处理机制
- :check_mark_button: 多语言SDK示例
如果在使用过程中遇到问题,请:
- 查看本文档的故障排除部分
- 检查API响应中的错误信息
- 联系技术支持团队
注意: 本API完全兼容OpenAI的/v1/audio/speech接口规范,可以直接替换现有的OpenAI TTS调用。
4All API 页脚
Section titled “4All API 页脚”4All API · 一站式AI大模型API聚合平台 | 价格 | 联系我们
© 2025 4All API. All rights reserved.