English
主导航

旧版 API

文本转语音

了解如何将文本转换为逼真的语音。

Audio API 提供一个基于我们的 speech 的端点 GPT-4o mini TTS(文本转语音)模型。它带有 11 种内置语音,可用于:

  • 为撰写的博客文章配音
  • 生成多种语言的语音
  • 使用流式传输提供实时音频输出

以下是 alloy voice:

我们的 使用政策 要求您向最终用户明确披露,他们听到的 TTS 语音是由 AI 生成的,而非真人语音。

快速入门

The speech 端点接受三个关键输入:

  1. The 模型 您正在使用的
  2. The 文本 要转换为音频的
  3. The 语音 用于朗读输出的

以下是一个简单的请求示例:

根据输入文本生成语音
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 最新文本转语音模型的交互式演示。这些语音目前针对英语进行了优化。

  • alloy
  • ash
  • ballad
  • coral
  • echo
  • fable
  • nova
  • onyx
  • sage
  • shimmer
  • verse
  • marin
  • cedar

为了获得最佳质量,我们建议使用 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 操作集合。

创建声音需要两段独立的音频录音:

  1. 授权录音 — 此录音用于记录配音演员同意创建其声音肖像的授权。演员必须朗读以下提供的授权短语之一。
  2. 样本录音 — 模型将尝试匹配的实际音频样本。该声音必须与授权录音相符。

创建高质量声音的技巧

自定义声音的质量在很大程度上取决于您提供的样本质量。优化录音质量会带来显著的效果提升。

  • 在回声最小的安静空间内进行录音。
  • 使用专业的 XLR 麦克风。
  • 与麦克风保持约 7-8 英寸的距离,中间加装防喷罩,并始终保持该距离不变。
  • 模型会完全复制您提供的内容——音调、节奏、能量、停顿、习惯——因此请录制您确切想要的声音。在整个过程中保持能量、风格和口音的一致。
  • 音频样本中的微小差异可能会导致生成声音的质量差异,建议尝试多个样本以找到最佳效果。

要求与限制

  • 每个组织最多可创建 20 个声音。
  • 音频样本时长不得超过 30 秒。
  • 音频样本必须为以下类型之一: mpeg, wav, ogg, aac, flac, webm, or mp4.

请参阅《文本转语音补充协议》以了解额外的使用条款。

创建声音授权

授权音频录音只能包含以下短语之一。任何与脚本的偏差都会导致失败。

语言短语
deIch 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.wav

Realtime 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。