Audio API 提供一个基于我们的 speech 的端点 GPT-4o mini TTS(文本转语音)模型。它带有 11 种内置语音,可用于:
- 为撰写的博客文章配音
- 生成多种语言的语音
- 使用流式传输提供实时音频输出
以下是 alloy voice:
我们的 使用政策 要求您向最终用户明确披露,他们听到的 TTS 语音是由 AI 生成的,而非真人语音。
快速入门
The speech 端点接受三个关键输入:
以下是一个简单的请求示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
from pathlib import Path
from openai import OpenAI
client = OpenAI()
speech_file_path = Path(__file__).parent / "speech.mp3"
with client.audio.speech.with_streaming_response.create(
model="gpt-4o-mini-tts",
voice="coral",
input="Today is a wonderful day to build something people love!",
instructions="Speak in a cheerful and positive tone.",
) as response:
response.stream_to_file(speech_file_path)默认情况下,该端点输出 MP3 格式的语音,但您可以将其配置为输出任何 支持的格式.
文本转语音模型
对于智能实时应用,请使用 gpt-4o-mini-tts 模型,这是我们最新、最可靠的文本转语音模型。您可以通过提示词来控制语音的各个方面,包括:
- 口音
- 情感范围
- 语调
- 模仿
- 语速
- 语气
- Whisper
我们的其他文本转语音模型为 tts-1 and tts-1-hd。该 tts-1 模型提供了更低的延迟,但质量低于 tts-1-hd model.
语音选项
TTS 端点提供 13 种内置声音,用于控制从文本生成语音的方式。 在以下页面聆听并体验这些声音 OpenAI.fm,这是我们用于体验 OpenAI API 最新文本转语音模型的交互式演示。这些语音目前针对英语进行了优化。
alloyashballadcoralechofablenovaonyxsageshimmerversemarincedar
为了获得最佳质量,我们建议使用 marin or cedar.
声音的可用性取决于模型。 tts-1 and tts-1-hd 模型支持的声音集较小: alloy, ash, coral, echo, fable, onyx, nova, sage,且 shimmer.
如果您使用的是 Realtime API,请注意可用的语音集略有不同——请参见 实时对话指南 for current realtime voices.
流式传输实时音频
Speech API 支持使用以下方式进行实时音频流式传输 分块传输编码。这意味着可以在完整文件生成并提供访问之前播放音频。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import asyncio
from openai import AsyncOpenAI
from openai.helpers import LocalAudioPlayer
openai = AsyncOpenAI()
async def main() -> None:
async with openai.audio.speech.with_streaming_response.create(
model="gpt-4o-mini-tts",
voice="coral",
input="Today is a wonderful day to build something people love!",
instructions="Speak in a cheerful and positive tone.",
response_format="pcm",
) as response:
await LocalAudioPlayer().play(response)
if __name__ == "__main__":
asyncio.run(main())为了获得最快的响应时间,我们建议使用 wav or pcm 作为响应格式。
支持的输出格式
默认响应格式为 mp3,但其他格式如 opus and wav 也可用。
- MP3:适用于一般用例的默认响应格式。
- Opus:适用于互联网流媒体和通信,低延迟。
- AAC:用于数字音频压缩,是 YouTube、Android 和 iOS 的首选格式。
- FLAC:用于无损音频压缩,深受音频发烧友在归档时的青睐。
- WAV:未压缩的 WAV 音频,适用于低延迟应用,可避免解码开销。
- PCM: 类似于 WAV,但包含 24kHz 的原始采样(16 位有符号,小端序),不含文件头。
支持的语言
在语言支持方面,TTS 模型通常遵循 Whisper 模型。Whisper 支持以下语言 且表现良好,尽管这些声音是针对英语优化的:
南非语、阿拉伯语、亚美尼亚语、阿塞拜疆语、白俄罗斯语、波斯尼亚语、保加利亚语、加泰罗尼亚语、中文、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、加利西亚语、德语、希腊语、希伯来语、印地语、匈牙利语、冰岛语、印度尼西亚语、意大利语、日语、卡纳达语、哈萨克语、韩语、拉脱维亚语、立陶宛语、马其顿语、马来语、马拉地语、毛利语、尼泊尔语、挪威语、波斯语、波兰语、葡萄牙语、罗马尼亚语、俄语、塞尔维亚语、斯洛伐克语、斯洛文尼亚语、西班牙语、斯瓦希里语、瑞典语、他加禄语、泰米尔语、泰语、土耳其语、乌克兰语、乌尔都语、越南语和威尔士语。
您可以通过提供所选语言的输入文本,来生成这些语言的语音。
自定义语音
自定义声音使您能够为您的代理或应用创建独特的声音。这些声音可与 Text to Speech API 一起用于音频输出,该 Realtime API,或该 带音频输出的 Chat Completions API.
要创建自定义声音,您需要提供一段简短的音频参考样本,模型将尝试复制该声音。
创建声音
目前,必须通过 API 请求来创建声音。请参阅 API 参考文档以获取完整的 API 操作集合。
创建声音需要两段独立的音频录音:
- 授权录音 — 此录音用于记录配音演员同意创建其声音肖像的授权。演员必须朗读以下提供的授权短语之一。
- 样本录音 — 模型将尝试匹配的实际音频样本。该声音必须与授权录音相符。
创建高质量声音的技巧
自定义声音的质量在很大程度上取决于您提供的样本质量。优化录音质量会带来显著的效果提升。
- 在回声最小的安静空间内进行录音。
- 使用专业的 XLR 麦克风。
- 与麦克风保持约 7-8 英寸的距离,中间加装防喷罩,并始终保持该距离不变。
- 模型会完全复制您提供的内容——音调、节奏、能量、停顿、习惯——因此请录制您确切想要的声音。在整个过程中保持能量、风格和口音的一致。
- 音频样本中的微小差异可能会导致生成声音的质量差异,建议尝试多个样本以找到最佳效果。
要求与限制
- 每个组织最多可创建 20 个声音。
- 音频样本时长不得超过 30 秒。
- 音频样本必须为以下类型之一:
mpeg,wav,ogg,aac,flac,webm, ormp4.
请参阅《文本转语音补充协议》以了解额外的使用条款。
创建声音授权
授权音频录音只能包含以下短语之一。任何与脚本的偏差都会导致失败。
| 语言 | 短语 |
|---|---|
de | Ich bin der Eigentümer dieser Stimme und bin damit einverstanden, dass OpenAI diese Stimme zur Erstellung eines synthetischen Stimmmodells verwendet. |
en | 我是此声音的所有者,我同意 OpenAI 使用此声音来创建合成语音模型。 |
es | 我是此声音的所有者,我同意 OpenAI 使用此声音来创建合成语音模型。 |
fr | 我是该声音的所有者,并授权 OpenAI 使用该声音来创建合成声音模型。 |
hi | 我是此声音的拥有者,并同意 OpenAI 使用此声音创建合成声音模型。 |
id | 我是此声音的所有者,我同意 OpenAI 使用此声音来创建合成声音模型。 |
it | 我是此声音的所有者,并同意 OpenAI 使用它来创建合成声音模型。 |
ja | 私はこの音声の所有者であり、OpenAIがこの音声を使用して音声合成 モデルを作成することを承認します。 |
ko | 我是此语音的所有者,并允许 OpenAI 使用此语音来创建语音合成模型。 |
nl | 我是此声音的拥有者,并允许 OpenAI 使用此声音来创建合成声音模型。 |
pl | 我是此声音的所有者,同意 OpenAI 使用该声音创建合成声音模型。 |
pt | 我是此语音的所有者,并授权 OpenAI 使用它来创建合成语音模型。 |
ru | 我是此语音的所有者,并同意 OpenAI 使用该语音创建合成语音模型。 |
uk | 我是此语音的所有者,并同意 OpenAI 使用此语音创建合成语音模型。 |
vi | 我是此声音的所有者,并同意 OpenAI 使用此声音来创建合成声音模型。 |
zh | 我是此声音的拥有者并授权OpenAI使用此声音创建语音合成模型 |
然后通过 API 上传录音。上传成功后将返回授权录音 ID,供您稍后引用。请注意,如果同一位配音演员进行多次尝试,同一份授权可用于创建多种不同的声音。
1
2
3
4
5
6
curl https://api.openai.com/v1/audio/voice_consents \
-X POST \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "name=test_consent" \
-F "language=en" \
-F "recording=@$HOME/tmp/voice_consent/consent_recording.wav;type=audio/x-wav"创建声音
接下来,您将通过引用授权录音 ID 并提供声音样本的方式来创建实际的声音。
1
2
3
4
5
6
curl https://api.openai.com/v1/audio/voices \
-X POST \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "name=test_voice" \
-F "audio_sample=@$HOME/tmp/voice_consent/audio_sample_recording.wav;type=audio/x-wav" \
-F "consent=cons_123abc"如果成功,创建的声音将列在 音频选项卡.
在语音生成过程中使用声音
语音生成过程将与往常一样。只需在以下操作的 voice 参数中指定声音 ID: 创建语音,或者在发起 实时会话.
文本转语音示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
curl https://api.openai.com/v1/audio/speech \
-X POST \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini-tts",
"voice": {
"id": "voice_123abc"
},
"input": "Maple est le meilleur golden retriever du monde entier.",
"language": "fr",
"format": "wav"
}' \
--output sample.wavRealtime API 示例
1
2
3
4
5
6
7
8
9
10
11
const sessionConfig = JSON.stringify({
session: {
type: "realtime",
model: "gpt-realtime-2",
audio: {
output: {
voice: { id: "voice_123abc" },
},
},
},
});相关指南
为语音代理、翻译、转录和语音生成选择合适的路径。
了解音频模态、语音任务、流式传输以及基于请求的 API。