OpenAI 自定义声音
自定义声音可以为智能体或应用创建声音。可以选择以下创建方式:
- 根据文字描述创建:使用“提示词生成声音”(prompt-to-voice)为 GPT-Live生成声音,在文本提示词中描述需要的嗓音特征。
- 根据录音创建:提供授权录音和一段简短的参考样本。这类声音可以用于 GPT-Live、文字转语音 API、Realtime API或支持音频输出的 Chat Completions API。
选择已有 GPT-Live 声音的方法见声音选项。
根据描述创建声音
提示词生成声音会根据文字描述创建并保存声音。这种工作流不需要参考录音或授权录音。
提示词生成声音已向所有 API 客户正式开放。提示词生成的声音可用于 GPT-Live,不支持文字转语音、Realtime 或 Chat Completions API。
负责任地使用
- 负责任地使用声音。不要冒充他人或违反使用政策。
- 使用成年人声音。不允许使用儿童声音。
- 保持透明。告知听众语音由 AI 生成,并保留来源元数据、水印或其他标识合成来源的信息。
- 不保证声音独一无二。其他人可能生成相似的声音或输出。输出的所有权仍受你与 OpenAI 的协议约束。
- 你及终端用户使用提示词生成声音功能时,适用服务条款。
创建并保存声音
可以通过 API 或声音 Playground创建声音。创建提示词生成的声音免费;使用该声音在 GPT-Live 中生成语音,按正常会话费率计费。
向 /v1/audio/voices 发送 JSON 请求,并把 type 设为 prompt:
来源示例 1(bash):
程序文字译释8:名称为“客服助手”;声音描述是平静、令人安心的成年人声音,使用美式英语口音、中等音高、平滑温暖音色与稳定自然的对话语速。
## [中文] 示例 1:创建并保存声音;以下保留本语言原始示例。
## [中文] 本段涉及的 HTTP 端点:/v1/audio/voices;认证和请求体保持原示例形式。
curl --fail-with-body https://api.openai.com/v1/audio/voices \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "prompt",
"name": "Support assistant",
"prompt": "A calm, reassuring adult voice for a customer support assistant. Speak with an American English accent, a mid-range pitch, a smooth, warm tone, and a steady, conversational pace.",
"model": "auto"
}' \
-o voice.json
script_hint 是用于引导声音生成的可选示例台词。省略时,服务会根据声音描述生成台词;自行提供时,最多包含 2,000 个字符的代表性语音文本。空白或过短的台词会被拒绝。
每次成功请求都会创建一个新的已保存声音。响应包含 ID、以 Unix 秒表示的创建时间和原始声音描述提示词等元数据,不包含音频或试听片段:
来源示例 2(json):
程序文字译释9:客服助手。
程序文字译释10:平静、令人安心的成年人客服声音;美式英语口音、中等音高、平滑温暖音色、稳定自然的对话语速。
{
"object": "audio.voice",
"id": "voice_123",
"name": "Support assistant",
"created_at": 0,
"type": "prompt",
"prompt": "A calm, reassuring adult voice for a customer support assistant. Speak with an American English accent, a mid-range pitch, a smooth, warm tone, and a steady, conversational pace."
}
保存返回的 id 和原始声音提示词。如果希望另一会话使用相同声音,应复用已保存的声音。每个组织最多创建 100 个提示词生成的声音;应用为自己的客户创建的声音也计入这一限额。
描述声音
用日常语言描述嗓音特征,例如:
来源示例 3(text):
本例中文译文与说明:
平静、令人安心的成年人客服助手声音。使用美式英语口音、中等音高、平滑温暖的音色,以及稳定自然的对话语速。
A calm, reassuring adult voice for a customer support assistant. Speak with an
American English accent, a mid-range pitch, a smooth, warm tone, and a steady,
conversational pace.
下表给出可以描述的特征。这些是提示词中的文字,不是独立 API 参数:
| 特征 | 描述内容 | 措辞示例 |
|---|---|---|
| 口音 | 地区发音及口音强度 | 美式英语,口音明显 |
| 年龄 | 听感上的年龄 | 三十多岁的成年人 |
| 声音呈现 | 声音呈现出的特质 | 偏女性化 |
| 音高 | 声音的高低 | 中等音高 |
| 音色 | 声音的色彩 | 圆润、饱满 |
| 质感 | 沙哑、嘶哑或清晰程度 | 平滑清晰 |
| 响度 | 发声用力程度 | 适度用力发声 |
| 语速 | 说话快慢 | 中等速度 |
| 辨识度 | 希望声音个性有多鲜明 | 具有适度辨识度 |
应描述特征本身,不要要求模仿某个具名人物、公众人物或虚构角色。不允许使用儿童声音,应描述成年人的声音。
描述示例
以以下描述为起点,并在应用中聆听生成结果。
平静的助手:
来源示例 4(text):
本例中文译文与说明:
温暖的成年人声音,中等音高、平滑饱满的音色。适度用力发声,以从容、令人安心的方式表达。
A warm adult voice with a mid-range pitch and smooth, rich timbre.
Use moderate vocal effort and an unhurried, reassuring delivery.
活泼的向导:
来源示例 5(text):
本例中文译文与说明:
明亮清晰的成年人声音,音高稍高,音色略带质感。用活泼自然的对话方式表达,语速轻快但容易跟上。
A bright, clear adult voice with a slightly higher pitch and a lightly textured timbre.
Use a lively, conversational delivery at a brisk but easy-to-follow pace.
回答长度、打断处理和委派时机等对话规则,应放在 GPT-Live 会话指令中。
在 GPT-Live 中试听声音
在 Playground 试听声音会运行 GPT-Live 会话,并按正常会话计费。
把 session.audio.output.voice.id 设为返回的声音 ID。为使声音按预期表现,应在 session.instructions 中同时包含原始声音描述和应用的对话指令。
将 voice_123 替换为创建请求返回的 ID:
来源示例 6(json):
程序文字译释11:你是乐于助人的语音助手。使用平静、令人安心的成年人客服声音,美式英语口音、中等音高、平滑温暖音色,稳定自然地交谈。
{
"model": "gpt-live-1",
"instructions": "You are a helpful voice assistant. A calm, reassuring adult voice for a customer support assistant. Speak with an American English accent, a mid-range pitch, a smooth, warm tone, and a steady, conversational pace.",
"audio": { "output": { "voice": { "id": "voice_123" } } }
}
使用 WebRTC时,把此配置放入 JSON 的 session 字段,与 transport 并列;使用 WebSockets时,将它放入第一个 session.start 事件。按照连接指南发送音频并收听声音。声音在启动时选择;要试听其他声音,需要启动新会话。
通过 /v1/audio/voices 创建声音,包括从录音创建,不兼容零数据保留(ZDR)。如果组织或项目启用了零数据保留,GPT-Live 语音生成可以适用该机制;存储的会话录音、录音下载和会话分叉则不可用。会话存储与保留要求见数据控制。
改进并复用
每次只调整一个特征,用相同短文和几个对话轮次比较结果,聆听口音、语速及应用需要的其他特征。保留并复用最合适的声音 ID。
每次创建请求都会保存一个新声音。要尝试另一已保存声音,应使用其 ID 启动新的 GPT-Live 会话。
根据录音创建声音
提供一段简短的参考音频样本,模型会尝试复现其中的声音。
从录音创建自定义声音仅面向符合条件的客户。详情请联系销售团队。组织开通后,可访问 Audio 下的 Voices 选项卡。
准备并上传录音
从录音创建声音必须通过 API 请求完成。完整操作集合见 API 参考。
需要两段独立录音:
- 授权录音:录下配音者同意创建其声音副本的声明。配音者必须朗读下表中的一条授权声明。
- 样本录音:模型实际参照的声音样本,声音必须与授权录音一致。
制作高质量声音的建议:
自定义声音的质量很大程度上取决于提供的样本质量。改善录音质量可以显著影响结果。
- 在安静、回声尽可能小的空间录音。
- 使用专业 XLR 麦克风。
- 与麦克风保持约 7–8 英寸距离,中间放置防喷罩,并保持距离不变。
- 模型会复制你提供的语气、节奏、活力、停顿和习惯,因此要录制你实际想要的声音,始终保持活力、风格和口音一致。
- 音频样本的小幅变化也可能造成生成质量差异,可尝试多份样本找到合适结果。
要求与限制:
- 每个组织最多创建 20 个基于录音的声音。
- 音频样本时长不得超过 60 秒。
- 支持的音频类型为
mpeg、wav、ogg、aac、flac、webm或mp4。
其他使用条款见文字转语音补充协议。
创建声音授权:
授权音频只能包含下表中的一条声明。任何偏离规定文本的内容都会导致失败。以下保留各语言必须朗读的原文;这些声明表达的共同含义是:声音拥有者同意 OpenAI 使用其声音创建合成语音模型。
| 语言 | 授权声明原文 |
|---|---|
德语 (de) |
Ich bin der Eigentümer dieser Stimme und bin damit einverstanden, dass OpenAI diese Stimme zur Erstellung eines synthetischen Stimmmodells verwendet. |
英语 (en) |
I am the owner of this voice and I consent to OpenAI using this voice to create a synthetic voice model. |
西班牙语 (es) |
Soy el propietario de esta voz y doy mi consentimiento para que OpenAI la utilice para crear un modelo de voz sintética. |
法语 (fr) |
Je suis le propriétaire de cette voix et j'autorise OpenAI à utiliser cette voix pour créer un modèle de voix synthétique. |
印地语 (hi) |
मैं इस आवाज का मालिक हूं और मैं सिंथेटिक आवाज मॉडल बनाने के लिए OpenAI को इस आवाज का उपयोग करने की सहमति देता हूं |
印度尼西亚语 (id) |
Saya adalah pemilik suara ini dan saya memberikan persetujuan kepada OpenAI untuk menggunakan suara ini guna membuat model suara sintetis. |
意大利语 (it) |
Sono il proprietario di questa voce e acconsento che OpenAI la utilizzi per creare un modello di voce sintetica. |
日语 (ja) |
私はこの音声の所有者であり、OpenAIがこの音声を使用して音声合成 モデルを作成することを承認します。 |
韩语 (ko) |
나는 이 음성의 소유자이며 OpenAI가 이 음성을 사용하여 음성 합성 모델을 생성할 것을 허용합니다. |
荷兰语 (nl) |
Ik ben de eigenaar van deze stem en ik geef OpenAI toestemming om deze stem te gebruiken om een synthetisch stemmodel te maken. |
波兰语 (pl) |
Jestem właścicielem tego głosu i wyrażam zgodę na wykorzystanie go przez OpenAI w celu utworzenia syntetycznego modelu głosu. |
葡萄牙语 (pt) |
Eu sou o proprietário desta voz e autorizo o OpenAI a usá-la para criar um modelo de voz sintética. |
俄语 (ru) |
Я являюсь владельцем этого голоса и даю согласие OpenAI на использование этого голоса для создания модели синтетического голоса. |
乌克兰语 (uk) |
Я є власником цього голосу і даю згоду OpenAI використовувати цей голос для створення синтетичної голосової моделі. |
越南语 (vi) |
Tôi là chủ sở hữu giọng nói này và tôi đồng ý cho OpenAI sử dụng giọng nói này để tạo mô hình giọng nói tổng hợp. |
中文 (zh) |
我是此声音的拥有者并授权OpenAI使用此声音创建语音合成模型 |
然后通过 API 上传录音。成功后会返回授权录音 ID,后续创建声音时需要引用。同一位配音者多次尝试创建不同声音时,可以复用同一份授权。
来源示例 7(bash):
## [中文] 示例 7:准备并上传录音;以下保留本语言原始示例。
## [中文] 本段涉及的 HTTP 端点:/v1/audio/voice_consents;认证和请求体保持原示例形式。
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,并提供声音样本,创建实际声音。
来源示例 8(bash):
## [中文] 示例 8:准备并上传录音;以下保留本语言原始示例。
## [中文] 本段涉及的 HTTP 端点:/v1/audio/voices;认证和请求体保持原示例形式。
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"
成功后,新声音会出现在 Audio 选项卡中。
在语音生成中使用从录音创建的声音
使用 gpt-realtime-2.1-mini 和 Realtime API生成自定义声音的语音。在会话第一次音频回复之前,把 session.audio.output.voice 设为包含声音 ID 的对象。
配置 Realtime 会话:
创建 Realtime 客户端密钥时使用以下请求体,再按照 WebRTC 连接指南用该密钥连接。将 voice_123abc 替换为声音创建请求返回的 ID:
来源示例 9(javascript):
程序文字译释12:朗读用户文字,不添加说明。
// [中文] 示例 9:在语音生成中使用从录音创建的声音;以下保留本语言原始示例。
// [中文] 原代码明确设置的模型值:gpt-realtime-2.1-mini;各值的作用按其所在配置对象区分。
const sessionConfig = JSON.stringify({
session: {
type: "realtime",
model: "gpt-realtime-2.1-mini",
instructions: "Read the user's text aloud without adding commentary.",
output_modalities: ["audio"],
audio: {
output: {
voice: { id: "voice_123abc" },
},
},
},
});
来源示例 10(ruby):
沿用程序文字译释12。
## [中文] 示例 10:在语音生成中使用从录音创建的声音;以下保留本语言原始示例。
## [中文] 原代码明确设置的模型值:gpt-realtime-2.1-mini;各值的作用按其所在配置对象区分。
## Replace the illustrative IDs and URLs below with your own resource values.
require "json"
session_config = JSON.generate(
session: {
type: "realtime",
model: "gpt-realtime-2.1-mini",
instructions: "Read the user's text aloud without adding commentary.",
output_modalities: ["audio"],
audio: { output: { voice: { id: "voice_123abc" } } }
}
)
puts(session_config)
生成文字转语音时,先添加包含待朗读文本的用户消息,再发送 response.create,把 output_modalities 设为 ["audio"]。会话指令要求模型朗读提供的文本。按通过 WebRTC 处理音频所述,从 WebRTC 音频轨道接收生成音频。
在 GPT-Live 中使用从录音创建的声音
使用同时获准访问 GPT-Live 与自定义声音创建功能的项目级 API 密钥。读取授权声明和使用自定义声音需要 api.voices.read;创建授权与声音需要 api.voices.write 及自定义声音 API 访问权限。所有请求使用同一项目,密钥保存在可信服务器上。
准备录音
录音前列出当前支持的授权声明:
来源示例 11(bash):
## [中文] 示例 11:准备录音;以下保留本语言原始示例。
## [中文] 本段涉及的 HTTP 端点:/v1/audio/consent_phrases;认证和请求体保持原示例形式。
curl https://api.openai.com/v1/audio/consent_phrases \
-H "Authorization: Bearer $OPENAI_API_KEY"
授权录音和参考样本必须来自同一个人。样本至少包含五秒实际讲话和至少 15 个转录文本词元,静音不计入。使用包含多个完整句子的 10–60 秒录音,每次上传不超过 10 MiB。服务会从录音提取参考转录文本。
浏览器录音器可能把音频标为 audio/webm;codecs=opus,上传端点会拒绝该类型。构造上传内容时,使用受支持的基础 MIME 类型 audio/webm,同时保留原始音频字节。使用前述授权和声音创建请求,并保存返回的声音 ID。
创建会话时选择声音
自定义声音以对象传递,例如 { "id": "voice_123" };"marin" 等具名声音则使用字符串。
gpt-live-1 支持带英语口音的自定义声音。要使用某种口音,还应在 session.instructions 中明确指定,例如 "Speak British English"(说英式英语)或 "Speak Irish English"(说爱尔兰英语)。以下示例使用英式英语,可按需要更换。
初始会话中包含以下配置:
来源示例 12(json):
程序文字译释13:你是乐于助人的语音助手,说英式英语。
{
"model": "gpt-live-1",
"instructions": "You are a helpful voice assistant. Speak British English.",
"audio": { "output": { "voice": { "id": "voice_123" } } }
}
使用 WebRTC时,由应用服务器将此配置放入 JSON 的 session 字段,与 transport 并列。请求应用服务器时使用应用自身的凭证,OpenAI API 密钥保留在服务器。
使用 WebSockets时,将配置放入第一个 session.start 事件。按照连接指南流式传输音频并关闭会话。
处理访问与生命周期失败
- 在创建会话时选择声音;要换声音,启动新会话。
- 声音被删除或撤销、授权来自其他项目,或缺少自定义声音访问权限,都可能表现为
404。 - 格式错误的音频、讲话者不一致或非项目级密钥会被拒绝。
创建声音之前,确认项目权限、录音最小要求和上传限制。会话设置的要求见 GPT-Live 入门。

TRAE-AI编程


更多建议: