文本转语音
提供 OpenAI 兼容的文本转语音接口。
请求方法
POST
请求地址
https://chat.ecnu.edu.cn/open/api/v1/audio/speech
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| model | string | 是 | 模型名称,目前可用 ecnu-tts,详见 模型列表 |
| input | string | 是 | 要转换为语音的文本,不超过 4096 个字符 |
| voice | string | 否 | 音色 ID,可选值详见 音色列表,默认为 xiayu |
| response_format | string | 否 | 音频格式,可选值:mp3, opus, aac, flac, wav, pcm, 默认为 mp3 |
| speed | number | 否 | 语速倍数,范围 0.25-4.0,默认为 1.0 |
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| audio_data | binary | 音频二进制数据 |
| content_type | string | 音频MIME类型 |
请求成功时直接返回音频二进制流,并附带 Content-Disposition 响应头给出建议文件名。选择 pcm 格式时,额外返回 Content-Rate(采样率)、Content-Channels(声道数,固定为 1)、Content-Bits(位深,固定为 16)响应头,便于直接播放原始音频流。
请求示例
http
POST https://chat.ecnu.edu.cn/open/api/v1/audio/speech
Content-Type: application/json
Authorization: Bearer sk-UDK3*******************1Y
{
"model": "ecnu-tts",
"input": "你好,欢迎使用文本转语音服务",
"voice": "xiayu",
"response_format": "mp3",
"speed": 1.0
}返回示例
http
HTTP/1.1 200 OK
Content-Type: audio/mpeg
Content-Length: 123456
Content-Disposition: attachment; filename="speech_1754720000_3f9a2b1c.mp3"
[二进制音频数据]错误返回
参数不合法时返回 400,响应体为 JSON。request_id 可用于排查问题,details 会给出可选值等补充信息。
json
{
"error": "voice 'xiaoming' not found",
"request_id": "3f9a2b1c",
"details": {
"available_voices": ["xiayu", "liwa", "male_warm"]
}
}常见错误:
| 错误信息 | 说明 |
|---|---|
input is required | input 为空 |
speed must be between 0.25 and 4.0 | speed 超出取值范围 |
response_format 'xxx' not supported | response_format 不在支持的格式内 |
voice 'xxx' not found | voice 不是有效的音色 ID |
代码示例
直接调用接口
python
import requests
import json
# 设置API参数
url = "https://chat.ecnu.edu.cn/open/api/v1/audio/speech"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer your-api-key" # 替换为您的API密钥
}
# 文本转语音请求
data = {
"model": "ecnu-tts",
"input": "你好,欢迎使用文本转语音服务",
"voice": "xiayu",
"response_format": "mp3",
"speed": 1.0
}
response = requests.post(url, headers=headers, data=json.dumps(data))
# 保存音频文件
if response.status_code == 200:
with open("output.mp3", "wb") as f:
f.write(response.content)
print("音频文件已保存为 output.mp3")
else:
print(f"请求失败: {response.status_code}")使用 OpenAI SDK
python
from openai import OpenAI
import os
client = OpenAI(
base_url="https://chat.ecnu.edu.cn/open/api/v1",
api_key="your-api-key" # 替换为您的API密钥
)
# 文本转语音请求
response = client.audio.speech.create(
model="ecnu-tts", # 指定模型
voice="xiayu", # 音色 ID
input="你好,欢迎使用文本转语音服务", # 输入文本
response_format="mp3", # 音频格式
speed=1.0 # 语速
)
# 保存音频文件
with open("output.mp3", "wb") as f:
f.write(response.content)
print("音频文件已保存为 output.mp3")批量文本转语音
python
from openai import OpenAI
import os
client = OpenAI(
base_url="https://chat.ecnu.edu.cn/open/api/v1",
api_key="your-api-key" # 替换为您的API密钥
)
# 批量文本列表
texts = [
"第一段文本内容",
"第二段文本内容",
"第三段文本内容"
]
voices = ["xiayu", "liwa", "male_news"] # 不同的音色
for i, (text, voice) in enumerate(zip(texts, voices)):
response = client.audio.speech.create(
model="ecnu-tts",
voice=voice,
input=text,
response_format="mp3"
)
# 保存为不同文件
filename = f"speech_{i+1}.mp3"
with open(filename, "wb") as f:
f.write(response.content)
print(f"音频文件已保存为 {filename}")音色列表
通过 voice 参数指定音色 ID,默认为 xiayu。
校园
| 音色 ID | 名称 | 描述 | 适用场景 |
|---|---|---|---|
xiayu | 夏雨 | 男声,音色平衡(默认音色) | 通用场景 |
liwa | 丽娃 | 女声,音色平衡 | 通用场景 |
男声
| 音色 ID | 名称 | 描述 | 适用场景 |
|---|---|---|---|
male_warm | 温润男声 | 温和舒缓,情绪克制 | 情感叙述、有声书 |
male_steady | 稳重学长 | 年轻沉稳,讲述感强 | 课程讲解、校园宣传 |
male_news | 男声·新闻 | 标准播报腔,字正腔圆 | 新闻播报、通知公告 |
male_philosophy | 男声·哲理 | 语速偏慢,思辨感强 | 观点评述、文案朗读 |
yunze | 云泽大叔 | 中年男声,浑厚有力 | 纪录片解说、科普讲述 |
女声
| 音色 ID | 名称 | 描述 | 适用场景 |
|---|---|---|---|
female_sweet | 甜美女声 | 明亮甜美,亲和力强 | 智能客服、导览播报 |
female_literary | 女声·文艺 | 舒缓细腻,文艺气质 | 散文朗读、品牌文案 |
female_news | 女声·新闻 | 标准播报腔,节奏明快 | 新闻播报、通知公告 |
方言
| 音色 ID | 名称 | 描述 | 适用场景 |
|---|---|---|---|
sichuan | 四川话 | 四川方言 | 方言配音、趣味内容 |
tianjin | 天津话 | 天津方言 | 方言配音、趣味内容 |
shaanxi | 陕西话 | 陕西方言 | 方言配音、趣味内容 |
多语与角色
| 音色 ID | 名称 | 描述 | 适用场景 |
|---|---|---|---|
japanese | 日语 | 日语音色 | 日语内容合成 |
lindaiyu | 林黛玉 | 古典戏剧角色音色 | 角色配音、趣味内容 |
labixiaoxin | 蜡笔小新 | 动画角色音色 | 角色配音、趣味内容 |
方言与角色音色针对特定语料训练,在朗读长段落书面语时可能出现口音或语气不稳定,建议先用短文本试听后再批量使用。
音频格式说明
| 格式 | 文件大小 | 音质 | 兼容性 | 推荐场景 |
|---|---|---|---|---|
| mp3 | 小 | 良好 | 广泛支持 | 通用推荐 |
| opus | 最小 | 良好 | 现代浏览器 | 网络传输 |
| aac | 小 | 优秀 | 苹果设备 | 移动应用 |
| flac | 大 | 无损 | 专业设备 | 高质量需求 |
| wav | 很大 | 无损 | 广泛支持 | 专业音频处理 |
| pcm | 最大 | 原始 | 专业设备 | 实时音频处理 |