0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gemini 2.5 Flash Preview TTS を検証。Gemini が演技してくれて楽しい

Last updated at Posted at 2026-01-12

はじめに

今回、Google の Gemini 2.5 Flash Preview TTS モデルを使って、感情豊かなボイスチャットアプリを作ってみました。

このモデルの面白いところは、プロンプトで音声の読み方(トーン・感情)を指定できるという点。従来の TTS は「テキストを読み上げる」だけでしたが、Gemini TTS では「笑いながら読んで」「怒って読んで」といった演技指導ができます。

めちゃめちゃ怒られました。ほんとすみませんでした。

本記事では、実際にボイスチャットアプリを構築しながら、この「演技指導」機能を検証した結果をお伝えします。

gemini-2.5-flash-preview-tts とは

gemini-2.5-flash-preview-tts は、Google が提供する Text-to-Speech モデルです。

従来の TTS との違い

項目 OpenAI TTS (gpt-4o-mini-tts) Gemini 2.5 Flash Preview TTS
感情表現 プロンプトで指定可能だが限定的 プロンプトで指定可能
カスタマイズ instructions パラメータで指示 テキスト冒頭に演技指示を記述
音声プリセット 13 種類 30 種類(男性 16 種/女性 14 種)
出力形式 mp3, opus, aac, flac, wav, pcm PCM (24kHz/16bit mono)
最大入力長 4,096 文字 制限なし(実用上 500 文字推奨)

利用可能なボイス

男性・女性それぞれ多様なキャラクターの声が用意されています。

  • 男性ボイス(16 種類): Puck, Charon, Fenrir, Achird, Zubenelgenubi, Algieba, Alnilam, Orus, Enceladus, Iapetus, Umbriel, Algenib, Rasalgethi, Schedar, Sadachbia, Sadaltager
  • 女性ボイス(14 種類): Zephyr, Kore, Leda, Aoede, Callirrhoe, Autonoe, Despina, Erinome, Gacrux, Laomedeia, Achernar, Pulcherrima, Vindemiatrix, Sulafat

30 種類もあるのはありがたいですね。今回は男性ボイスの Zubenelgenubi(カジュアル、リラックス)を使用しました。

アーキテクチャ全体像

今回構築したボイスチャットアプリのアーキテクチャは以下の通りです。

処理フロー

  1. 音声入力: ユーザーの発話を Web Speech API で認識・テキスト化
  2. テキスト生成: gemini-3-flash-preview でトーンを加味した応答文を生成
  3. 音声合成: gemini-2.5-flash-preview-tts でトーンを加味した音声を生成
  4. 音声再生: WebAudio API で PCM データを再生

シンプルな構成ですが、ポイントは「テキスト生成」と「音声合成」の両方でトーンを制御しているところです。

実装のポイント

TTS API の呼び出し方

Gemini TTS API を呼び出す際のポイントは以下の 2 点です。

  1. responseModalities: ['AUDIO'] を指定してオーディオ出力を要求
  2. speechConfig でボイスを指定
const response = await ai.models.generateContent({
  model: "gemini-2.5-flash-preview-tts",
  contents: [{ parts: [{ text: "読み上げてほしいテキスト" }] }],
  config: {
    responseModalities: ["AUDIO"],
    speechConfig: {
      voiceConfig: {
        prebuiltVoiceConfig: { voiceName: "Zubenelgenubi" },
      },
    },
  },
});

レスポンスは Base64 エンコードされた 24kHz/16bit mono の PCM データで返ってきます。

トーン(感情)制御の二段構え

今回のアプリでは、テキスト生成時音声生成時の両方でトーンを制御しています。

なぜ二段構えなのか?

  • テキスト生成時: 文章の語尾や表現をトーンに合わせて調整(日本語)
  • 音声生成時: 実際の読み方・声色をトーンに合わせて調整(英語プロンプト)

この二段構えにより、テキストの内容と音声の表現が一貫した感情表現になります。TTS への指示だけだと「文章は普通なのに声だけ怒ってる」みたいな違和感が出てしまいます。

使用しているプロンプト

テキスト生成用プロンプト(日本語)

トーン プロンプト
default # 話し方のスタイル
- 温かみのある親しみやすい口調で話してください
happy # 話し方のスタイル
- 明るく楽しそうな口調で話してください
- 文末に「!」を使って元気さを出してください
sad # 話し方のスタイル
- 悲しそうな口調で話してください
- 文末に「...」を使って余韻を出してください
angry # 話し方のスタイル
- 怒りを込めた強い口調で話してください
- 文末に「!」を使って語気の強さを出してください
sarcastic # 話し方のスタイル
- 皮肉っぽく嫌味な口調で話してください
- 見下すようなニュアンスを語尾に込めてください

音声生成用プロンプト(英語)

トーン プロンプト
default Read aloud in a warm and friendly tone:
happy Read aloud in a very cheerful, laughing, and joyful voice as if you are extremely happy and cannot contain your laughter:
sad Read aloud in a very sad, tearful, and sobbing voice as if you are crying deeply:
angry Read aloud in a very angry, frustrated, and aggressive voice as if you are furious and shouting:
sarcastic Read aloud in a condescending, sarcastic, and snide voice with a mocking tone as if you think you are better than everyone else:

こんな感じで、テキスト生成では日本語で口調を指示し、TTS では英語で読み方を詳細に指示しています。

工夫した点・ハマった点

工夫した点

1. 原稿作成からトーンを加味

前述の通り、TTS への演技指導だけでなく、テキスト生成の段階からトーンを反映させました。

例えば「悲しんでいる」トーンを選択すると:

  • テキスト生成時: 文末に「...」を使った余韻のある文章を生成
  • 音声生成時: 泣きそうな声で読み上げ

これにより、文章の内容と声のトーンが一致し、より自然な感情表現が実現できました。

2. プッシュ・トゥ・トーク方式の採用

常時マイクをオンにする方式ではなく、スペースキー長押しで発話するプッシュ・トゥ・トーク方式を採用しました。

理由は以下の通りです:

  • ノイズの誤検知防止: 環境音や独り言を拾ってしまう問題を回避
  • 意図しない会話の防止: ユーザーが明示的に話しかけたい時だけ認識
  • レイテンシの体感改善: 発話終了のタイミングが明確になり、待ち時間が気になりにくい

常時リスニングだと、環境音や自身の発生を拾って勝手に応答し始めてしまいました、、。それを防ぐためにプッシュ・トゥ・トークにしました。

3. テキスト長の制限

TTS API の安定性向上のため、テキストを 500 文字に制限しています。長すぎるテキストは途中で切り、「...」を付加して自然に聞こえるようにしました。

ハマった点

日本語プロンプトでの精度問題

当初、TTS API への演技指導も日本語で行っていました。

❌ 「笑いながら楽しそうに読んでください」

しかし、日本語プロンプトでは思ったようなトーン制御ができませんでした。感情の変化が薄かったり、指示が無視されることがあって、なかなか安定しませんでした。

解決策: 英語プロンプトに切り替え

✅ "Read aloud in a very cheerful, laughing, and joyful voice as if you are extremely happy and cannot contain your laughter:"

英語で詳細に指示することで、期待通りの感情表現が得られるようになりました。特に as if you are... のように具体的なシチュエーションを描写すると効果的でした。

まとめ

Gemini 2.5 Flash Preview TTS を使って、感情表現が可能なボイスチャットアプリを構築しました。

検証結果

  • 演技指導は有効: 英語プロンプトで詳細に指示すれば、笑い声や怒り声など、様々なトーンで読み上げてくれる
  • 二段構えが効果的: テキスト生成と音声生成の両方でトーンを制御することで、一貫した感情表現が可能
  • 日本語プロンプトは課題あり: 現時点では英語プロンプトの方が精度が高い

今後の可能性

  • キャラクター AI との組み合わせ(喜怒哀楽のある対話)
  • ナレーション・朗読アプリ(場面に応じた感情表現)
  • 教育コンテンツ(感情を込めた説明)

Gemini TTS の「演技指導」機能は、従来の TTS にはない表現力を持っています。まだ Preview 版ですが、今後の進化が楽しみです 🙏

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?