Skip to content

文本转语音 / 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

参数名类型必填说明
modelstring必需TTS 模型 ID。可选用 tts-1(标准模型)或 tts-1-hd(高清模型)。
inputstring必需文本内容。要生成音频的源文本,最大长度限制为 4096 个字符。
voicestring必需音色选择。指定生成音频时使用的声音,支持的预设音色包括: alloyechofableonyxnovashimmer
response_formatstring可选音频格式。默认为 mp3。其他支持的格式有:opusaacflac
speednumber可选语速控制。默认值为 1.0。可选择 0.254.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

响应参数

参数名类型必填说明
modelstring必需模型标识符。指定要使用的语音合成模型版本(例如 tts-1-hdIndexTeam/IndexTTS-2 等)。
inputstring必需文本内容。需要转换成语音的原始文字。通常有字符数限制(如最大4096字符),部分接口也支持传入 SSML 格式文本以实现更精细的控制。
voicestring必需音色/发音人。指定生成音频时使用的声音角色(例如 alloyzh-CN-XiaoxiaoNeural 或自定义音色ID)。不同的音色会带来不同的性别、年龄和情感风格。

响应示例

{
    "model": "tts-1",
    "input": "The quick brown fox jumped over the lazy dog.",
    "voice": "alloy"
}

示例代码

python
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"))