mcpField
G
gemini-tts

gemini-tts

github.com/akrindevクリエイティブ・メディア790 回インストール34 週間前に更新
リポジトリ

gemini-tts について

gemini-ttsは、Gemini TTSモデルでテキストを音声化するスキルです。コンテンツ制作者やアクセシビリティ向けの用途に対応し、複数の音声、話者別の会話、長文のストリーミング処理をスクリプトで扱えます。

主な機能

  1. 01テキストをWAV音声に変換
  2. 02複数の音声から選択
  3. 03複数話者の会話を生成
  4. 04長文のストリーミング処理
  5. 05出力先とファイル名の指定

活用シーン

  1. 01ポッドキャスト・書籍・動画のナレーション制作
  2. 02インタビューやロールプレイ音声の作成
  3. 03テキストの音声ファイルへの一括変換
  4. 04アクセシビリティ向け音声の作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/akrindev/google-studio-skills --skill gemini-tts

インストール後、Claude Code で/gemini-ttsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
voices.md
scripts/
package-lock.json
package.json
tts.js

詳細

Gemini Text-to-Speech

複数の音声と複数話者の会話に対応した実行可能なスクリプトを使って、Gemini の TTS モデルから自然な音声を生成します。

このスキルを使う場面

次のような場合にこのスキルを使います。

  • テキストを自然な音声に変換する
  • ポッドキャスト、オーディオブック、動画向けの音声を作成する
  • 複数話者の会話を生成する
  • 長いコンテンツの音声をストリーミングする
  • 複数の音声から選択する
  • アクセシビリティに配慮した音声コンテンツを作成する
  • プレゼンテーション用のナレーションを生成する
  • テキストを音声ファイルに一括変換する

利用可能なスクリプト

scripts/tts.js

目的:Gemini TTS モデルを使ってテキストを音声に変換します。

使用する場面:

  • あらゆるテキスト音声変換
  • 複数話者の会話の生成
  • 長文の音声ストリーミング
  • コンテンツ作成用のナレーション
  • アクセシビリティに配慮した音声の生成

主なパラメーター:

パラメーター説明例
text変換するテキスト(必須)"Hello, world!"
--voice, -v音声名Kore
--output, -o出力ファイルのベース名welcome
--output-dir音声の出力ディレクトリaudio/
--no-timestamp自動タイムスタンプを無効化フラグ
--model, -mTTS モデルgemini-2.5-flash-preview-tts
--stream, -sストリーミングを有効化フラグ
--speakers複数話者の割り当て"Joe:Kore,Jane:Puck"

出力:WAV 音声ファイルのパス

ワークフロー

ワークフロー 1:基本的なテキスト音声変換
node scripts/tts.js "Hello, world! Have a wonderful day."
  • 最適な用途:手早い音声生成、簡単なメッセージ
  • 音声:Kore(デフォルト、明瞭でプロフェッショナル)
  • 出力:audio/tts_output_YYYYMMDD_HHMMSS.wav(タイムスタンプを自動付与)
ワークフロー 2:別の音声を選択
node scripts/tts.js "Welcome to our podcast about technology trends" --voice Puck --output welcome
  • 最適な用途:親しみやすく、会話調のコンテンツ
  • 音声の選択肢:Kore、Puck、Charon、Fenrir、Aoede、Zephyr、Sulafat
  • 出力:audio/welcome_YYYYMMDD_HHMMSS.wav
ワークフロー 3:複数話者の会話
node scripts/tts.js "TTS the following conversation:
Joe: How's it going today?
Jane: Not too bad, how about you?
Joe: I'm working on a new project.
Jane: Sounds exciting, tell me more!" --speakers "Joe:Kore,Jane:Puck" --output conversation
  • 最適な用途:対話、インタビュー、ロールプレイ形式のコンテンツ
  • 形式:話者名を付けた会話
  • スクリプトがテキストを適切な音声に自動的に振り分けます
  • 出力:audio/conversation_YYYYMMDD_HHMMSS.wav
ワークフロー 4:ストリーミングで長文コンテンツを処理
node scripts/tts.js "This is a very long text that would benefit from streaming..." --stream --output long-form
  • 最適な用途:ポッドキャスト、オーディオブック、長い記事
  • ストリーミング:長文の音声をチャンク単位で処理します
  • 出力:audio/long-form_YYYYMMDD_HHMMSS.wav
ワークフロー 5:プロフェッショナルなナレーション
node scripts/tts.js "Welcome to our quarterly earnings presentation. Today we'll discuss our growth metrics and future plans." --voice Charon --output voiceover
  • 最適な用途:企業向けコンテンツ、プレゼンテーション、正式なお知らせ
  • 音声:Charon(低く、威厳のある声)
  • 使用する場面:プロフェッショナルで落ち着いたトーンが必要な場合
ワークフロー 6:カスタム出力ディレクトリ
node scripts/tts.js "Save to specific folder." --output-dir ./my-projects/podcasts/ --output episode1
  • 最適な用途:整理されたプロジェクト構成
  • ディレクトリが存在しない場合は自動的に作成されます
  • 出力:./my-projects/podcasts/episode1_YYYYMMDD_HHMMSS.wav
ワークフロー 7:コンテンツ作成パイプライン(テキスト → 音声)
# 1. Generate script (gemini-text skill)
node skills/gemini-text/scripts/generate.js "Write a 2-minute podcast intro about sustainable energy"

# 2. Generate audio (this skill)
node scripts/tts.js "[Paste generated script]" --voice Fenrir --output podcast-intro

# 3. Use in video or podcast
  • 最適な用途:ポッドキャスト、オーディオブック、動画のナレーション
  • 組み合わせるツール:スクリプト生成用の gemini-text
ワークフロー 8:アクセシビリティに配慮したコンテンツ
node scripts/tts.js "Welcome to our accessible website. This audio describes our main navigation options." --voice Aoede --output accessibility
  • 最適な用途:ウェブアクセシビリティ、スクリーンリーダーの代替
  • 音声:Aoede(旋律的で心地よい)
  • 使用する場面:視覚障害のあるユーザーがコンテンツを利用できるようにする場合
ワークフロー 9:教育コンテンツ
node scripts/tts.js "Chapter 1: Introduction to Quantum Computing. Let's explore the fundamental principles..." --voice Zephyr --output chapter1
  • 最適な用途:教材、チュートリアル、eラーニング
  • 音声:Zephyr(軽やかで柔らかな声)
  • 相性のよい組み合わせ:コンテンツ生成用の gemini-text
ワークフロー 10:タイムスタンプを無効化
node scripts/tts.js "Fixed filename." --output my-audio --no-timestamp
  • 最適な用途:ファイル名を完全に自分で管理したい場合
  • 出力:audio/my-audio.wav(タイムスタンプなし)
  • 使用する場面:特定の命名規則でファイルを生成する場合

パラメーターのリファレンス

モデルの選択
モデル品質速度最適な用途
gemini-2.5-flash-preview-tts良好高速一般用途、大量の音声生成
gemini-2.5-pro-preview-ttsより高品質低速プレミアムコンテンツ、ナレーション
音声の選択
音声特徴最適な用途
Kore明瞭でプロフェッショナルアナウンス、汎用(デフォルト)
Puck親しみやすく会話的カジュアルなコンテンツ、インタビュー
Charon低く、威厳がある企業向け、真面目なコンテンツ
Fenrir温かみがあり、表現豊かストーリーテリング、物語
Aoede旋律的で心地よい教育、アクセシビリティ
Zephyr軽やかで柔らかい穏やかなコンテンツ、チュートリアル
Sulafat中立的でバランスが取れているドキュメンタリー、事実に基づくコンテンツ
音声フォーマット
仕様値
フォーマットWAV(PCM)
サンプルレート24000 Hz
チャンネル1(モノラル)
ビット深度16-bit
トークン制限
制限種類説明
8,192入力入力テキストの最大トークン数
16,384出力出力音声の最大トークン数

出力の解釈

音声ファイル
  • フォーマット:WAV(ほとんどのプレーヤーと互換性があります)
  • モノラルチャンネル(単一の音声トラック)
  • サンプルレート:24000 Hz(放送品質)
  • 必要に応じてMP3/AACに変換できます
複数話者のファイル
  • 複数の音声を含む単一のWAVファイル
  • ファイル内でタイミングによって音声が分離されています
  • --speakers パラメーターを使用して、話者を音声に割り当てます
ストリーミング出力
  • 生成中に音声をチャンク単位で処理します
  • スクリプトに「音声をストリーミングしています...」というメッセージが表示されます
  • 非常に長いテキストやリアルタイムアプリケーションに便利です

よくある問題

「google-genai がインストールされていません」
npm install @google/genai@latest dotenv@latest
「音声名が見つかりません」
  • 音声名のスペルを確認してください
  • 利用可能な音声を使用してください:Kore、Puck、Charon、Fenrir、Aoede、Zephyr、Sulafat
  • 音声名では大文字と小文字が区別されます
「音声が生成されませんでした」
  • テキストが空でないことを確認してください
  • テキストがトークン制限(8,192)を超えていないことを確認してください
  • テキストを短いセグメントに分けて試してください
  • APIのクォータ制限を確認してください
「複数話者のフォーマットエラー」
  • フォーマット:SpeakerName:VoiceName,Speaker2:Voice2
  • 話者はカンマで区切ります
  • 話者と音声の間にはコロンを使用します
  • 例:"Joe:Kore,Jane:Puck,Host:Charon"
「出力ファイルがすでに存在します」
  • スクリプトは既存のファイルを上書きします
  • 競合を避けるには、--output のファイル名を変更してください
  • バッチ生成には一意の名前を使用してください
音声品質の問題
  • 入力テキストに特殊な文字が含まれていないか確認してください
  • より適切な発音にするため、別の音声を試してください
  • 長いテキストは小さなセグメントに分割することを検討してください
  • 音声再生ソフトウェアとの互換性を確認してください

ベストプラクティス

音声の選択
  • Kore:汎用、明瞭な発音
  • Puck:会話的で、親しみやすいトーン
  • Charon:プロフェッショナルで、威厳のある声
  • Fenrir:感情豊かで、ストーリーテリング向け
  • Aoede:柔らかく穏やかで、アクセシビリティ向け
  • Zephyr:教育向け、明瞭な説明
テキストの準備
  • 自然な言葉遣いと句読点を使用してください
  • コンマやピリオドを使って間を入れてください
  • 必要に応じて、発音が難しい単語は綴りを展開してください
  • 非常に長いテキストは論理的なセグメントに分割してください
  • 複数話者のコンテンツには話者ラベルを追加してください
パフォーマンスの最適化
  • 非常に長いテキストにはストリーミングを使用してください
  • より細かく制御するには、短いセグメントを生成してください
  • 生成を高速化するには、flashモデルを使用してください
  • 効率化のため、複数のファイルをまとめて処理してください
品質に関するヒント
  • コンテンツの種類に合わせて、さまざまな音声を試してください
  • 句読点を使って適切なペースにしてください
  • 音声を選ぶ際は、文脈を考慮してください
  • 最終的に使用する前に、出力を聞いてください
  • 複数話者の場合は、話者を明確にラベル付けする必要があります
音声別のユースケース
音声最適なユースケース
Koreアナウンス、ナビゲーション、一般情報
Puckポッドキャスト、インタビュー、カジュアルなコンテンツ
Charon企業向け、ニュース、正式なプレゼンテーション
Fenrirオーディオブック、物語、感情を伝えるコンテンツ
Aoedeアクセシビリティ、教育、穏やかなコンテンツ
Zephyrチュートリアル、説明、ガイド
Sulafatドキュメンタリー、事実に基づくプレゼンテーション

関連スキル

  • gemini-text: TTS 用のスクリプトとテキストを生成します
  • gemini-image: 音声に添えるビジュアルを作成します
  • gemini-batch: 複数の TTS リクエストを効率的に処理します
  • gemini-files: 音声ファイルをアップロードして処理します

クイックリファレンス

# Basic
node scripts/tts.js "Your text here"

# Custom voice
node scripts/tts.js "Your text" --voice Puck --output audio.wav

# Multi-speaker
node scripts/tts.js "Joe: Hi. Jane: Hello!" --speakers "Joe:Kore,Jane:Puck"

# Streaming
node scripts/tts.js "Long text..." --stream --output long.wav

# Professional
node scripts/tts.js "Corporate announcement" --voice Charon

リファレンス

コメント