カスタム音声を使うと、エージェントやアプリケーションで使う声を作成できます。作成方法は次の 2 つです。
- 説明から作成: プロンプトから GPT-Live 用の声を生成します。希望する声の特徴をテキストプロンプトで説明してください。
- 録音から作成: 話者の同意を記録した音声と、声の見本となる短いサンプルを用意します。この方法で作成した声は、GPT-Live、Text to Speech API、Realtime API、Chat Completions API の音声出力で使用できます。
GPT-Live の既存の声から選ぶ方法は、音声の選択肢を参照してください。
説明からの音声作成
テキストプロンプトで声の特徴を説明すると、その説明に基づいて声が作成され、保存されます。この方法では、声のサンプルも同意を記録した音声も必要ありません。
プロンプトからの音声作成は、すべての API ユーザーが利用できます。作成した声は GPT-Live で使用できます。Text to Speech API、Realtime API、Chat Completions API は、この方法で作成した声には対応していません。
責任ある利用
- 責任を持って音声を利用してください。 他人になりすましたり、OpenAI の利用ポリシーに違反したりしないでください。
- 成人の声を使用してください。 子どもの声は使用できません。
- AI で生成した音声であることを明示してください。 音声が AI によって生成されたことを聞き手に伝え、出所を示すメタデータ、電子透かしなど、合成音声であることを示す情報を保持してください。
- 生成した声が唯一無二である保証はありません。 他のユーザーが似た声や出力を生成する場合があります。出力の所有権については、引き続き OpenAI との契約に定められた条件が適用されます。
- サービス規約 は、お客様およびエンドユーザーがプロンプトから音声を作成する機能を利用する際に適用されます。
音声の作成と保存
API または音声用 Playground で声を作成します。プロンプトからの音声作成は無料です。作成した声を使って GPT-Live で音声を生成すると、通常のセッション料金がかかります。
/v1/audio/voices に、type を prompt に設定した JSON リクエストを送信します。
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.jsonscript_hint は、音声生成の参考にする任意の台本です。省略すると、サービスが声の説明から台本を生成します。自分で用意する場合は、その声で話す内容の典型例を 2,000 文字以内で指定してください。空の台本や短すぎる台本は受け付けられません。
リクエストが成功するたびに、新しい声が作成され、保存されます。レスポンスには、声の ID、Unix 時間(秒)で表した作成日時、声の説明に使った元のプロンプトなどのメタデータが含まれます。音声データやプレビューは含まれません。
{
"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 件です。アプリケーションが顧客向けに声を作成する場合にも、この上限が適用されます。
声の特徴の説明
声の特徴は、次の例のように日常的な言葉で説明してください。
カスタマーサポートのアシスタントにふさわしい、落ち着きと安心感のある成人の声。
アメリカ英語のアクセントで話してください。声の高さは中くらいで、なめらかで温かみのある声にしてください。
普段の会話のように、一定のペースで話してください。
プロンプトに記述できる声の特徴と、その表現例を以下に示します。各項目は個別の API パラメータではなく、プロンプトの文章に含めます。
| 特徴 | 説明する内容 | 表現例 |
|---|---|---|
| アクセント | 地域特有の発音とアクセントの強さ | アメリカ英語のアクセントが強い |
| 年齢 | 声から受ける年齢の印象 | 30 代の成人 |
| 声の印象 | 声がどのような印象を与えるか | 女性的 |
| 声の高さ | 声がどのくらい低く、または高く聞こえるか | 中くらいの高さ |
| 音色 | 声の響き | なめらかで深みがある |
| 声の質感 | ざらつきやかすれの有無、声の澄み具合 | なめらか |
| 声量 | 声を出すときの力の入れ具合 | 適度に力の入った声 |
| 話す速さ | 発話のテンポ | 中くらいの速さ |
| 個性 | 声の個性をどの程度際立たせるか | ほどよく個性的 |
声そのものの特徴を説明してください。特定の人物、公人、架空のキャラクターの声をまねるよう指示しないでください。子どもの声は認められていないため、成人の声を指定してください。
声の説明例
以下の説明を出発点にして、生成した声をアプリケーションで聞いてみてください。
落ち着いたアシスタント
温かみのある成人の声。高さは中くらいで、なめらかで深みのある声色にしてください。
声にはほどよく力を込め、聞き手が安心できるように、ゆったりと話してください。
快活なガイド
明るく澄んだ、少し高めの成人の声。声色にはほんの少しざらつきを持たせてください。
会話をするように生き生きと、聞き取りやすい軽快なテンポで話してください。
回答の長さ、割り込みへの対応、他に対応を委ねるタイミングなど、会話に関するルールは GPT-Live のセッション指示に記述してください。
GPT-Live での試聴
Playground で声を試聴すると、GPT-Live セッションが実行され、通常のセッション料金がかかります。
session.audio.output.voice.id に、返された音声 ID を設定します。意図した声で話せるよう、session.instructions には、アプリケーションの会話に関する指示とともに、作成時に使った声の説明を含めてください。
voice_123 を、音声作成リクエストで返された ID に置き換えてください。
{
"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 を使った音声作成はゼロデータ保持に対応していません。組織またはプロジェクトでゼロデータ保持を有効にすると、GPT-Live での音声生成はゼロデータ保持の対象になります。ゼロデータ保持を使用する場合、セッション録音の保存、録音のダウンロード、セッションのフォークは利用できません。セッションの保存と保持に関する要件は、データ管理を参照してください。
声の調整と再利用
声の特徴を 1 つずつ変更し、同じ短い文章と数往復の会話で結果を比較します。アクセントや話す速さなどが、アプリケーションで必要とする声に合っているかを聞き比べてください。気に入った声の ID を保存して再利用します。
作成リクエストごとに新しい声が保存されます。保存済みの別の声を試すには、その ID を指定して新しい GPT-Live セッションを開始してください。
録音からの音声作成
録音から声を作成するには、声の見本となる短い音声サンプルを用意します。モデルはそのサンプルの声を再現しようとします。
録音の準備とアップロード
録音から声を作成するには、API リクエストを使用する必要があります。利用できる操作の一覧は、API リファレンスを参照してください。
録音から声を作成するには、次の 2 つの音声を別々に録音してください。
- 同意録音: 自分の声に似た音声を作成することに話者本人が同意していることを記録します。話者は、以下の同意文のいずれかを読み上げる必要があります。
- サンプル録音: モデルが声を再現する際の見本となる音声です。話者の声は同意録音と一致している必要があります。
高品質な声を作成するためのヒント
カスタム音声の品質は、用意するサンプルの品質に大きく左右されます。録音の質を高めることで、生成した声の品質を大きく改善できます。
- 反響の少ない静かな場所で録音してください。
- プロ仕様の XLR マイクを使用してください。
- 口とマイクの間にポップフィルターを置き、マイクから約 18~20 cm(7~8 インチ)の距離を一定に保ってください。
- モデルは声の調子、抑揚、勢い、間の取り方、話し方の癖までそのまま再現するため、実際に使いたい声で録音してください。録音全体を通して、声の勢い、話し方、アクセントを一定に保ってください。
- サンプル音声のわずかな違いが、生成される声の品質の差につながることがあります。複数のサンプルを試し、目的に最も合うものを選んでください。
要件と制限
- 録音から作成できる声は、組織ごとに最大 20 件です。
- 音声サンプルの長さは 60 秒以内にしてください。
- 音声サンプルには、
mpeg、wav、ogg、aac、flac、webm、mp4のいずれかの形式を使用してください。
追加の利用条件については、Text-to-Speech Supplemental Agreement(音声合成に関する補足契約)を参照してください。
音声作成への同意の登録
同意録音には、次の同意文のいずれか 1 つだけを収録してください。読み上げた内容が同意文と少しでも異なると、登録に失敗します。
| 言語 | 同意文 |
|---|---|
ドイツ語 (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"作成に成功すると、作成した声が「Audio」タブの一覧に表示されます。
録音から作成した声での音声生成
gpt-realtime-2.1-mini を Realtime API で使用すると、カスタム音声で発話を生成できます。セッションの最初の音声応答が返る前に、session.audio.output.voice に音声 ID を含むオブジェクトを設定してください。
Realtime セッションの設定
Realtime のクライアントシークレットを作成する際は、次のリクエストボディを使用します。その後、WebRTC 接続ガイドに従い、そのシークレットを使って接続してください。voice_123abc を、音声作成リクエストで返された ID に置き換えてください。
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" },
},
},
},
});テキストを音声に変換するには、読み上げるテキストを含むユーザーメッセージを追加してから、response.create を送信します。その際、output_modalities を ["audio"] に設定します。セッション指示では、指定されたテキストを読み上げるようモデルに指示します。生成された音声は、WebRTC での音声の取り扱いに従って、WebRTC の音声トラックで受信してください。
録音から作成した声の 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"
同意録音とサンプル録音の話者は同一人物である必要があります。サンプルには、実際の発話が 5 秒以上含まれ、文字起こししたテキストが 15 トークン以上になる必要があります。無音の部分は発話時間に含まれません。複数の完全な文を収録した 10~60 秒の録音を使用してください。アップロードごとの上限は 10 MiB です。サービスが録音からサンプルの発話内容を文字起こしします。
ブラウザの録音機能では、音声の MIME タイプが audio/webm;codecs=opus になることがあります。アップロード用エンドポイントはこの値を受け付けません。アップロードリクエストを作成する際は、元の音声データを変更せずに、サポートされている基本 MIME タイプ audio/webm を指定してください。前述のリクエストを使って同意の登録と音声の作成を行い、返された音声 ID を保存してください。
セッション作成時の音声選択
カスタム音声は、{ "id": "voice_123" } のようにオブジェクトで指定します。"marin" などの名前付き音声は文字列で指定します。
gpt-live-1 は、英語の各種アクセントを使ったカスタム音声に対応しています。アクセントを使う場合は、session.instructions にも「イギリス英語で話してください」「アイルランド英語で話してください」などの指示を含めてください。次の例ではイギリス英語を指定しています。カスタム音声で使いたいアクセントに合わせて指示を変更してください。
セッションの初期設定に以下を含めます。
{
"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 入門を参照してください。