tts-generation

Convertir un script d'émission radio en audio vocal avec un effet téléphonique sur les voix des correspondants en utilisant l'API Interactions.

npx skills add https://github.com/google-gemini/gemini-managed-agents-templates --skill tts-generation

TTS Generation

Convert the radio show script into speech audio using the Gemini TTS model via the Interactions API. Apply a telephone bandpass filter to correspondent voices so they sound like phone call-ins, while keeping the host's voice clean studio-quality.

Embedded Script

python3 skills/tts-generation/scripts/generate_tts.py --workspace ./workspace

Arguments

ArgumentDefaultDescription
--workspaceworkspaceRoot workspace directory
--workers8Max parallel TTS worker threads

What it does

  1. Reads the script from {workspace}/data/script.md.
  2. Parses it into individual (speaker, text) turns and assigns voices.
  3. Generates TTS for all turns in parallel using a thread pool (default 8 workers).
  4. Retries each failed turn up to 3 times with exponential backoff.
  5. Applies an ffmpeg telephone bandpass filter (300Hz–3.4kHz) to correspondent voices.
  6. Keeps the host (Paul) audio clean and unfiltered.
  7. Concatenates all segments in original script order into a single WAV.

Dependencies

  • google-genai (>= 2.0.0)
  • ffmpeg (system)

API Details

Uses the Interactions API with single-speaker TTS — no multi-speaker workaround needed.

Voice Assignment

Voices are assigned dynamically based on [Male] / [Female] gender tags in the script:

SpeakerVoiceAudio Treatment
Paul (host)PuckClean — no filter
Caller [Female] — 1stKoreTelephone filter
Caller [Female] — 2ndAoedeTelephone filter
Caller [Male] — 1stCharonTelephone filter
Caller [Male] — 2ndFenrirTelephone filter

Voices cycle round-robin if there are more callers than available voices. Accent tags ([Accent: Irish], etc.) are injected into the TTS prompt to influence pronunciation.

Telephone Filter

Applied via ffmpeg to correspondent audio segments:

highpass=f=300, lowpass=f=3400, acompressor, volume=1.5

This simulates the standard telephone bandwidth (300Hz–3.4kHz) and adds compression to mimic phone codec dynamics.

Output

  • Primary output: {workspace}/audio/speech/speech.wav
  • Format: WAV, 24kHz, 16-bit PCM, mono
  • Intermediate segments: {workspace}/audio/speech/segments/turn_*.wav

Plus de skills de google-gemini

agent-tui
google-gemini
Main Agents: Do NOT use this skill directly. If you need to test the TUI, invoke the `tui_tester` subagent. Drive terminal UI (TUI) applications…
gemini-api-cli
google-gemini
Guide pour utiliser l'outil en ligne de commande de l'API Gemini. À utiliser lorsque vous devez interagir avec l'API Gemini via la ligne de commande, gérer des agents ou générer du contenu multimédia (images,…)
behavioral-evals
google-gemini
Conseils pour créer, exécuter, corriger et promouvoir des évaluations comportementales. À utiliser lors de la vérification de la logique de décision d’un agent, du débogage d’échecs, du débogage d’invites…
gemini-live-api-dev
google-gemini
We need to translate the given text from English to French, preserving the name "gemini-live-api-dev" if it appears, but it does not appear in the text. The text is a description of an agent skill. We must not add any extra commentary, labels, or formatting. Just the translation. The text: "Real-time bidirectional streaming with Gemini over WebSockets for audio, video, and text conversations. Supports audio input/output (16 kHz PCM), video frames, text, and automatic transcriptions with voice activity detection for interruption handling Includes native audio features: affective dialog, proactive audio, and thinking mode; function calling for synchronous and asynchronous tool use; and Google Search grounding Offers session management with context compression, resumption, and..." We need to translate this into French. Note: "Gemini" is a product name, keep as is. "WebSockets" is a protocol name, keep as is. "16 kHz PCM" is technical, keep as is. "Google Search" is a product name, keep as is. Also "affective dialog",
gemini-omni-flash-api
google-gemini
Utilisez cette compétence pour le montage vidéo génératif, la conversion texte-vers-vidéo, la génération vidéo avec référence d'image, et les animations de transition de première image vers vidéo en utilisant le…
gemini-api-dev
google-gemini
Développez des applications avec les modèles Gemini de Google, prenant en charge le contenu multimodal, l'appel de fonctions et les sorties structurées en Python, JavaScript, Go et Java. Accédez aux modèles actuels Gemini 3 (Pro, Flash, Pro Image) avec un contexte de 1 million de tokens ; les modèles hérités Gemini 2.x et 1.5 sont obsolètes. Prend en charge la génération de texte, la compréhension d'images/audio/vidéo, l'appel de fonctions, la sortie JSON structurée, l'exécution de code, la mise en cache de contexte et les embeddings. Kits SDK officiels disponibles : google-genai (Python),...
gemini-interactions-api
google-gemini
Interface unifié pour les modèles et agents Gemini avec état côté serveur, streaming et orchestration d'outils. Prend en charge plusieurs modèles actuels (gemini-3-flash-preview, gemini-3-pro-preview, gemini-2.5-flash/pro) et l'agent Deep Research ; remplace automatiquement les ID de modèles obsolètes par des alternatives actuelles. Déchargez l'historique des conversations sur le serveur via previous_interaction_id pour des interactions multi-tours avec état sans gestion manuelle de l'historique. Orchestration d'outils intégrée incluant...
deliver
google-gemini
Publie une version condensée du briefing vers un webhook entrant Google Chat ou Slack, afin que le run quotidien se livre tout seul — passe silencieusement lorsqu'aucun webhook n'est…