文本转语音 / TTS
POST v1/audio/speech了解如何将文本转换为音频。
相关指南:本转换为音频
使用 AI 模型将文本转换为自然语音,支持多种语音风格和输出格式
介绍
文本转语音(TTS)API 基于先进的生成 AI 模型,可以将输入的文本转换为逼真的语音音频。支持多种用途:
为书面博客文章配音
生成多种语言的语音音频
提供实时音频输出流
可用模型列表:
gpt-4o-audio-preview —— OpenAI 最新的音频生成模型,支持对话式音频生成
gpt-4o-mini-tts —— 智能实时应用的首选模型,支持高级语音控制,可以通过提示词控制多种语音特性:
口音 (Accent)
情感范围 (Emotional range)
语调 (Intonation)
印象/风格 (Impressions)
语速 (Speed of speech)
语调 (Tone)
轻声说话 (Whispering)
tts-1-hd —— 高清音质的上一代 TTS 模型
tts-1 —— 标准 TTS 模型,平衡质量和速度
性能建议: 为获得最快的响应时间,建议使用 wav 或 pcm 作为响应格式。对于高质量音频,建议使用 tts-1-hd;对于更快的生成速度,
使用 tts-1;对于智能语音应用,推荐使用 gpt-4o-mini-tts。
音色预览: 你可以在 OpenAI.fm 试听不同音色效果。
模型调用方式
标准 TTS 模型(tts-1, tts-1-hd)
使用 /v1/audio/speech 端点,通过 client.audio.speech.create() 方法调用。
gpt-4o-mini-tts 模型
使用 /v1/audio/speech 端点,支持 instructions 参数进行高级语音控制。
gpt-4o-audio-preview 模型
使用 /v1/chat/completions 端点,需要设置 modalities: ["text", "audio"] 和 audio 配置。
请求参数
Authorization
在 Header 添加参数 Authorization,其值为在 Bearer 之后拼接 Token。
Authorization: Bearer ******************Body 参数
Content-Type: application/json
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 必需 | TTS 模型 ID。可选用 tts-1(标准模型)或 tts-1-hd(高清模型)。 |
| input | string | 必需 | 文本内容。要生成音频的源文本,最大长度限制为 4096 个字符。 |
| voice | string | 必需 | 音色选择。指定生成音频时使用的声音,支持的预设音色包括: alloy、echo、fable、onyx、nova、shimmer。 |
| response_format | string | 可选 | 音频格式。默认为 mp3。其他支持的格式有:opus、aac、flac。 |
| speed | number | 可选 | 语速控制。默认值为 1.0。可选择 0.25 到 4.0 之间的值来调整音频播放速度。 |
请求示例 (JSON)
{
"model": "tts-1",
"input": "The quick brown fox jumped over the lazy dog.",
"voice": "alloy",
"response_format": "wav"
}返回响应
200 成功
Content-Type: application/json
响应参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 必需 | 模型标识符。指定要使用的语音合成模型版本(例如 tts-1-hd、IndexTeam/IndexTTS-2 等)。 |
| input | string | 必需 | 文本内容。需要转换成语音的原始文字。通常有字符数限制(如最大4096字符),部分接口也支持传入 SSML 格式文本以实现更精细的控制。 |
| voice | string | 必需 | 音色/发音人。指定生成音频时使用的声音角色(例如 alloy、zh-CN-XiaoxiaoNeural 或自定义音色ID)。不同的音色会带来不同的性别、年龄和情感风格。 |
响应示例
{
"model": "tts-1",
"input": "The quick brown fox jumped over the lazy dog.",
"voice": "alloy"
}示例代码
import http.client
import json
conn = http.client.HTTPSConnection("nxaiapp.com")
payload = json.dumps({
"model": "tts-1",
"input": "The quick brown fox jumped over the lazy dog.",
"voice": "alloy",
"response_format": "wav"
})
headers = {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
}
conn.request("POST", "/v1/audio/speech", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))