自訂語音可讓你為智慧體或應用程式建立獨特的語音。這些語音可透過 文字轉語音 API、Realtime API 或支援音訊輸出的 Chat Completions API 來輸出音訊。
若要建立自訂語音,你需要提供一小段參考音訊樣本,模型會嘗試模仿其中的聲音。
Custom voices are limited to eligible customers. Contact our sales team to learn more. Once enabled for your organization, you’ll have access to the Voices tab under Audio.
建立語音
目前必須透過 API 請求建立語音。如需完整的 API 操作說明,請參閱 API 參考文件。
建立語音需要兩段獨立的錄音:
- 同意錄音: 這段錄音用來記錄配音員同意建立模仿其聲音的語音。配音員必須朗讀下方提供的其中一則同意聲明。
- 樣本錄音: 模型會嘗試依循的實際音訊樣本。聲音必須與同意錄音中的聲音相符。
建立高品質語音的訣竅
自訂語音的品質很大程度取決於你提供的樣本品質。改善錄音品質能大幅提升效果。
- 在安靜且回音極少的空間錄音。
- 使用專業的 XLR 麥克風。
- 與麥克風保持約 7–8 英吋的距離,在中間放置防噴罩,並全程維持相同距離。
- 模型會完整模仿你提供的聲音,包括語氣、節奏、活力、停頓和說話習慣,因此請直接錄下你想要的聲音。全程保持一致的活力、風格和口音。
- 音訊樣本的細微差異可能影響生成語音的品質。請嘗試多個樣本,找出最合適的效果。
要求與限制
- 每個組織最多可建立 20 個語音。
- 音訊樣本長度不得超過 30 秒。
- 音訊樣本必須使用下列其中一種格式:
mpeg、wav、ogg、aac、flac、webm或mp4。
如需其他使用條款,請參閱《文字轉語音補充協議》。
建立語音同意紀錄
同意錄音只能包含下列其中一則聲明。任何與原文不符的內容都會導致失敗。
| 語言 | 聲明 |
|---|---|
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,供你稍後引用。請注意,如果同一位配音員要多次嘗試建立不同語音,可以重複使用同一份同意紀錄。
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 並提供語音樣本,即可建立實際的語音。
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 即可。
文字轉語音範例
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 範例
若使用 Ruby,請先將 voice_123 替換為你的自訂語音 ID,再執行範例。
const sessionConfig = JSON.stringify({
session: {
type: "realtime",
model: "gpt-realtime-2",
audio: {
output: {
voice: { id: "voice_123abc" },
},
},
},
});在 GPT-Live 中使用自訂語音
請使用限定於專案範圍,且已獲准用於 GPT-Live 和建立自訂語音的
API 金鑰。讀取同意聲明及使用自訂語音需要
api.voices.read;建立同意紀錄及語音則需要 api.voices.write 和
自訂語音 API 存取權。所有請求都必須使用同一個專案,並將 API 金鑰
保存在可信任的伺服器上。
準備錄音
錄音前,先列出目前支援的同意聲明:
curl https://api.openai.com/v1/audio/consent_phrases \
-H "Authorization: Bearer $OPENAI_API_KEY"
同意錄音和參考樣本必須來自同一個人。 樣本必須包含至少五秒的實際說話內容,且轉錄文字至少須有 15 個 Token; 靜音不計入。請使用包含數個完整句子、長度為 10–30 秒的 錄音。每次上傳的大小上限為 10 MiB。 服務會擷取參考樣本的轉錄文字;請勿上傳轉錄文字的 Token、 設定解碼器或新增自訂請求標頭。
瀏覽器錄音工具可能會將音訊標記為 audio/webm;codecs=opus,但上傳
端點不接受此類型。建立上傳請求時,請使用支援的基本 MIME 類型
audio/webm,並保留原始音訊位元組。使用上述建立同意記錄和語音的
請求,然後儲存傳回的語音 ID。
在建立工作階段時選擇語音
請以物件 { "id": "voice_123" } 傳入自訂語音,而非使用字串
"voice_123"。像 "marin" 這類具名語音則使用字串。
gpt-live-1 支援帶有英語口音的自訂語音。若要使用特定口音,也請
在 session.instructions 中指定,例如 "Speak British English" 或 "Speak
Irish English."。下方範例使用英式英語;請修改指示,
以符合你希望自訂語音使用的口音。
請在初始工作階段中加入下列組態:
{
"model": "gpt-live-1",
"instructions": "You are a helpful voice assistant. Speak British English.",
"audio": { "output": { "voice": { "id": "voice_123" } } }
}
使用 WebRTC 時,受信任的工作階段中介服務
會將此組態放入 JSON 的 session 欄位,與 transport 並列。
Live 端點要求使用 JSON,不接受 multipart 或原始 SDP。請從 session.id 讀取
已建立的工作階段 ID,並從 transport.sdp 讀取 SDP 回應。
向託管的中介服務發出請求時,請使用應用程式憑證進行驗證;切勿將 OpenAI
API 金鑰暴露給瀏覽器。
使用 WebSockets 時,請將組態
放入第一個 session.start 事件。連線時不要加入查詢參數,並等待
session.started 後再開始串流音訊。使用
session.input_audio.append 傳送音訊。傳送 session.close 後,請持續接收,直到
session.closed 提供最終用量。
處理存取與生命週期錯誤
- Live 工作階段啟動後,就無法變更輸出語音。若要使用不同的語音,請啟動新的工作階段。
- 語音已遭刪除或撤銷、同意記錄來自其他專案,或缺少自訂語音存取權時,都可能出現
404錯誤。 - 音訊格式錯誤、說話者不符,或金鑰的存取範圍未限定於專案時,請求都會遭到拒絕。
建立語音前,請確認專案權限、錄音的最低要求及上傳限制。 如需工作階段設定要求,請參閱開始使用 GPT-Live 。