Brauche ich das?
„Lokal“ bedeutet eines von zwei Dingen: eine in SSN integrierte Stimme, die in deinem Browser läuft, oder ein Sprachserver, den du selbst betreibst.
| Ich möchte… | So geht's |
|---|---|
| Kostenlose Stimmen ohne Installation | Verwende: integrierte Stimmen. Für die meisten ist das genug. |
| Einen bereits laufenden Sprachserver nutzen | Einen Server verbinden. |
| Eine geklonte Stimme | Siehe Stimmenklonen. |
| Fish Audio in OBS | Siehe Fish Audio einrichten. |
| Kostenpflichtige Cloud-Stimmen | Siehe TTS-Referenz. |
Integrierte Stimmen (keine Installation nötig)
Diese laufen innerhalb von SSN in deinem Browser. Kein Server, Docker oder API-Schlüssel nötig.
| Stimme | Klang | Rechnerauslastung | Linkwert |
|---|---|---|---|
| Kokoro | Ausgezeichnet | Mittel. Mit GPU schneller. | ttsprovider=kokoro |
| Piper | Sehr gut | Gering. Nur CPU. | ttsprovider=piper |
| Kitten | Gut | Sehr gering. Nur CPU. | ttsprovider=kitten |
| eSpeak-NG | Robotisch | Minimal. Nur CPU. | ttsprovider=espeak |
In 4 Schritten einrichten
- Hinzufügen
&speech=en-US&ttsprovider=kokoroan deinedock.htmlLink. (Oderpiper,kitten,espeak.) - Füge diesen Link in OBS hinzu als Browserquelle. Diese Seite erzeugt den Ton.
- Aktiviere in den Eigenschaften Audio über OBS steuern (Control audio via OBS).
- Sende eine kurze Testnachricht im Chat, zum Beispiel
Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
Stimmen, Geschwindigkeit und andere Sprachen: Anbietereinstellungen. Lieber klicken? Nutze die Einrichtungsleitfaden.
Deinen eigenen TTS-Server verbinden
Ein Server bietet mehr Stimmen, Stimmenklonen oder eine Stimme für mehrere Werkzeuge. SSN kommuniziert damit wie mit einem OpenAI-kompatibel Sprachserver. Kein API-Schlüssel nötig.
- Starte deinen Server. Kokoro-FastAPI ist am einfachsten.
- Öffne in SSN die Liste der TTS-Anbieter und wähle Eigener / lokaler TTS-Endpunkt.
- In Benutzerdefinierter / lokaler API-Endpunkt, gib die Serveradresse ein, zum Beispiel
http://127.0.0.1:8880/v1/audio/speech. - Lass das Feld für den API-Schlüssel leer.
- Wähle eine Stimme, die dein Server kennt:
af_bellafür Kokoro,novafür openedai-speech. - Kopiere den Link in OBS und sende eine Testnachricht im Chat.
| Server | Modell | GPU | Datenträger | Port |
|---|---|---|---|---|
| Kokoro-FastAPI (empfohlen) | Kokoro 82M | Optional | ~2 GB | 8880 |
| openedai-speech (Piper) | Piper | Nur CPU | <1 GB | 8000 |
| kokoro-web | Kokoro 82M | Optional | ~2 GB | 3000 |
Diese benötigen Docker Desktop installiert und gestartet. Für den persönlichen Gebrauch ist es kostenlos.
Die localhost-Regel
Das ist der häufigste Fehler.
localhost und 127.0.0.1 bedeuten immer „dieser Computer“. Wenn OBS auf einem PC und der Sprachserver auf einem anderen läuft, 127.0.0.1 in OBS verweist auf den OBS-PC.
| Deine Einrichtung | Diese Adresse verwenden |
|---|---|
| OBS und Server auf demselben PC | http://127.0.0.1:8880/v1/audio/speech |
| Server auf einem anderen PC zu Hause | http://192.168.x.x:8880/v1/audio/speechdurch die lokale IP dieses PCs |
| SSN-App-Test funktioniert, OBS bleibt stumm | OBS braucht eine Adresse, die aus OBS erreichbar ist. Der App-Test beweist nicht, dass OBS den Server erreicht. |
Prüfe auch, ob die Firewall den Port erlaubt und Docker ihn veröffentlicht hat (-p 8880:8880).
Kokoro-FastAPI
Kokoro-FastAPI führt Kokoro als lokalen Server aus. Funktioniert mit CPU; keine GPU nötig.
- Öffne ein Terminal (Eingabeaufforderung, PowerShell oder Terminal) und führe einen dieser Befehle aus:
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2
NVIDIA-GPU (schneller):
docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
Beim ersten Start werden einmalig etwa 1,5–2 GB heruntergeladen. - Öffnen
http://localhost:8880/web/. Eine Seite zum Testen von Stimmen sollte erscheinen (über 67 verfügbar). - Verwende diesen Link (ändere die Adresse, wenn der Server auf einem anderen PC läuft):
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella
af_bella, af_sarah, am_adam oder bf_emma. OpenAI-Namen wie nova oder alloy funktioniert möglicherweise nicht.Automatisch mit Docker starten:
docker run -d --restart unless-stopped -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2
openedai-speech (Piper und XTTS-v2)
Option A: Leichter Piper-Server (CPU)
Unter 1 GB. Kein Stimmenklonen.
docker run -d --restart unless-stopped -p 8000:8000 ghcr.io/matatonic/openedai-speech-min
Stimmen: alloy, echo, fable, onyx, nova, shimmer.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=openai&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova
Aus dem Quellcode unter Windows starten (HTTP-500-Fehler)
Füge aus seiner virtuellen Umgebung den Scripts Ordner nach PATH zuerst. Sonst findet es piper.exe oder ffmpeg.exe.
cd openedai-speech $env:Path = "$PWD\.venv\Scripts;$env:Path" .\.venv\Scripts\python.exe speech.py --xtts_device none -H 127.0.0.1 -P 8000
Option B: Stimmenklonen mit XTTS-v2 (GPU)
Benötigt den vollständigen Server, nicht openedai-speech-min. Plane etwa 4 GB GPU-Speicher ein. CPU funktioniert, ist aber langsam.
XTTS-v2 in 4 Schritten einrichten
- Server herunterladen und starten:
git clone https://github.com/matatonic/openedai-speech.git cd openedai-speech Copy-Item sample.env speech.env docker compose up -d
Verwende unter macOS oder Linuxcp sample.env speech.env. Docker benötigt GPU-Zugriff. Das Modell lädt bei der ersten Nutzung herunter. - Erstelle einen sauberen Referenzclip einer Stimme, die du verwenden darfst. Mono, 22050 Hz, 6–30 Sekunden:
ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
- In
config/voice_to_speaker.yaml, füge es unter dem vorhandenen Eintrag hinzu:tts-1-hdAbschnitt (vorhandene Stimmen beibehalten):tts-1-hd: me: model: xtts speaker: voices/me.wav language: enÄnderemeauf den Namen, den SSN senden wird. - Führe
docker compose restart, verwende dann:dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8000/v1/audio/speech&openaimodel=tts-1-hd&voiceopenai=me&openaiformat=wav
openaimodel=tts-1-hd ist erforderlich. Ohne diese Angabe sendet SSN tts-1und der Server verwendet stattdessen Piper. voiceopenai muss deinem Stimmnamen in der YAML-Datei entsprechen.Vom Browser blockiert? Starte die Bridge und ändere nur openaiendpoint auf http://127.0.0.1:8124/v1/audio/speech.
Die lokale TTS-Bridge
Ein kleines SSN-Hilfsprogramm. Es nimmt SSN-Anfragen entgegen, leitet sie an den Sprachserver weiter und gibt Audio in browsergeeigneter Form zurück. Benötigt Node.js.
http://127.0.0.1:8124/v1/audio/speechauch wenn der Sprachserver auf einem anderen PC läuft.
- Teile der Bridge mit, wo dein Server läuft. PowerShell:
$env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech"
Server auf einem anderen PC? Verwende dessen lokale IP-Adresse, zum Beispielhttp://192.168.x.x:8880/v1/audio/speech. - Führe im SSN-Ordner aus
node scripts/local-tts-bridge.cjs. Lass es laufen. - Richte SSN auf die Bridge aus:
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=af_bella
macOS/Linux, in einer Zeile: SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" node scripts/local-tts-bridge.cjs. Innerhalb des local-tts-bridge Ordner, node server.cjs macht dasselbe. Ändere den Port mit SSN_TTS_BRIDGE_PORT=8125. Alle Optionen: README der Brücke.
GPT-SoVITS-Modus
GPT-SoVITS verwendet sein eigenes /tts Format. Die Bridge übersetzt die Anfragen dafür.
$env:SSN_TTS_REF_AUDIO_PATH="C:\voices\speaker.wav" $env:SSN_TTS_REF_TEXT="Reference audio transcript here." $env:SSN_TTS_TARGET="http://127.0.0.1:9880/tts" node scripts/local-tts-bridge.cjs --mode gptsovits
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&openaiformat=wav
F5-TTS-Servermodus
Einige F5-TTS-Wrapper verwenden /synthesize_speech/?text=...&voice=.... Die Bridge übersetzt für sie.
$env:SSN_TTS_TARGET="http://127.0.0.1:7860/synthesize_speech/" node scripts/local-tts-bridge.cjs --mode f5
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=default_en&openaiformat=wav
Stimmenklonen
Klonen ist keine SSN-Einstellung, sondern eine Funktion einiger Sprachserver. SSN sendet den Chattext; der Server wählt die geklonte Stimme.
- Nimm einen sauberen Clip mit einer einzelnen Stimme auf, meist 3–30 Sekunden lang und mit wenig Hintergrundgeräuschen.
- Manche Server brauchen zusätzlich den genauen Wortlaut des Clips.
- Der Server erstellt aus dem Clip ein Stimmprofil.
- SSN sendet den Chattext mit
ttsprovider=customtts. - Der Server gibt Audio zurück (meist WAV oder MP3), das SSN abspielt.
Mit höchstens 6 GB GPU-Speicher solltest du mit kleinen Modellen auf OpenAI-kompatiblen Servern beginnen. Größere Modelle funktionieren ebenfalls, wenn sie extern gehostet werden.
| Option | Klonen anhand von | Passt auf eine GPU mit 6 GB? | So verbindest du ihn |
|---|---|---|---|
| XTTS-v2 / openedai-speech | Kurzer WAV-Clip | Ja, etwa 4 GB | Direkt, /v1/audio/speech. Projekt ist archiviert. |
| chatterbox-tts-api / Chatterbox-TTS-Server | Referenzclip | Wahrscheinlich mit Turbo oder kleinen Abschnitten | Direkt oder über die Bridge. Mit GPU flüssiger als mit CPU. Die Einrichtung hängt vom Fork ab. |
| Qwen3-TTS (0,6B / 1,7B) | 3-Sekunden-Clip | Wahrscheinlich (0.6B Base) | Benötigt einen OpenAI-kompatiblen Wrapper. |
| GPT-SoVITS | 5 Sekunden; mit 1 Minute besser | Wahrscheinlich mit fp16 / schlanker Installation | Brücke --mode gptsovits. |
| F5-TTS | Clip mit seinem Transkript | Vielleicht | Ein Wrapper oder eine Bridge --mode f5 mit F5-TTS_server. |
| MisoTTS 8B | Audio-Vorlage | Nein; 24 GB empfohlen | Nur externes Hosting. Kein lokaler REST-Endpunkt im Repository. |
Das integrierte Kokoro und Kokoro-FastAPI klonen keine Stimmen.
Was mit SSN getestet wurde
Geprüft mit beiden Seiten: dock.html und featured.html:
- openedai-speech (Piper): echte CPU-Sprachausgabe, direkt und über die Bridge.
- Chatterbox-TTS-Server: echte CPU-Sprachausgabe mit
Emily.wav, direkt und über die Brücke. - chatterbox-tts-api: Anfrageformat getestet, direkt und über die Bridge.
- GPT-SoVITS und F5-TTS_server: nur über Bridge-Modi.
- F5-TTS offiziell und Qwen3-TTS: benötigen zuerst einen Wrapper (nur CLI, Gradio oder Bibliothek).
Welchen Computer brauche ich?
Grobe Richtwerte, keine Zusagen. Modellgröße, Textlänge und andere Apps beeinflussen den Speicherbedarf.
| Option | Minimum | Komfortabel |
|---|---|---|
| System TTS / eSpeak | Jeder PC | Jeder PC |
| Integriertes Kitten | Schwache CPU, 4 GB RAM | Laptop-CPU, 8 GB RAM |
| Integriertes Piper | Moderne CPU, 4–8 GB RAM | Moderne CPU, 8 GB RAM |
| Integriertes Kokoro | Moderne CPU, 8 GB RAM | WebGPU-GPU oder schnelle CPU, 8–16 GB RAM |
| Kokoro-FastAPI | CPU, 8 GB RAM | Optionale NVIDIA-GPU, 8–16 GB RAM |
| openedai-speech Piper | CPU, 4–8 GB RAM | CPU, 8 GB RAM |
| openedai-speech XTTS | NVIDIA-GPU mit etwa 4 GB, 8–16 GB RAM | NVIDIA-GPU mit mindestens 6 GB, 16 GB RAM |
| Chatterbox | CPU bei einigen Builds, langsam | NVIDIA-GPU mit mindestens 6 GB, 16 GB RAM |
| GPT-SoVITS / F5-TTS / Qwen3-TTS | CPU zum Testen, langsam | NVIDIA-GPU mit mindestens 6 GB, 16 GB RAM |
| MisoTTS 8B | Nicht mit 6 GB | 24-GB-GPU oder entfernter Host |
Den Ton in OBS bringen
OBS-Browserquelle (empfohlen)
Funktioniert mit integrierten Stimmen und deinem eigenen Server.
- Füge hinzu Browserquelle mit deinem
dock.htmlTTS-Link. - Aktiviere Audio über OBS steuern (Control audio via OBS).
- Klicke auf OK. TTS erscheint jetzt im OBS-Mixer.
SSN-Desktop-App
Die Desktop-App nutzt dieselben Linkeinstellungen. Der Ton kommt aber aus der App, nicht aus OBS. Erfasse ihn mit Desktop-Audio oder Audioeingabeaufnahme. Leite die App an ein virtuelles Kabel, um TTS von anderen Tönen zu trennen: Schritte zum Audio-Routing.
Weitere Details zur Desktop-App
App-Fenster sind bei Browserberechtigungen (CORS) weniger streng als Chrome. Die Bridge bleibt die sicherste Wahl für Server, die Browseranfragen ablehnen. Für integriertes Kokoro kann die App ihren eigenen ninjafy.tts Pfad, statt das Modell im Browser zu laden.
&speech=en-US ohne Anbieter) hängt von den in OBS verfügbaren Stimmen ab. Oft gibt es keine oder sie erzeugen keinen erfassbaren Ton. Verwende stattdessen einen der Anbieter oben.Direktvergleich
| Option | Einrichtung | Qualität | Privat | Funktioniert in OBS | Kosten |
|---|---|---|---|---|---|
| Integriertes Kokoro | Keine | 5/5 | Ja | Ja | Kostenlos |
| Integriertes Piper | Keine | 4/5 | Ja | Ja | Kostenlos |
| Integriertes Kitten | Keine | 3/5 | Ja | Ja | Kostenlos |
| Integriertes eSpeak | Keine | 2/5 | Ja | Ja | Kostenlos |
| Kokoro-FastAPI | Docker | 5/5 | Ja | Ja | Kostenlos |
| openedai-speech | Docker | 4/5 | Ja | Ja | Kostenlos |
| ElevenLabs | API-Schlüssel | 5/5 | Nein | Ja | Kostenpflichtige Tarife |
| System-Sprachausgabe | Keine | 2/5 | Ja | Benötigt Audio-Routing | Kostenlos |
Probleme beheben
| Problem | Versuche Folgendes |
|---|---|
| App-Test funktioniert, OBS bleibt stumm | OBS muss den Server selbst erreichen. Server auf einem anderen PC? Ersetze 127.0.0.1 durch seine lokale IP-Adresse. Prüfe Audio über OBS steuern (Control audio via OBS). Weiterhin blockiert? Starte die Bridge auf dem OBS-PC. |
| Nur der erste Buchstabe oder erste Wörter werden gelesen | Entfernen ttsquick aus dem OBS-Link (zum Beispiel &ttsquick=14) und aktualisiere. Entferne beim Testen auch typewriter= um Timing-Probleme auszuschließen. |
| Server antwortet nicht | Prüfe, ob Docker und der Container laufen. Öffne auf dem Server-PC http://127.0.0.1:8880/web/ (Kokoro-FastAPI oder Port deines Servers). Öffne vom OBS-PC aus http://SERVER_LAN_IP:8880/web/. Wenn das fehlschlägt, erreicht OBS es ebenfalls nicht. Prüfe die Server-Firewall. |
| „Blocked by CORS“, „private network“ oder „failed fetch“ | Der Browser hat die Anfrage blockiert, bevor sie den Server erreicht hat. Starte node scripts/local-tts-bridge.cjs auf dem OBS-PC und verwende http://127.0.0.1:8124/v1/audio/speech. Die gehostete Beta-Dock-Seite wird eher blockiert; Bridge oder lokales App-Fenster sind einfacher. |
| Falsche Stimme oder Stimme nicht gefunden | Kokoro-FastAPI: af_bella, af_sarah, am_adamoder einen Namen von seiner Webseite. openedai-speech: nova, echo, alloy. Manche Server unterscheiden Groß- und Kleinschreibung. |
| Ton wird abgespielt, aber OBS erfasst ihn nicht | Aktiviere Audio über OBS steuern (Control audio via OBS). Beobachte beim Test den OBS-Mixerpegel. Achte auf die Einstellung &ttsprovider=; System-TTS benötigt eventuell Desktop-Audio oder ein virtuelles Kabel. |
| Docker-Image nicht gefunden | Image-Tags ändern sich. Prüfe den aktuellen Tag auf Kokoro-FastAPI oder openedai-speech. |
Für Serverentwickler
So kommuniziert SSN mit einem eigenen Server. Das brauchst du nur, wenn du einen entwickelst oder Fehler darin suchst.
chat text -> SSN -> your endpoint (or the bridge) -> TTS server -> audio -> SSN plays it
Was SSN sendet
Mit ttsprovider=customtts, localtts oder openai, sendet SSN einen JSON-POST:
POST /v1/audio/speech
{
"model": "tts-1",
"input": "Chat message text",
"voice": "af_bella",
"response_format": "mp3",
"speed": 1.0
}
Ohne gesetzten API-Schlüssel sendet SSN keinen Authorization-Header.
Was SSN abspielen kann
| Antwort | Funktioniert? | Hinweise |
|---|---|---|
| Audiodatei | Ja | Am besten. audio/mpeg, audio/wav, audio/ogg, audio/aacoder ein beliebiges im Browser abspielbares Format. |
| JSON mit einer Audio-URL | Ja | Prüfungen url, audio_url, output_url, data.url sowie den ersten Eintrag in data[] . |
| JSON mit Base64-Audio | Ja | Prüfungen audio, audio_data, audioContent, b64_json, verschachtelte data Felder und Daten-URLs. |
| Rohes PCM | Nur mit Wrapper | Sende ihn als WAV-Datei oder als Base64-kodiertes WAV. |
Formate: mp3 ist klein und wird breit unterstützt. wav eignet sich für Server zum Stimmenklonen und Bridge-Tests. Verwende opus nur, wenn Server und Browser es beide unterstützen.
Noch kein Streaming. SSN wartet auf die vollständige Antwort und spielt sie dann ab. Halte Chatnachrichten kurz.
Linkeinstellungen für deinen eigenen Server
| Einstellung | Beispiel | Was es macht |
|---|---|---|
ttsprovider | customtts | Verwende deinen eigenen Server. (openai funktioniert ebenfalls.) |
openaiendpoint | http://localhost:8880/v1/audio/speech | Die Adresse deines Servers. Passe den Port an. |
speech | en-US | Aktiviert TTS auf Englisch. |
voiceopenai | af_bella | Stimmname. Hängt vom Server ab. |
openaimodel | tts-1-hd | Modellname. Standard: tts-1. |
openaiformat | mp3 | mp3, wav, opus oder flac. |
openaispeed | 1.0 | Sprechgeschwindigkeit (0.5–2.0). |
Ebenfalls akzeptiert: customttsendpoint, localttsendpoint, customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, localttsformat. Vorleseoptionen wie simpletts, skipmessages und ttsquick funktionieren mit jedem Anbieter: alle Linkeinstellungen.
Beispiellinks:
Kokoro-FastAPI: dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8880/v1/audio/speech&voiceopenai=af_bella&openaispeed=1.1 openedai-speech: dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova kokoro-web: dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:3000/api/v1/audio/speech&voiceopenai=af_bella