Communitygithub.com

Gemini テキスト読み上げスキル

Google Gemini TTSを使用してテキストから自然な音声を生成します。ナレーション、ポッドキャスト、音声オーバーなどに最適です。70以上の言語、30のプリビルド音声、スタイル制御に対応。

Gemini テキスト読み上げスキル とは?

このスキルは、Google GeminiのText-to-Speech APIを活用し、テキストから高品質な音声を生成するためのツールです。70以上の言語と30種類のプリセット音声をサポートし、自然言語プロンプトやオーディオタグを用いたスタイル・感情の細かな制御が可能です。特に複数セグメントのナレーション生成において、APIリクエスト間で音声の一貫性を保つための独自の仕組みを備えています。具体的には、すべてのセグメントを1つのプロンプトに結合して1回のAPI呼び出しで連続オーディオを生成し、ffmpegによる無音区間検出と適応的閾値調整を用いて正確に分割。さらに、トリミング処理で各セグメントの前後の無音を除去します。Node.js 18+環境で動作し、`@google/genai`パッケージと`GEMINI_API_KEY`環境変数が必要です。コマンドラインから簡単に利用でき、単一テキストの読み上げから複数セグメントの一貫した音声オーバー生成まで幅広いユースケースに対応します。

対応~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/memex-lab/product-launch-video-skill/tree/main/skills/gemini-tts

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Gemini Text-to-Speech

Google Gemini TTSを使用して、テキストから自然で表現豊かな音声を生成します。70以上の言語、30のプリビルド音声、自然言語プロンプトとオーディオタグによるスタイル制御をサポート。

必要条件: Node.js 18以上、ffmpeg、@google/genai npmパッケージ、GEMINI_API_KEY環境変数。

利用可能なスクリプト

  • scripts/generate-tts.mjs — 単一リクエストでの一貫性、無音ベースの分割、自動トリミングを備えたオールインワンTTSジェネレーター。

クイックスタート

単一テキストの音声合成

npm install @google/genai
GEMINI_API_KEY=your-key node scripts/generate-tts.mjs \
  --text "こんにちは、私たちの製品へようこそ!" \
  --output-dir public/vo \
  --voice Kore

マルチセグメント音声オーバー(一貫した音声)

segments.json を作成します:

[
  { "id": "intro", "text": "製品発表へようこそ。" },
  { "id": "features", "text": "これがあなたが気に入る3つの機能です。" },
  { "id": "close", "text": "今すぐ私たちのウェブサイトで始めましょう。" }
]

実行:

GEMINI_API_KEY=your-key node scripts/generate-tts.mjs \
  --segments segments.json \
  --output-dir public/vo \
  --voice Kore \
  --director-notes "トーン: 温かく、自信に満ち、感動的。スタイル: 音声に笑みを含んだプロフェッショナルなナレーター。アクセント: 中立的なアメリカ英語。ペース: 中庸。"

出力(JSONが標準出力に):

{
  "success": true,
  "segments": [
    { "id": "intro", "file": "public/vo/vo-intro.mp3", "duration": 3.25 },
    { "id": "features", "file": "public/vo/vo-features.mp3", "duration": 4.10 },
    { "id": "close", "file": "public/vo/vo-close.mp3", "duration": 2.80 }
  ],
  "totalDuration": 10.15,
  "fullAudioFile": "public/vo/vo-full.wav"
}

スクリプトオプション

フラグデフォルト説明
--segments FILE—[{id, text}] セグメント定義を含むJSONファイル
--text TEXT—生成する単一テキスト(--segments の代替)
--output-dir DIR—出力オーディオファイルのディレクトリ(必須)
--voice NAMEKoreプリビルド音声名(音声テーブル参照)
--model NAMEgemini-3.1-flash-tts-previewGemini TTSモデルID
--director-notes TEXT—パフォーマンスガイダンス: スタイル、ペース、アクセント、呼吸、明瞭度。性別/年齢は制御しません(それには --voice を使用)。
--retries N3APIエラー時の最大再試行回数
--trim / --no-trim--trimセグメント境界の無音をトリミング
--format FORMATmp3出力形式: mp3 または wav

終了コード

コード意味
0成功
1必須引数または環境変数が不足
2再試行を使い果たした後のAPIエラー
3ffmpegがインストールされていない、または処理に失敗
4ファイルI/Oエラー

仕組み(マルチセグメント)

Gemini TTSは、個別のAPIリクエスト間で音声の一貫性を保証しません。このスクリプトは以下の方法で解決します:

  1. すべてのセグメントを、間に [3秒のポーズ] マーカーを入れて1つのプロンプトに結合
  2. 1回のAPI呼び出しで単一の連続オーディオファイルを生成
  3. ffmpegの silencedetect を使用して、適応的閾値(初期ノイズ=-35dB、d=1.5秒、徐々に緩和)で無音ギャップを検出。正確な一致が見つかれば直接使用。閾値のジャンプ(少なすぎ→多すぎ)が発生した場合は、より高速な発話速度でオーディオを再生成し、セグメント間のポーズをより明確にしてから検出を再試行。
  4. 無音の中間点で分割して個別のセグメントファイルを作成
  5. 各セグメントから残りの無音パディング(片側約1.5秒)をトリミングし、0.15秒の呼吸スペースを保持

モデル

モデル最適用途
gemini-3.1-flash-tts-preview最新、最も制御性が高く、200以上のオーディオタグに対応(デフォルト)
gemini-2.5-flash-preview-tts高速、高品質、一般的な用途
gemini-2.5-pro-preview-tts最高品質、複雑なパフォーマンス

音声

30のプリビルド音声:

音声性別特徴ピッチ
Achernar女性柔らかい高め
Achird男性フレンドリー中低め
Algenib男性ざらついた低め
Algieba男性滑らか低め
Alnilam男性しっかりした中低め
Aoede女性風通しの良い中間
Autonoe女性明るい中間
Callirrhoe女性のんびり中間
Charon男性情報提供型低め
Despina女性滑らか中間
Enceladus男性息混じり低め
Erinome女性明瞭中間
Fenrir男性興奮しやすい中低め
Gacrux女性成熟した中間
Iapetus男性明瞭中低め
Kore女性しっかりした中間
Laomedeia女性陽気な高め
Leda女性若々しい高め
Orus男性しっかりした中低め
Puck男性陽気な中間
Pulcherrima男性前向き中間
Rasalgethi男性情報提供型中間
Sadachbia男性活気のある低め
Sadaltager男性知識豊富中間
Schedar男性均一中低め
Sulafat女性温かい中間
Umbriel男性のんびり中低め
Vindemiatrix女性優しい中間
Zephyr女性明るい高め
Zubenelgenubi男性カジュアル中低め

ディレクターノート(--director-notes)

選択した音声に対するパフォーマンスガイダンス。重要なものだけを定義してください — 過剰に指定するとモデルの創造性が制限され、結果が悪化する可能性があります。

最も一般的な3つの指示はスタイル、ペース、アクセントですが、パフォーマンスに関連するカスタム指示を含めることもできます。

  • スタイル — 感情的な品質と配信の特徴。説明的に: "伝染性のある熱意 — リスナーは何かエキサイティングなことの一部だと感じるべき" は、単に "エネルギッシュ" よりも效果が良い。特性を重ねたり、ナレーション業界用語(例:「ボーカルスマイル」)を使用できます。
  • ペース — 全体的な速度とリズムの変化。"できるだけ速く話す" から "信じられないほど遅く流動的で、言葉が互いににじみ込み、緊迫感ゼロ" まで幅広く指定可能。
  • アクセント — 具体的に指定。"イギリスのクロイドンで聞かれるイギリス英語" は、単に "イギリスなまり" よりもはるかに効果的。
--director-notes "スタイル: 熱狂的で生意気なGenZ美容YouTuber。ペース: 非常に速く、ショート動画のインフルエンサーのような迅速な配信。アクセント: ラグナビーチ出身のサウスカリフォルニアのバレーガール。"

オーディオタグ

セグメントテキスト内のインライン [ブラケット] で単語ごとの制御が可能。ディレクターノートを局所的に上書きします。

[whispers] [shouting] [excited] [serious] [short pause] [laughs] [very fast] [very slow] [sarcastic] [curious]

創造的なタグも使用可能: [like dracula]、[whispering conspiratorially]

例: "[excited] これで全てが変わります! [short pause] その方法をお見せしましょう。"

参考資料

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル