Start here
SSN reads any chat it captures as text. Your chat platform doesn't need its own TTS. The dock or overlay with TTS turned on does the talking, following its filters.
The simplest link turns on TTS with your system's voices:
dock.html?session=YOUR_SESSION&speech=en-US
For OBS, add a free voice that plays through the page:
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=piper
Keep that page open and connected. Only one page should speak.
TTS is also in CAPTION.Ninja, for captions, transcription and translation. Both offer free and paid voices.
Providers
Set the provider with &ttsprovider=. Hear samples and compare them in the setup guide.
| Provider | Link value | Cost | Notes |
|---|---|---|---|
| System TTS | (default) | Free | Your browser's voices. Often silent in OBS. |
| Kokoro | kokoro | Free | Runs in the browser. Best free quality, dozens of voices. |
| Piper | piper | Free | Runs in the browser. Fast and light on the CPU. |
| Kitten | kitten | Free | Runs in the browser. Small model. |
| eSpeak-NG | espeak | Free | Classic robotic voice. Works on any computer. |
| OpenAI | openai | API costs | High quality. |
| Your own server | customtts or localtts | Free | Any OpenAI-compatible server. See the local TTS guide. |
| Google Cloud | google | API costs | Many languages. |
| Gemini | gemini | API costs | Style instructions for delivery. |
| ElevenLabs | elevenlabs | Free tier available | Natural voices, custom voice training. |
| Speechify | speechify | API costs | Many languages. |
| Fish Audio | fish | Free model available | OBS needs the local bridge. |
Link settings
Add these to the end of your dock or overlay link.
| Setting | What it does | Example |
|---|---|---|
&speech | Turns on TTS, with a language code. | &speech=en-US |
&ttsprovider | Picks the provider (see above). | &ttsprovider=kokoro |
&volume | Volume, 0.0 to 1.0. | &volume=0.8 |
&rate | Speaking speed, 0.1 to 10.0. | &rate=1.5 |
&pitch | Voice pitch, 0.1 to 2.0. | &pitch=1.2 |
&voice | System voice, by part of its name. | &voice=google |
&simpletts | Don't say “says” or “someone says”. | &simpletts |
&simpletts2 | Don't read names at all. | &simpletts2 |
&ttscommand | Only read messages that start with a command (default !say). | &ttscommand=!say |
&readevents | Also read events like subs and donations. | &readevents |
&skipmessages | Only read every Nth message. | &skipmessages=3 |
&ttsquick | Cuts speech off after this many characters. Remove it if messages get chopped. | &ttsquick=100 |
Provider settings
Add these after &ttsprovider=. In the popup, the same settings appear when you pick the provider.
| Provider | Settings |
|---|---|
| Kokoro | Voice &voicekokoro=af_bella · speed &kokorospeed=1.2. Spanish: ef_dora. Brazilian Portuguese: pf_dora. Background generation options. |
| Piper | Voice &pipervoice=en_US-hfc_female-medium · speed &piperspeed=1.0. Portuguese: pt_BR-faber-medium, pt_BR-edresson-low. Spanish: es_ES-davefx-medium, es_MX-ald-medium. |
| Kitten | Voice &kittenvoice=expr-voice-4-f. |
| eSpeak-NG | Voice &espeakvoice=en · speed &espeakspeed=175. |
| OpenAI / your own server | Voice &voiceopenai=nova · speed &openaispeed=1.0 · server &openaiendpoint=http://localhost:8880/v1/audio/speech. Local servers need no key. All local server settings. |
| Google Cloud | Key &ttskey=YOUR_API_KEY · voice &voicegoogle=en-GB-Standard-A · language &googlelang=en-US. |
| Gemini | Key &geminikey=YOUR_API_KEY · model &geminimodel=gemini-2.5-flash-preview-tts · voice &voicegemini=Kore · language &geminilang=th-TH · style &geministyle=Read aloud in a warm tone. |
| ElevenLabs | Key &elevenlabskey=YOUR_API_KEY · voice ID &voice11=YOUR_VOICE_ID · model &elevenlabsmodel=eleven_multilingual_v2. Stability, similarity and style can be adjusted too. |
| Speechify | Key &speechifykey=YOUR_API_KEY · voice &voicespeechify=henry · model &speechifymodel=simba-3.0 (default) or simba-3.2 for English · speed &speechifyspeed=1.2 (0.5 to 3.0). Speechify guide. |
| Fish Audio | API key and optional voice ID. Default model s2.1-pro-free. Setup and OBS bridge. |
&speech= alone doesn't change the voice. Old English voice IDs still work.Ready-made Spanish and Portuguese links
| Language | Best free quality (tested) | Fastest fallback (tested) |
|---|---|---|
| Portuguese | &speech=pt-BR&ttsprovider=piper&pipervoice=pt_BR-faber-medium | &speech=pt-BR&ttsprovider=espeak&espeakvoice=pt-br |
| Spanish | &speech=es-ES&ttsprovider=piper&pipervoice=es_ES-davefx-medium | &speech=es-ES&ttsprovider=espeak&espeakvoice=es |
Kokoro also works: &voicekokoro=ef_dora (Spanish) or pf_dora (Brazilian Portuguese). For cloud voices, pick a voice that supports your language in Google Cloud, ElevenLabs, Speechify, Gemini, or an OpenAI-compatible local server.
System voices
System TTS uses whatever voices your browser and computer have. These are typical, not guaranteed.
| Browser | System voices |
|---|---|
| Chrome | Yes. Google voices plus system voices. |
| Edge | Yes. Microsoft voices plus Windows language packs. |
| Firefox | Limited. Local system voices only. |
| Opera | Limited. Varies by install. |
| Safari | Needs a click before it can play audio. |
| OBS | Its own browser. It doesn't get Chrome's or Edge's voices. Testing in the SSN app doesn't test OBS. |
Check this browser's system voices. This only lists System TTS voices in the browser you open it in. It doesn't test OBS or providers like Kokoro. An empty list doesn't mean other providers won't work.
Add more voices on Windows
- Open Start > Settings > Time & Language > Speech.
- Under Manage Voices, click Add Voices.
- Pick languages and click Add.
- Restart your browser.
That's Windows 11. For Windows 10, see Microsoft's guide. Some third-party voices don't show up in browsers. Firefox often shows more system voices than Chrome-based browsers.
Get System TTS into OBS
- First check System TTS actually speaks. OBS may have no usable voice. If there's no speech, routing can't fix it. Use another provider instead.
- If speech plays in another browser, capture that browser with OBS application or desktop audio capture.
- Still stuck? Route the browser through a virtual audio cable (below).
Route audio through a virtual cable (Windows)
Downloads: VB-Audio Virtual Cable (free) · Voicemeeter · Audio Router (legacy)
| Method | Do this |
|---|---|
| Whole PC | Set CABLE Input as the Windows default output (Sound Settings > Output). |
| One app, Windows 11 | Settings > System > Sound > Volume Mixer. Set the browser's output to CABLE Input. |
| One app, Windows 10 | Sound Settings > App volume and device preferences. Set the browser's output to CABLE Input. |
| Audio Router | Older software. Route the browser to CABLE Input. |
| Voicemeeter | Set it as the Windows default output. Send hardware out to your speakers and the virtual out to OBS. |
Then in OBS: add Audio Input Capture, pick CABLE Output (or the Voicemeeter output), and set monitoring to Monitor and Output. Use Monitor Only if another source already sends it to the stream.
Test: play TTS, watch the OBS meter, check you can hear it, and adjust levels.
Fix problems
| Problem | Try this |
|---|---|
| No sound | Check TTS is on, the speaking page is open, and the Browser Source isn't muted. In a normal browser, click the page once. |
| Silent in OBS | No speech at all? Check the provider first. If there is speech, check Control audio via OBS, the mixer mute, and output tracks. Or capture the browser that's speaking. |
| Cloud voice not working | Check the API key and provider name. With no key, SSN falls back to System TTS, which may be silent in OBS. |
| Local server works in the app, not OBS | OBS is a separate browser. Check the server from the OBS computer, especially with 127.0.0.1. See the localhost rule. |
| Only the first letter or words are read | Remove ttsquick from the OBS link. |
| New voices don't show up | Restart the browser after adding language packs. |
| Safari won't speak | Safari has limited automatic TTS. Click the page once to allow audio. |
Good habits
- Use a provider that plays through the page. It's the easiest OBS setup, and free ones exist.
- Test with a short message before going live.
- Viewers can type anything. Have a quick way to turn TTS off.