文本转语音
提供 OpenAI
兼容的文本转语音接口。
请求方法
POST
请求地址
https://chat.ecnu.edu.cn/open/api/v1/audio/speech
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
model | string | 是 | 模型名称,目前可用 ecnu-tts ,详见 模型列表 |
input | string | 是 | 要转换为语音的文本,不超过 4096 个字符 |
voice | string | 否 | 语音类型,可选值:xiayu , liwa ,默认为 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类型 |
请求示例
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
[二进制音频数据]
代码示例
直接调用接口
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", # 语音类型
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"] # 不同的语音类型
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}")
语音类型说明
语音类型 | 描述 | 适用场景 |
---|---|---|
xiayu | 男性、平衡的语音 | 通用场景 |
liwa | 女性、平衡的语音 | 通用场景 |
音频格式说明
格式 | 文件大小 | 音质 | 兼容性 | 推荐场景 |
---|---|---|---|---|
mp3 | 小 | 良好 | 广泛支持 | 通用推荐 |
opus | 最小 | 良好 | 现代浏览器 | 网络传输 |
aac | 小 | 优秀 | 苹果设备 | 移动应用 |
flac | 大 | 无损 | 专业设备 | 高质量需求 |
wav | 很大 | 无损 | 广泛支持 | 专业音频处理 |
pcm | 最大 | 原始 | 专业设备 | 实时音频处理 |