Read your live stream chat aloud using free, private, self-hosted AI voices — no API keys required
Social Stream Ninja supports fully local AI text-to-speech — your chat messages are converted to voice entirely on your own computer, with no data sent to external servers and no API key required.
There are two approaches:
Several high-quality AI voices are built directly into Social Stream Ninja. They run in your browser using WebAssembly or ONNX — no server, no Docker, no install.
Just add a URL parameter and go.
Run a local TTS server on your machine and point Social Stream Ninja at it. Gives you more voice options, voice cloning, and server-side control.
Uses Social Stream's built-in OpenAI-compatible endpoint support.
These engines are bundled inside Social Stream Ninja and require no installation. They run in the browser using WebAssembly (WASM) or ONNX Runtime.
| Provider | Quality | CPU Use | GPU/WebGPU | URL Parameter |
|---|---|---|---|---|
| Kokoro TTS | ⭐⭐⭐⭐⭐ Excellent | Medium | Faster with GPU | ?ttsprovider=kokoro |
| Piper TTS | ⭐⭐⭐⭐ Very Good | Low | CPU only | ?ttsprovider=piper |
| Kitten TTS | ⭐⭐⭐ Good | Very Low | CPU only | ?ttsprovider=kitten |
| eSpeak-NG | ⭐⭐ Robotic | Minimal | CPU only | ?ttsprovider=espeak |
Add &ttsprovider= and &speech= to your Social Stream dock.html URL:
Kokoro has 26 built-in voices. Specify one with &voicekokoro=:
Specify a voice model with &pipervoice=:
If you want more voice options, voice cloning, or a dedicated server you can reuse across tools, you can run a local TTS server. Social Stream Ninja connects to it using its built-in OpenAI-compatible TTS endpoint support — no API key needed for local servers.
Three recommended options:
| Server | Model | GPU | Disk | Default Port |
|---|---|---|---|---|
| Kokoro-FastAPI Recommended | Kokoro 82M | Optional | ~2 GB | 8880 |
| openedai-speech (Piper) Lightweight | Piper TTS | CPU only | <1 GB | 8000 |
| kokoro-web | Kokoro 82M | Optional | ~2 GB | 3000 |
Kokoro-FastAPI runs the Kokoro 82M model as a local server with an OpenAI-compatible API. It works on CPU (no GPU required) and has excellent voice quality.
Open a terminal (Command Prompt, PowerShell, or Terminal) and run one of the following:
Open your browser and go to http://localhost:8880/web/ — you should see a web UI where you can test voices.
67+ voices available. A few highlights:
Browse and test all voices at http://localhost:8880/web/ once the server is running.
To keep Kokoro-FastAPI running automatically in the background, use Docker's restart flag:
It will now start automatically with Docker Desktop on every reboot.
openedai-speech is the lightest option — a CPU-only Piper TTS server under 1 GB. Good for older or less powerful computers.
docker-compose.min.yml. Alternatively, run the commands below directly.
openedai-speech uses OpenAI-style voice names mapped to Piper voices:
All self-hosted servers above use the same connection method — Social Stream's built-in OpenAI TTS endpoint support with a custom local URL.
| Parameter | Value | Description |
|---|---|---|
ttsprovider |
openai |
Use the OpenAI-compatible TTS path |
openaiendpoint |
http://localhost:8880/v1/audio/speech |
Your local server URL (change port as needed) |
speech |
en-US |
Enables TTS for English |
voiceopenai |
af_bella |
Voice name (depends on server) |
openaiformat |
mp3 |
Audio format: mp3, wav, opus, flac |
openaispeed |
1.0 |
Speaking speed (0.5–2.0) |
These work with any TTS provider, including local servers:
| Parameter | Example | Description |
|---|---|---|
simpletts |
&simpletts |
Skip "says" — reads message only |
simpletts2 |
&simpletts2 |
Skip usernames entirely |
volume |
&volume=0.8 |
Volume level (0.0–1.0) |
skipmessages |
&skipmessages=3 |
Read every 3rd message only |
ttscommand |
&ttscommand=!say |
Only read messages starting with !say |
readevents |
&readevents |
Also read subscriptions, donations, etc. |
How you capture TTS audio in OBS depends on how you're running Social Stream Ninja.
This is the simplest method and works for all TTS providers (built-in and self-hosted server).
dock.html URL with TTS parametersIf you're using the Social Stream Ninja standalone desktop app (not an OBS browser source):
?speech=en-US without a provider) uses OS speech synthesis, which cannot be captured by OBS browser source. Use one of the providers above (kokoro, piper, etc.) instead.
| Option | Setup | Quality | Private | OBS (Browser Source) | GPU Needed | Cost |
|---|---|---|---|---|---|---|
| Built-in Kokoro | None | ⭐⭐⭐⭐⭐ | Yes | Yes | No (faster with) | Free |
| Built-in Piper | None | ⭐⭐⭐⭐ | Yes | Yes | No | Free |
| Built-in Kitten | None | ⭐⭐⭐ | Yes | Yes | No | Free |
| Built-in eSpeak | None | ⭐⭐ | Yes | Yes | No | Free |
| Kokoro-FastAPI | Docker | ⭐⭐⭐⭐⭐ | Yes | Yes | No (optional) | Free |
| openedai-speech | Docker | ⭐⭐⭐⭐ | Yes | Yes | No | Free |
| ElevenLabs | API Key | ⭐⭐⭐⭐⭐ | No | Yes | No | Paid tiers |
| System TTS | None | ⭐⭐ | Yes | No* | No | Free |
* System TTS requires virtual audio cable routing for OBS capture.
&speech=en-US is in your URL.The model files are being downloaded (~50–200 MB). This only happens once — subsequent loads use the cached version. Wait for the first message before testing.
http://localhost:8880 (or your port) in a browser to confirm the server is up.If you're using the Social Stream browser extension (not the standalone app), your local server must allow cross-origin requests from the extension.
Most FastAPI-based servers (Kokoro-FastAPI, openedai-speech) allow all origins by default. If you see a CORS error:
OBS browser sources can have trouble reaching localhost servers. Try:
http://127.0.0.1:8880/v1/audio/speech instead of localhost?speech=en-US without &ttsprovider=) — that bypasses browser audio.Voice names are case-sensitive and must match what the server supports. Visit http://localhost:8880/web/ (Kokoro-FastAPI) to browse and test available voices.
Image tags change with new releases. If the tag in this guide no longer works, check the project's GitHub page for the latest version tag.