Skip to main content

Set Up TTS (Text-to-Speech)

TTS is the engine that reads donation messages aloud during your stream. The app supports 4 providers:

ProviderCostQualityAPI key?
Web Speech APIFreeBasic (uses your OS / browser voices)No
Google Cloud TTSPer-characterHigh (Chirp3-HD)Yes
OpenAI TTSPer-characterHigh (natural-sounding)Yes
Gemini TTSPer-tokenHigh (30 voices + style prompt)Yes

What you'll need

  • A decision on which provider you want to use as your primary
  • An API key, if you picked a paid provider
  • Speakers/headphones to listen to the preview

Step 1 — (For paid providers) enter your API key first

API keys live in the Connections tab, not the TTS tab.

  1. Go to Settings → Connections
  2. Find the row for the provider you'll use: Google Cloud TTS, OpenAI, or Gemini
  3. Paste the API key into the matching field
  4. Click Save

If you're only using Web Speech API — skip this step.


Step 2 — Pick your Primary Provider

  1. Go to Settings → TTS Voice tab
  2. In the Provider section, pick your primary provider
  3. The voice / config options below change to match the selected provider

Step 3 — Configure Voice / Speed / Pitch

Per provider:

  • Web Speech — pick from the voices your OS has installed (Thai voices show up if you have the language pack installed)
  • Google Cloud TTS — pick a voice like th-TH-Chirp3-HD-Despina, tweak speakingRate (0.25–4.0) and pitch
  • OpenAI TTS — pick a model (tts-1 / tts-1-hd), a voice (alloy / ash / coral / echo / fable / nova / onyx / sage / shimmer), and speed
  • Gemini TTS — pick one of 30 voices (each with a descriptor: Bright, Upbeat, Firm…) + a style prompt like "speak cheerfully"

Step 4 — Test it with Preview

Every provider has a Preview button:

  1. Type a sample message (e.g. "Hi there, thanks for the donation!")
  2. Click Preview / ▶ Listen
  3. Listen — adjust voice / speed / pitch if it's not what you want

:::tip You can also test from the Test Panel The Test Panel (/test) has its own TTS Preview field — handy if you don't want to bounce back to Settings. :::


Step 5 — Set a Fallback Provider

The fallback provider kicks in automatically if the primary fails (e.g. quota exhausted, API down). If the fallback also fails, the app falls back to Web Speech as a last resort.

  1. In the same section, find Fallback Provider
  2. We recommend Web Speech (free, always available) — especially if your primary is a paid provider

Step 6 — (Optional) set Min Donation / Max Length

Scroll further down the TTS tab:

  • ttsMinDonation — minimum amount that triggers TTS (e.g. ฿5+) — donations under this are skipped
  • ttsMaxMessageLength — caps message length (chars) — anything longer gets truncated

Tips & Troubleshooting

  • Web Speech has no Thai voice: install the Thai language pack in Windows Settings → Time & Language → Speech
  • Google TTS error 403: check that Cloud Text-to-Speech API is enabled in Cloud Console and the API key isn't expired
  • OpenAI burning credits: try switching to tts-1 (cheaper than tts-1-hd) or enable the min donation filter
  • Gemini Auto-Tone: a special mode just for Gemini — see the Gemini Auto-Tone guide

:::tip Audio Cache Mor9an caches generated TTS audio for 24 hours — repeated messages don't burn through your API quota. :::


See also