テキスト読み上げ生成(TTS)

Gemini API は、Gemini のテキスト読み上げ(TTS)生成機能を使用して、テキスト入力を単一話者または複数話者の音声に変換できます。テキスト読み上げ(TTS)の生成は制御可能です。つまり、自然言語を使用してインタラクションを構成し、音声のスタイル、アクセント、ペース、トーンをガイドできます。

TTS 機能は、インタラクティブな非構造化音声とマルチモーダルな入力と出力用に設計された Live API を介して提供される音声生成とは異なります。Live API は動的な会話コンテキストに優れていますが、Gemini API を介した TTS は、ポッドキャストやオーディオブックの生成など、スタイルやサウンドを細かく制御して正確なテキスト朗読が必要なシナリオ向けに調整されています。

このガイドでは、テキストから単一話者と複数話者の音声を生成する方法について説明します。

始める前に

サポートされているモデルのセクションに記載されているように、Gemini テキスト読み上げ(TTS)機能を備えた Gemini 2.5 モデル バリアントを使用してください。最適な結果を得るには、特定のユースケースに最適なモデルを検討してください。

[AI Studio で Gemini 2.5 TTS モデルをテストする] と便利です。

単一話者 TTS

テキストを単一話者の音声に変換するには、レスポンス モダリティを「audio」に設定し、音声名を含む speech_config オブジェクトを渡します。事前構築済みの出力音声から音声名を選択する必要があります。

この例では、モデルからの出力音声を wave ファイルに保存します。

Python

from google import genai
import wave

def wave_file(filename, pcm, channels=1, rate=24000, sample_width=2):
    with wave.open(filename, "wb") as wf:
        wf.setnchannels(channels)
        wf.setsampwidth(sample_width)
        wf.setframerate(rate)
        wf.writeframes(pcm)

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.1-flash-tts-preview",
    input="Say cheerfully: Have a wonderful day!",
    response_modalities=["audio"],
    speech_config=[
        {"voice": "Kore"}
    ]
)

data = None
for step in interaction.steps:
    for content_block in step.content:
        if content_block.type == "audio":
            data = content_block.data
            break
    if data:
        break
wave_file('out.wav', data)

JavaScript

import {GoogleGenAI} from '@google/genai';
import wav from 'wav';

async function saveWaveFile(
   filename,
   pcmData,
   channels = 1,
   rate = 24000,
   sampleWidth = 2,
) {
   return new Promise((resolve, reject) => {
      const writer = new wav.FileWriter(filename, {
            channels,
            sampleRate: rate,
            bitDepth: sampleWidth * 8,
      });

      writer.on('finish', resolve);
      writer.on('error', reject);

      writer.write(pcmData);
      writer.end();
   });
}

async function main() {
   const client = new GoogleGenAI({});

   const interaction = await client.interactions.create({
      model: "gemini-3.1-flash-tts-preview",
      input: "Say cheerfully: Have a wonderful day!",
      response_modalities: ['audio'],
      speech_config: [
         { voice: 'Kore' }
      ],
   });

   let data = null;
   for (const step of interaction.steps) {
      for (const contentBlock of step.content) {
         if (contentBlock.type === 'audio') {
            data = contentBlock.data;
            break;
         }
      }
      if (data) break;
   }
   const audioBuffer = Buffer.from(data, 'base64');
   await saveWaveFile('out.wav', audioBuffer);
}
await main();

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-tts-preview",
    "input": "Say cheerfully: Have a wonderful day!",
    "response_modalities": ["audio"],
    "speech_config": [
      { "voice": "Kore" }
    ]
  }'

マルチスピーカー TTS

マルチスピーカー オーディオの場合は、各スピーカー(最大 2 つ)が speaker_voice_config として構成された multi_speaker_voice_config オブジェクトが必要です。各 speaker は、プロンプトで使用されている名前と同じ名前で定義する必要があります。

Python

from google import genai
import wave

def wave_file(filename, pcm, channels=1, rate=24000, sample_width=2):
   with wave.open(filename, "wb") as wf:
      wf.setnchannels(channels)
      wf.setsampwidth(sample_width)
      wf.setframerate(rate)
      wf.writeframes(pcm)

client = genai.Client()

prompt = """TTS the following conversation between Joe and Jane:
         Joe: How's it going today Jane?
         Jane: Not too bad, how about you?"""

 interaction = client.interactions.create(
     model="gemini-3.1-flash-tts-preview",
     input=prompt,
     response_modalities=["audio"],
     speech_config=[
         {"speaker": "Joe", "voice": "Kore"},
         {"speaker": "Jane", "voice": "Puck"}
     ]
 )

data = None
for step in interaction.steps:
   for content_block in step.content:
      if content_block.type == "audio":
         data = content_block.data
         break
   if data:
      break
wave_file('out.wav', data)

JavaScript

import {GoogleGenAI} from '@google/genai';
import wav from 'wav';

async function saveWaveFile(
   filename,
   pcmData,
   channels = 1,
   rate = 24000,
   sampleWidth = 2,
) {
   return new Promise((resolve, reject) => {
      const writer = new wav.FileWriter(filename, {
            channels,
            sampleRate: rate,
            bitDepth: sampleWidth * 8,
      });

      writer.on('finish', resolve);
      writer.on('error', reject);

      writer.write(pcmData);
      writer.end();
   });
}

async function main() {
   const client = new GoogleGenAI({});

   const prompt = `TTS the following conversation between Joe and Jane:
         Joe: How's it going today Jane?
         Jane: Not too bad, how about you?`;

   const interaction = await client.interactions.create({
      model: "gemini-3.1-flash-tts-preview",
      input: prompt,
      response_modalities: ['audio'],
      speech_config: [
         { speaker: 'Joe', voice: 'Kore' },
         { speaker: 'Jane', voice: 'Puck' }
      ]
   });

   let data = null;
   for (const step of interaction.steps) {
      for (const contentBlock of step.content) {
         if (contentBlock.type === 'audio') {
            data = contentBlock.data;
            break;
         }
      }
      if (data) break;
   }
   const audioBuffer = Buffer.from(data, 'base64');
   await saveWaveFile('out.wav', audioBuffer);
}

await main();

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "gemini-3.1-flash-tts-preview",
  "input": "TTS the following conversation between Joe and Jane: Joe: Hows it going today Jane? Jane: Not too bad, how about you?",
  "response_modalities": ["audio"],
  "speech_config": [
    { "speaker": "Joe", "voice": "Kore" },
    { "speaker": "Jane", "voice": "Puck" }
  ]
}'

プロンプトで話し方を制御する

単一話者と複数話者の両方の TTS で、自然言語プロンプトを使用してスタイル、トーン、アクセント、ペースを制御できます。たとえば、1 人のスピーカーのプロンプトでは、次のように言います。

Say in an spooky whisper:
"By the pricking of my thumbs...
Something wicked this way comes"

複数話者のプロンプトでは、各話者の名前と対応する文字起こしをモデルに提供します。スピーカーごとに個別にガイダンスを提供することもできます。

Make Speaker1 sound tired and bored, and Speaker2 sound excited and happy:

Speaker1: So... what's on the agenda today?
Speaker2: You're never going to guess!

伝えたいスタイルや感情に対応する音声オプションを使用すると、さらに強調できます。たとえば、前のプロンプトでは、エンケラドゥスの息遣いが「疲れた」や「退屈」を強調し、パックの明るいトーンが「興奮」や「幸せ」を補完する可能性があります。

音声に変換するプロンプトを生成する

TTS モデルは音声のみを出力しますが、他のモデルを使用して最初に文字起こしを生成し、その文字起こしを TTS モデルに渡して読み上げることができます。

Python

from google import genai

client = genai.Client()

transcript_interaction = client.interactions.create(
   model="gemini-3-flash-preview",
   input="""Generate a short transcript around 100 words that reads
            like it was clipped from a podcast by excited herpetologists.
            The hosts names are Dr. Anya and Liam."""
)
transcript = transcript_interaction.steps[-1].content[0].text

tts_interaction = client.interactions.create(
   model="gemini-3.1-flash-tts-preview",
   input=transcript,
   response_modalities=["audio"],
   speech_config=[
      {"speaker": "Dr. Anya", "voice": "Kore"},
      {"speaker": "Liam", "voice": "Puck"}
   ]
)

# ...Code to stream or save the output

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

async function main() {

const transcriptInteraction = await client.interactions.create({
   model: "gemini-3-flash-preview",
   input: "Generate a short transcript around 100 words that reads like it was clipped from a podcast by excited herpetologists. The hosts names are Dr. Anya and Liam.",
   })

const ttsInteraction = await client.interactions.create({
   model: "gemini-3.1-flash-tts-preview",
   input: transcriptInteraction.steps.at(-1).content[0].text,
   response_modalities: ['audio'],
   speech_config: [
      { speaker: "Dr. Anya", voice: "Kore" },
      { speaker: "Liam", voice: "Puck" }
   ]
  });
}
// ..JavaScript code for exporting .wav file for output audio

await main();

音声オプション

TTS モデルは、voice_name フィールドで次の 30 種類の音声オプションをサポートしています。

Zephyr -- Bright Puck - Upbeat Charon - 情報が豊富
Kore -- Firm Fenrir -- Excitable Leda -- Youthful
Orus -- Firm Aoede -- Breezy Callirrhoe - おおらか
Autonoe -- Bright Enceladus - Breathy Iapetus -- クリア
Umbriel -- Easy-going Algieba -- Smooth Despina -- Smooth
Erinome -- クリア Algenib -- Gravelly Rasalgethi - 情報が豊富
Laomedeia - アップビート Achernar -- Soft Alnilam -- Firm
Schedar -- Even Gacrux -- 成人向け Pulcherrima -- 転送
Achird -- フレンドリー Zubenelgenubi -- カジュアル Vindemiatrix - Gentle
Sadachbia -- Lively Sadaltager -- 知識が豊富 Sulafat -- Warm

すべての音声オプションは、

サポートされている言語

TTS モデルは入力言語を自動的に検出します。サポートされている言語は次のとおりです。

言語 BCP-47 コード 言語 BCP-47 コード
アラビア語 ar フィリピン語 fil
ベンガル語 bn フィンランド語 fi
オランダ語 nl ガリシア語 gl
英語 en ジョージア語 ka
フランス語 fr ギリシャ語 el
ドイツ語 de グジャラート語 gu
ヒンディー語 hi ハイチ語 ht
インドネシア語 id ヘブライ語
イタリア語 it ハンガリー語 hu
日本語 ja アイスランド語 =
韓国語 ko ジャワ語 jv
マラーティー語 mr カンナダ語 kn
ポーランド語 pl コンカニ語 kok
ポルトガル語 pt ラオ語 lo
ルーマニア語 ro ラテン語 la
ロシア語 ru ラトビア語 lv
スペイン語 es リトアニア語 lt
タミル語 ta ルクセンブルク語 lb
テルグ語 te マケドニア語 mk
タイ語 th マイティリー語 mai
トルコ語 tr マラガシ語 mg
ウクライナ語 uk マレー語 ミリ秒
ベトナム語 vi マラヤーラム語 ml
アフリカーンス語 af モンゴル語 mn
アルバニア語 sq ネパール語 ne
アムハラ語 am ノルウェー語(ブークモール) nb
アルメニア語 hy ノルウェー語、ニーノシク nn
アゼルバイジャン語 az オディア語 または
バスク語 eu パシュト語 ps
ベラルーシ語 be ペルシャ語 fa
ブルガリア語 bg パンジャブ語 pa
ビルマ語 my セルビア語 sr
カタルーニャ語 ca シンド語 sd
セブアノ語 ceb シンハラ語 si
中国語(標準語) cmn スロバキア語 sk
クロアチア語 時間 スロベニア語 sl
チェコ語 cs スワヒリ語 sw
デンマーク語 da スウェーデン語 sv
エストニア語 et ウルドゥー語 ur

サポートされているモデル

モデル 単一話者 マルチスピーカー
Gemini 3.1 Flash TTS プレビュー ✔️ ✔️
Gemini 2.5 Flash プレビュー TTS ✔️ ✔️
Gemini 2.5 Pro プレビュー TTS ✔️ ✔️

プロンプト ガイド

Gemini ネイティブ音声生成テキスト読み上げ(TTS)モデルは、何を言うかだけでなく、どのように言うかも知っている大規模言語モデルを使用することで、従来の TTS モデルと差別化されています。

高度なプロンプトは、モデルが従うシステム指示と考えることができます。これは、モデルにコンテキストを追加し、パフォーマンスを制御する方法です。

この機能を活用するには、ユーザーは仮想音声タレントが演じるシーンを設定する監督になったつもりで操作します。プロンプトを作成するには、次のコンポーネントを検討することをおすすめします。キャラクターの核となるアイデンティティとアーキタイプを定義する音声プロファイル、物理的な環境と感情的な「雰囲気」を確立するシーンの説明、スタイル、アクセント、ペースの制御に関するより正確なパフォーマンス ガイダンスを提供する監督のメモ

正確な地域アクセント、特定のパラ言語的特徴(息づかいなど)、ペースなど、ニュアンスのある指示を提供することで、ユーザーはモデルのコンテキスト認識を活用して、非常にダイナミックで自然で表現力豊かな音声パフォーマンスを生成できます。最適なパフォーマンスを得るには、文字起こしと演出プロンプトを一致させ、「誰が言っているか」「何を言っているか」「どのように言っているか」を一致させることをおすすめします。

このガイドの目的は、Gemini TTS 音声生成を使用して音声エクスペリエンスを開発する際に、基本的な方向性を示し、アイデアを生み出すことです。皆様がどのようなものを作成されるか楽しみにしております。

音声タグ

タグは、配信を細かく制御できる [whispers][laughs] などのインライン修飾子です。これらを使用して、文字起こしの行やセクションのトーン、ペース、感情的な雰囲気を変更できます。また、[cough][sighs][gasp] などの間投詞やその他の非言語音をパフォーマンスに追加することもできます。

タグの有効性に関する包括的なリストはありません。さまざまな感情や表現を試して、出力がどのように変化するかを確認することをおすすめします。

文字起こしが英語でない場合でも、最適な結果を得るには英語の音声タグを使用することをおすすめします。

音声タグをクリエイティブに活用する

音声タグで得られるバリエーションを示すために、それぞれ同じことを言っているが、使用されているタグに基づいて配信が変化する一連の例を以下に示します。

行の先頭にタグを追加して、話者が興奮している、退屈している、嫌がっているなどの感情を表現することで、配信の強調を変更できます。

  • [excitedly] こんにちは。私は新しいテキスト読み上げモデルです。さまざまな方法で発言できます。ご用件をお聞かせください。
  • [bored] こんにちは。私は新しいテキスト読み上げモデルです。
  • [reluctantly] こんにちは。私は新しいテキスト読み上げモデルです。

タグを使用して、配信のペースを変更したり、ペースと強調を組み合わせたりすることもできます。

  • [very fast] こんにちは。私は新しいテキスト読み上げモデルです。
  • [very slow] こんにちは。私は新しいテキスト読み上げモデルです。
  • [sarcastically, one painfully slow word at a time] こんにちは。私は新しいテキスト読み上げモデルです。

特定のセクションを正確に制御することもできます。つまり、ある部分を小声(機能)で、別の部分を大声(機能)で話すことができます。

  • [whispers] こんにちは。私は新しいテキスト読み上げモデルの [shouting] です。さまざまな方法で発言できます。[whispers] 本日はどのようなご用件でしょうか?

また、次のようなクリエイティブなアイデアを試すこともできます。

  • [like a cartoon dog] こんにちは。私は新しいテキスト読み上げモデルです。
  • [like dracula] こんにちは。私は新しいテキスト読み上げモデルです。

よく使用されるタグは次のとおりです。

[amazed] [crying] [curious] [excited]
[sighs] [gasp] [giggles] [laughs]
[mischievously] [panicked] [sarcastic] [serious]
[shouting] [tired] [trembling] [whispers]

タグを使用すると、文字起こしの配信をすばやく制御できます。さらに細かく制御するには、コンテキスト プロンプトと組み合わせて、パフォーマンスの全体的なトーンと雰囲気を設定します。

プロンプトの構造

堅牢なプロンプトには、優れたパフォーマンスを実現するための次の要素が含まれていることが理想的です。

  • 音声プロファイル - 音声のペルソナを確立し、キャラクターのアイデンティティ、アーキタイプ、年齢や背景などのその他の特徴を定義します。
  • Scene - 状況を設定します。物理的な環境と「雰囲気」の両方を説明します。
  • ディレクターズ ノート - 仮想タレントが注意すべき重要な指示を分類できるパフォーマンス ガイダンス。例: スタイル、呼吸、ペース、発音、アクセント。
  • コンテキストのサンプル - モデルにコンテキストの開始点を与え、設定したシーンに仮想アクターが自然に登場できるようにします。
  • Transcript - モデルが読み上げるテキスト。最適なパフォーマンスを得るには、文字起こしのトピックと文体が、指示内容と関連している必要があります。
  • 音声タグ - 文字起こしに挿入して、テキストのその部分の配信方法を変更できる修飾子([whispers][shouting] など)。

プロンプトの例:

# AUDIO PROFILE: Jaz R.
## "The Morning Hype"

## THE SCENE: The London Studio
It is 10:00 PM in a glass-walled studio overlooking the moonlit London skyline,
but inside, it is blindingly bright. The red "ON AIR" tally light is blazing.
Jaz is standing up, not sitting, bouncing on the balls of their heels to the
rhythm of a thumping backing track. Their hands fly across the faders on a
massive mixing desk. It is a chaotic, caffeine-fueled cockpit designed to wake
up an entire nation.

### DIRECTOR'S NOTES
Style:
* The "Vocal Smile": You must hear the grin in the audio. The soft palate is
always raised to keep the tone bright, sunny, and explicitly inviting.
* Dynamics: High projection without shouting. Punchy consonants and elongated
vowels on excitement words (e.g., "Beauuutiful morning").

Pace: Speaks at an energetic pace, keeping up with the fast music.  Speaks
with A "bouncing" cadence. High-speed delivery with fluid transitions - no dead
air, no gaps.

Accent: Jaz is from Brixton, London

### SAMPLE CONTEXT
Jaz is the industry standard for Top 40 radio, high-octane event promos, or any
script that requires a charismatic Estuary accent and 11/10 infectious energy.

#### TRANSCRIPT
Yes, massive vibes in the studio! You are locked in and it is absolutely
popping off in London right now. If you're stuck on the tube, or just sat
there pretending to work... stop it. Seriously, I see you. Turn this up!
We've got the project roadmap landing in three, two... let's go!

詳細なプロンプト戦略

プロンプトの各要素を次のように分解します。

音声プロファイル

キャラクターのペルソナを簡単に説明します。

  • 名前。キャラクターに名前を付けると、モデルとパフォーマンスが密接に結びつきます。シーンとコンテキストを設定するときは、名前でキャラクターを参照してください。
  • ロール。シーンで演じているキャラクターの核となるアイデンティティとアーキタイプ。例: ラジオ DJ、ポッドキャスト配信者、ニュース レポーターなど。

例:

# AUDIO PROFILE: Jaz R.
## "The Morning Hype"


# AUDIO PROFILE: Monica A.
## "The Beauty Influencer"

シーン

シーンのコンテキストを設定します。これには、トーンと雰囲気を確立する場所、ムード、環境の詳細が含まれます。キャラクターの周囲で何が起こっているか、それがキャラクターにどのような影響を与えているかを説明します。シーンは、インタラクション全体の環境コンテキストを提供し、演技のパフォーマンスを微妙かつ有機的な方法でガイドします。

例:

## THE SCENE: The London Studio
It is 10:00 PM in a glass-walled studio overlooking the moonlit London skyline,
but inside, it is blindingly bright. The red "ON AIR" tally light is blazing.
Jaz is standing up, not sitting, bouncing on the balls of their heels to the
rhythm of a thumping backing track. Their hands fly across the faders on a
massive mixing desk. It is a chaotic, caffeine-fueled cockpit designed to
wake up an entire nation.


## THE SCENE: Homegrown Studio
A meticulously sound-treated bedroom in a suburban home. The space is
deadened by plush velvet curtains and a heavy rug, but there is a
distinct "proximity effect."

監督のメモ

この重要なセクションには、パフォーマンスに関する具体的なガイダンスが含まれています。他の要素はすべてスキップできますが、この要素を含めることをおすすめします。

パフォーマンスにとって重要なものだけを定義し、過剰な指定をしないように注意してください。厳格なルールが多すぎると、モデルの創造性が制限され、パフォーマンスが低下する可能性があります。役柄と場面の説明と、具体的な演技のルールとのバランスを取ります。

最も一般的な指示はスタイル、ペース、アクセントですが、モデルはこれらに限定されず、これらを必要としません。パフォーマンスに重要な追加の詳細を説明するカスタム手順を自由に追加できます。必要なだけ詳細に説明してください。

次に例を示します。

### DIRECTOR'S NOTES

Style: Enthusiastic and Sassy GenZ beauty YouTuber

Pacing: Speaks at an energetic pace, keeping up with the extremely fast, rapid
delivery influencers use in short form videos.

Accent: Southern california valley girl from Laguna Beach |

スタイル:

生成される音声のトーンとスタイルを設定します。パフォーマンスをガイドするために、アップビート、エネルギッシュ、リラックス、退屈などの要素を含めます。説明的で、必要なだけ詳細な情報を提供します。「伝染性の熱意。「リスナーが大規模でエキサイティングなコミュニティ イベントの一員であると感じられるようにする」の方が、「エネルギッシュで熱狂的」よりも効果的です。

「ボーカル スマイル」など、ナレーション業界でよく使われる用語を試してみることもできます。スタイル特性は、必要なだけ重ねることができます。

例:

Simple Emotion

DIRECTORS NOTES
...
Style: Frustrated and angry developer who can't get the build to run.
...

奥行きを増やす

DIRECTORS NOTES
...
Style: Sassy GenZ beauty YouTuber, who mostly creates content for YouTube Shorts.
...

複雑

DIRECTORS NOTES
Style:
* The "Vocal Smile": You must hear the grin in the audio. The soft palate is
always raised to keep the tone bright, sunny, and explicitly inviting.
*Dynamics: High projection without shouting. Punchy consonants and
elongated vowels on excitement words (e.g., "Beauuutiful morning").

アクセント:

選択したアクセントについて説明します。プロンプトが具体的であるほど、より良い結果が得られます。たとえば、「英国のクロイドンで聞かれる英国英語のアクセント」と「英国のアクセント」のようにします。

例:

### DIRECTORS NOTES
...
Accent: Southern california valley girl from Laguna Beach
...


### DIRECTORS NOTES
...
Accent: Jaz is a from Brixton, London
...

ペース:

作品全体のペースとペースのバリエーション。

例:

シンプル

### DIRECTORS NOTES
...
Pacing: Speak as fast as possible
...

詳細

### DIRECTORS NOTES
...
Pacing: Speaks at a faster, energetic pace, keeping up with fast paced music.
...

複雑

### DIRECTORS NOTES
...
Pacing: The "Drift": The tempo is incredibly slow and liquid. Words bleed into each other. There is zero urgency.
...

まずはお試しください

TTS アプリでこれらの例を試して、Gemini に監督の椅子に座らせてもらいましょう。素晴らしいボーカル パフォーマンスを実現するためのヒントを以下に示します。

  • プロンプト全体の一貫性を保つようにしてください。スクリプトと演出は、優れたパフォーマンスを生み出すために不可欠です。
  • すべてを説明する必要はありません。モデルがギャップを埋める余地を残すことで、自然な文章になります。(才能のある俳優のように)
  • 行き詰まったときは、Gemini に手伝ってもらって、脚本やパフォーマンスを作成しましょう。

制限事項

  • TTS モデルはテキスト入力のみを受け取り、音声出力を生成します。
  • TTS セッションのコンテキスト ウィンドウの上限は 32,000 トークンです。
  • 言語のサポートについては、言語セクションをご覧ください。
  • TTS はストリーミングをサポートしていません。

Gemini 3.1 Flash TTS プレビュー モデルを音声生成に使用する場合は、次の制約が適用されます。

  • プロンプトの指示と音声の不一致: モデルの出力が選択した話者と厳密に一致しない場合があり、音声が想定と異なる場合があります。トーンの不一致(若い女性のような話し方をしようとする男性の低い声など)を避けるため、プロンプトの文面のトーンとコンテキストが、選択した話者のプロフィールと自然に一致するようにしてください。
  • 長い出力の品質: 数分を超える生成出力では、音声の品質と一貫性が低下する可能性があります。文字起こしを小さなチャンクに分割することをおすすめします。
  • テキスト トークンが返されることがある: モデルが音声トークンではなくテキスト トークンを返すことがあり、サーバーが 500 エラーでリクエストに失敗します。このエラーはごく一部のリクエストでランダムに発生するため、アプリケーションに自動再試行ロジックを実装して処理する必要があります。
  • プロンプト分類子の誤った拒否: 曖昧なプロンプトでは、音声合成分類子がトリガーされず、リクエストが拒否(PROHIBITED_CONTENT)されたり、モデルがスタイル指示や監督のメモを読み上げたりする可能性があります。モデルに音声の合成を指示する明確なプリアンブルを追加し、実際の音声文字起こしが始まる場所を明示的にラベル付けして、プロンプトを検証します。

次のステップ

  • Gemini の Live API は、他のモダリティとインターリーブできるインタラクティブな音声生成オプションを提供します。
  • 音声入力の操作については、音声認識ガイドをご覧ください。