Skip to content

LearnTutorials

Narrate your newsletter with Gemini 3.8 Flash TTS

Turn a newsletter issue into a voiceover with Gemini 3.8 Flash TTS: design a narrator voice in Google AI Studio, then automate it in under 20 minutes.

By Recaply EditorsIntermediate17 min5 stepsUpdated

A folded newspaper with curving sound lines rising from its page toward a pair of headphones

What you need

  1. Step 1: Open the speech playground

    1 min

    AI Studio's speech page lets you hear every change before you write any code.

    1. Go to aistudio.google.com/generate-speech and sign in with your Google account.
    2. In the model menu, pick Gemini 3.8 Flash TTS.

    You should see the speech page with Gemini 3.8 Flash TTS picked and an empty box for your script.

    Your old setup uses gemini-3.1-flash-tts-preview?

    That preview model is older. Google now names Gemini 3.8 Flash TTS for long narration, and Gemini 3.8 Flash-Lite TTS as the cheaper, faster replacement.

    Flash TTS gives the richest voice for long reads. Flash-Lite TTS suits high volume, and the two take the same scripts.

  2. Step 2: Design a narrator voice

    3 min

    A designed voice sounds the same in every issue, so you describe your narrator only once.

    1. Open the Voice Design studio from the voice options.
    2. Describe your narrator in 1 or 2 sentences: age, timbre, accent and how they speak. Use the example below as a start.
    3. Play the preview, then save the voice with a name such as Newsletter narrator.
    Your voice description
    A clear, warm narrator in her 30s with a neutral American accent, reading the news at a steady, friendly pace.

    You should see your new voice saved in your voice list, with a preview you can play.

    The voice doesn't match your description?

    Keep it to 1 or 2 clear sentences. Drop traits that pull in different directions, such as calm and excitable, then generate it again.

    Prefer a ready-made voice? Of the 30 built-in voices, Google labels Charon "Informative" and Sulafat "Warm".

  3. Step 3: Turn the issue into a script

    5 min

    Gemini reads your text word for word, so anything left in the script gets spoken.

    1. Paste one section of your issue into a plain text editor.
    2. Delete links, image captions, button text and emoji.
    3. Add <short pause> between stories and <long pause> before a new section.
    4. Write one key word in capitals where you want the narrator to stress it.
    Your script
    Good morning. Here are 3 stories worth your time. <short pause>
    
    First, [STORY 1 IN 2 OR 3 SENTENCES]. <short pause>
    
    Second, [STORY 2 IN 2 OR 3 SENTENCES]. This one MATTERS if you [WHO IT AFFECTS]. <long pause>
    
    That's it for today. See you tomorrow.

    You should see a clean script with only spoken words and a few tags in angle brackets.

    Your old script uses square-bracket tags like [excitedly]?

    Those came from Gemini 3.1. Gemini 3.8 reads the text as a word-for-word script, so move the mood into the style note in step 4. Keep only angle-bracket tags like <sigh>.

    Make one script per section. A single request takes up to 8,192 input tokens, and short parts are easier to redo.

  4. Step 4: Direct the delivery and run it

    3 min

    One short style note sets the mood for a whole section, and Google says most scripts need none.

    1. Pick your narrator voice and paste your script.
    2. Click Run with no style note first, and listen.
    3. If the read needs a mood, add a style note of a few words, such as warm and upbeat, and run it again.
    4. When it sounds right, download the audio.

    You should see your section read aloud in your narrator's voice, with pauses where you put the tags.

    The narrator reads your directions out loud?

    The script box is read word for word. Move notes like "slowly" or "excited" into the style note, and keep only angle-bracket tags in the text.

    Keep fixed traits such as age or accent out of the style note. Those belong in the voice design.

  5. Step 5: Automate each issue with the API

    5 min

    With your voice ID and one command, each new issue becomes audio without opening AI Studio.

    1. Copy your narrator's voice_ ID from AI Studio. Click Get code to see the request for your own setup.
    2. On the API keys page, click Create API key. In your terminal, run export GEMINI_API_KEY="[YOUR KEY]".
    3. Save your script as script.txt in the folder you run the command from.
    4. Put your voice ID into the command below and run it.
    Run this (Mac or Linux)
    jq -n --rawfile text script.txt --arg voice "[YOUR VOICE ID]" \
      '{model: "gemini-3.8-flash-tts", input: [{type: "user_input", content: [{type: "text", text: $text, annotations: [{type: "speech_metadata", style: "warm and clear"}]}]}], response_format: {type: "audio"}, generation_config: {speech_config: [{voice: $voice}]}}' \
      | curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
        -H "x-goog-api-key: $GEMINI_API_KEY" -H "Content-Type: application/json" -d @- \
      | jq -r '[.steps[] | select(.type=="model_output") | .content[] | select(.type=="audio")] | last | .data' \
      | base64 --decode > issue.wav

    You should see an issue.wav file that plays your section in your narrator's voice.

    The file is empty or won't play?

    Delete the last 2 lines and the \ before them, then run it again to read the error. Most often, the key isn't set in this terminal window.

    Keep your API key in the environment variable. Never paste it into a script you share or commit. jq handles quotes and line breaks in your script for you.

You get

A narrator voice of your own and a script format that turns each issue into audio, in AI Studio or with one command

Did this guide work for you?

Sources