I want to showcase voice selections but I need the...
# ask-ai
e
I want to showcase voice selections but I need them to have personality types and am using gemini TTS with its range of voices. Can livekit allow me to do this, either using a tool and prompt specific for each selection for now calm, energetic, professional and how would I do it so it does not affect the main user flow
t
Thanks for reaching out, Brian. I'm an AI assistant and I'm here to help. Give me a moment while I research this topic.
Thanks — this is a great use case. I’m responding to your question about whether LiveKit can showcase multiple Gemini TTS voice “personalities” (calm, energetic, professional) and how to do it without disrupting the main user flow. Short answer • Yes. You can use Gemini TTS with LiveKit to present different voice personalities by sending descriptive
instructions
(prompting) and switching `voice_name`/options for each selection. • Do the change on the TTS/options layer (e.g., with an update call) so it only affects future utterances and doesn’t interrupt the current session. How this works (what to change) • Personality = descriptive instructions passed to the Gemini TTS engine (tone, pacing, emotion). ◦ Example prompts: ▪︎ Calm: "Speak in a calm and soothing tone, with slow pacing and gentle intonation." ▪︎ Energetic: "Speak in an energetic and enthusiastic tone, with lively pacing and dynamic expression." ▪︎ Professional: "Speak in a clear, confident, and professional tone, with moderate pacing and precise articulation." • Voice selection = choose a Gemini voice name (e.g.,
Zephyr
,
Kore
) and pair it with the instructions to shape personality. • Apply changes using the TTS update method so the next utterance uses the new personality/voice without restarting the agent or interrupting the conversation. Implementation approach (recommended) 1. Maintain a small voice-state per user/session that stores: ◦ Selected
voice_name
◦
instructions
(the personality prompt) 1. Provide a UI control (buttons or a dropdown) or a tool trigger to let the user pick a personality. 2. When a user picks a personality: ◦ Update the session’s TTS options (so only subsequent TTS output changes). ◦ Do not reinitialize the whole session/agent—use the update API. 1. Ensure updates take effect on the next utterance: ◦ This avoids cutting off or affecting in-progress audio. 1. Optionally add a short preview button that plays a single sample utterance using the selected personality so users can compare before committing. Concrete examples • Python (conceptual)
Copy code
# Update TTS options for the current session so next utterance uses new personality
session.tts.update_options(
    voice_name="Zephyr",
    instructions="Speak in a calm and soothing tone, with slow pacing and gentle intonation."
)
• Node/TypeScript (conceptual)
Copy code
session.tts.updateOptions({
  voiceName: "Zephyr",
  instructions: "Speak in an energetic and enthusiastic tone, with lively pacing and dynamic expression."
});
UX tips to avoid impacting main flow • Apply changes only on user action (explicit selection or preview), not automatically during active speech. • Keep a short confirmation or quick sample playback so users know what changed. • If your app has critical real-time voice interactions, only allow personality switches in non-critical moments or at natural breakpoints (e.g., between messages). • Cache preference per user so repeated selections don’t cause repeated updates. Limits / notes • Use
instructions
to shape personality — that’s the mechanism Gemini TTS exposes for tone/pacing. • Voice changes via update methods apply to the next utterance; they won’t retroactively change already-played audio. If you’d like, I can: • Draft ready-to-use personality prompts tuned for your use case (short, mid, and long variants). • Provide a minimal UI flow example that shows selection → update → preview without interrupting audio. • Help you pick default Gemini voices and map them to each personality (calm/energetic/professional). Which of these would help you next? And are you building this into an existing LiveKit room/agent session or starting a new demo flow? Sources: Gemini TTS plugin guide | LiveKit Documentation