Poradnik lokalnego TTS AI

Odczytuj czat na własnym komputerze. Większości streamerów wystarczą wbudowane głosy.

Czy tego potrzebuję?

„Lokalny” oznacza jedną z dwóch rzeczy: głos wbudowany w SSN, działający w przeglądarce, albo samodzielnie uruchamiany serwer głosowy.

Chcę…Zrób to
Darmowe głosy bez instalacjiUżyj wbudowane głosy. Większość osób kończy tutaj.
Korzystać z już działającego serwera głosowegoPodłącz serwer.
Sklonowany głosZobacz klonowanie głosu.
Fish Audio w OBSZobacz Konfiguracja Fish Audio.
Płatne głosy w chmurzeZobacz Dokumentacja TTS.
Działa to z każdym czatem przechwytywanym przez SSN. Głos należy do odtwarzacza SSN, a nie do YouTube czy Twitcha. W przeciwieństwie do Systemowy TTS, lokalne głosy AI tworzą własne audio, które OBS może przechwycić. Porównaj dostawców i posłuchaj próbek.

Wbudowane głosy (bez instalacji)

Działają wewnątrz SSN w przeglądarce. Bez serwera, Dockera i klucza API.

GłosBrzmienieObciążenie komputeraWartość w linku
KokoroDoskonałaŚrednie. Szybciej z GPU.ttsprovider=kokoro
PiperBardzo dobraNiskie. Tylko CPU.ttsprovider=piper
KittenDobraBardzo niskie. Tylko CPU.ttsprovider=kitten
eSpeak-NGRobotycznyMinimalne. Tylko CPU.ttsprovider=espeak

Konfiguracja w 4 krokach

  1. Dodaj &speech=en-US&ttsprovider=kokoro do swojego dock.html link. (Lub piper, kitten, espeak.)
  2. Dodaj ten link w OBS jako Źródło przeglądarki. To strona, która wydaje dźwięk.
  3. We właściwościach włącz Steruj dźwiękiem przez OBS (Control audio via OBS).
  4. Wyślij krótką testową wiadomość na czacie, na przykład Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
Pierwsze użycie jest wolne. Kokoro i Piper najpierw pobierają modele (około 50–200 MB). Przy kolejnych uruchomieniach korzystają z nich ponownie, ale start nadal trwa chwilę. OBS przechowuje własną kopię, oddzielnie od Chrome.

Głosy, szybkość i inne języki: ustawienia dostawcy. Wolisz klikać? Użyj przewodnik konfiguracji.

Podłącz własny serwer TTS

Serwer daje więcej głosów, klonowanie lub jeden głos do wielu narzędzi. SSN komunikuje się z nim jak z Zgodne z OpenAI serwer głosowy. Klucz API nie jest potrzebny.

  1. Uruchom serwer. Kokoro-FastAPI jest najprostsze.
  2. W SSN otwórz listę dostawców TTS i wybierz Własny / lokalny punkt końcowy TTS.
  3. W sekcji Niestandardowy / lokalny punkt końcowy API, wpisz adres serwera, np. http://127.0.0.1:8880/v1/audio/speech.
  4. Pozostaw pole klucza API puste.
  5. Wybierz głos znany serwerowi: af_bella dla Kokoro, nova dla openedai-speech.
  6. Skopiuj link do OBS i wyślij testową wiadomość na czacie.
Mapa pól lokalnego TTS w Social Stream Ninja w formie zrzutu ekranu
Najważniejsze jest pole punktu końcowego.
OBS na innym komputerze? Przeczytaj Zasada localhost w pierwszej kolejności. Blokowane przez przeglądarkę? Użyj mostek.
SerwerModelGPUDyskPort
Kokoro-FastAPI (zalecane)Kokoro 82MOpcjonalne~2 GB8880
openedai-speech (Piper)PiperTylko CPU<1 GB8000
kokoro-webKokoro 82MOpcjonalne~2 GB3000

Te wymagają Docker Desktop zainstalowanego i uruchomionego. Do użytku osobistego jest bezpłatny.

Zasada localhost

To najczęstszy błąd.

localhost i 127.0.0.1 zawsze oznaczają „ten sam komputer”. Jeśli OBS działa na jednym komputerze, a serwer głosowy na innym, 127.0.0.1 w OBS wskazuje komputer z OBS.
Diagram pokazujący, że localhost oznacza ten sam komputer, a inny komputer wymaga adresu IP LAN
Twoja konfiguracjaUżyj tego adresu
OBS i serwer na tym samym komputerzehttp://127.0.0.1:8880/v1/audio/speech
Serwer na innym komputerze w domuhttp://192.168.x.x:8880/v1/audio/speechlokalnym IP tego komputera
Test w aplikacji SSN działa, OBS milczyOBS potrzebuje adresu dostępnego z jego komputera. Test w aplikacji nie dowodzi, że OBS może połączyć się z serwerem.

Sprawdź też, czy zapora pozwala na port i Docker go udostępnił (-p 8880:8880).

Kokoro-FastAPI

Kokoro-FastAPI uruchamia Kokoro jako lokalny serwer. Działa na CPU; GPU nie jest wymagane.

  1. Otwórz terminal (Wiersz polecenia, PowerShell lub Terminal) i wykonaj jedno z poniższych poleceń:
    docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2

    GPU NVIDIA (szybciej):

    docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
    Przy pierwszym uruchomieniu jednorazowo pobierane jest około 1,5–2 GB.
  2. Otwórz http://localhost:8880/web/. Powinna pojawić się strona do testowania głosów (ponad 67 dostępnych).
  3. Użyj tego linku (zmień adres, jeśli serwer działa na innym komputerze):
    dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella
Użyj nazw głosów Kokoro, np. af_bella, af_sarah, am_adam lub bf_emma. Nazwy OpenAI takie jak nova lub alloy może nie działać.

Uruchamiaj automatycznie z Dockerem:

docker run -d --restart unless-stopped -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2

openedai-speech (Piper i XTTS-v2)

Projekt zarchiwizowany. Projekt openedai-speech zarchiwizowano w styczniu 2026 r. i sam określa się jako w większości przestarzały. Nadal działa jako przykład, ale nie otrzymuje aktualizacji. Używaj go lokalnie. Nigdy nie udostępniaj jego portu w internecie — nie ma logowania.

Opcja A: lekki serwer Piper (CPU)

Poniżej 1 GB. Bez klonowania głosu.

docker run -d --restart unless-stopped -p 8000:8000 ghcr.io/matatonic/openedai-speech-min

Głosy: 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
Uruchamianie ze źródeł w Windows (błędy HTTP 500)

Dodaj z jego środowiska wirtualnego folder Scripts folder do PATH najpierw. W przeciwnym razie nie znajdzie piper.exe lub 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

Opcja B: klonowanie głosu z XTTS-v2 (GPU)

Wymaga pełnego serwera, nie openedai-speech-min. Zaplanuj około 4 GB pamięci GPU. CPU działa, ale wolno.

Konfiguracja XTTS-v2 w 4 krokach
  1. Pobierz i uruchom serwer:
    git clone https://github.com/matatonic/openedai-speech.git
    cd openedai-speech
    Copy-Item sample.env speech.env
    docker compose up -d
    W macOS lub Linuksie użyj cp sample.env speech.env. Docker wymaga dostępu do GPU. Model pobiera się przy pierwszym użyciu.
  2. Przygotuj czystą próbkę głosu, na którego użycie masz zgodę. Mono, 22050 Hz, 6–30 sekund:
    ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
  3. W sekcji config/voice_to_speaker.yaml, dodaj pod istniejącym tts-1-hd sekcji (zachowaj istniejące głosy):
    tts-1-hd:
      me:
        model: xtts
        speaker: voices/me.wav
        language: en
    Zmień me na nazwę, którą będzie wysyłać SSN.
  4. Uruchom docker compose restart, potem użyj:
    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 jest wymagane. Bez tego SSN wysyła tts-1a serwer użyje zamiast tego Piper. voiceopenai musi odpowiadać nazwie głosu w pliku YAML.

Blokowane przez przeglądarkę? Uruchom mostek i zmień tylko openaiendpoint na http://127.0.0.1:8124/v1/audio/speech.

Lokalny mostek TTS

Małe narzędzie SSN. Przyjmuje żądanie SSN, przekazuje do serwera głosowego i zwraca audio w formie akceptowanej przez przeglądarki. Wymaga Node.js.

Najprostsza zasada: uruchom mostek na komputerze z OBS. Wtedy OBS zawsze używa http://127.0.0.1:8124/v1/audio/speechnawet jeśli serwer głosowy jest na innym komputerze.
Diagram pokazujący wywołanie lokalnego mostu przez OBS i serwera TTS przez most
  1. Wskaż mostkowi lokalizację serwera. PowerShell:
    $env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech"
    Serwer na innym komputerze? Użyj jego lokalnego adresu IP, na przykład http://192.168.x.x:8880/v1/audio/speech.
  2. W folderze SSN uruchom node scripts/local-tts-bridge.cjs. Pozostaw uruchomione.
  3. Skieruj SSN do mostka:
    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, w jednym wierszu: SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" node scripts/local-tts-bridge.cjs. Wewnątrz local-tts-bridge folder, node server.cjs robi to samo. Zmień port za pomocą SSN_TTS_BRIDGE_PORT=8125. Wszystkie opcje: README mostu.

Tryb GPT-SoVITS

GPT-SoVITS używa własnej /tts formatu. Mostek tłumaczy dla niego żądania.

$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
Tryb serwera F5-TTS

Niektóre nakładki F5-TTS używają /synthesize_speech/?text=...&voice=.... Mostek tłumaczy dla nich.

$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

Klonowanie głosu

Klonowanie nie jest ustawieniem SSN. To funkcja niektórych serwerów głosowych. SSN wysyła tekst czatu, a serwer wybiera sklonowany głos.

  1. Nagraj czysty klip z jednym mówcą, zwykle 3–30 sekund, z niewielkim szumem tła.
  2. Niektóre serwery potrzebują również dokładnej treści wypowiedzi z klipu.
  3. Serwer tworzy profil głosu na podstawie klipu.
  4. SSN wysyła tekst czatu z ttsprovider=customtts.
  5. Serwer zwraca audio (zwykle WAV lub MP3), które SSN odtwarza.
Klonuj wyłącznie własny głos lub głosy, na których użycie masz zgodę.
XTTS-v2 jest domyślnie przeznaczony do użytku niekomercyjnego. Jego Coqui Public Model License zezwala wyłącznie na użytek niekomercyjny. Monetyzowany stream może nie spełniać tego warunku. Najpierw sprawdź licencję lub uzyskaj zgodę.

Przy pamięci GPU do 6 GB zacznij od małych modeli na serwerach zgodnych z OpenAI. Większe modele również działają, jeśli są hostowane gdzie indziej.

OpcjaKlonowanie na podstawieMieści się na GPU z 6 GB?Jak połączyć
XTTS-v2 / openedai-speechKrótki klip WAVTak, około 4 GBBezpośrednio, /v1/audio/speech. Projekt jest zarchiwizowany.
chatterbox-tts-api / Chatterbox-TTS-ServerPróbka referencyjnaPrawdopodobnie z Turbo lub małymi fragmentamiBezpośrednio lub przez mostek. GPU działa płynniej niż CPU. Konfiguracja zależy od forka.
Qwen3-TTS (0,6B / 1,7B)Klip 3-sekundowyPrawdopodobnie (0.6B Base)Wymaga warstwy zgodnej z OpenAI.
GPT-SoVITS5 sekund; lepiej z 1 minutąPrawdopodobnie z fp16 / lekką instalacjąMost --mode gptsovits.
F5-TTSKlip wraz z transkrypcjąByć możeWrapper lub mostek --mode f5 z F5-TTS_server.
MisoTTS 8BWzorcowe audioNie; zalecane 24 GBTylko hosting zdalny. Repozytorium nie zawiera lokalnego punktu końcowego REST.

Wbudowane Kokoro i Kokoro-FastAPI nie klonują głosów.

Co przetestowano z SSN

Sprawdzono z obiema stronami: dock.html i featured.html:

  • openedai-speech (Piper): rzeczywista mowa na CPU, bezpośrednio i przez mostek.
  • Chatterbox-TTS-Server: rzeczywista mowa na CPU z Emily.wav, bezpośrednio i przez most.
  • chatterbox-tts-api: format żądania przetestowany bezpośrednio i przez mostek.
  • GPT-SoVITS i F5-TTS_server: tylko przez tryby mostka.
  • Oficjalne F5-TTS i Qwen3-TTS: wymagają najpierw wrappera (tylko CLI, Gradio lub biblioteka).

Jakiego komputera potrzebuję?

Orientacyjne wartości, bez gwarancji. Rozmiar modelu, długość tekstu i inne aplikacje wpływają na zużycie pamięci.

OpcjaMinimumKomfortowo
Systemowy TTS / eSpeakDowolny komputerDowolny komputer
Wbudowane KittenSłabszy CPU, 4 GB RAMCPU laptopa, 8 GB RAM
Wbudowane PiperNowoczesny CPU, 4–8 GB RAMNowoczesny CPU, 8 GB RAM
Wbudowane KokoroNowoczesny CPU, 8 GB RAMGPU z WebGPU lub szybki CPU, 8–16 GB RAM
Kokoro-FastAPICPU, 8 GB RAMOpcjonalne GPU NVIDIA, 8–16 GB RAM
openedai-speech PiperCPU, 4–8 GB RAMCPU, 8 GB RAM
openedai-speech XTTSGPU NVIDIA z około 4 GB, 8–16 GB RAMGPU NVIDIA 6 GB+, 16 GB RAM
ChatterboxCPU w niektórych wersjach, wolnoGPU NVIDIA 6 GB+, 16 GB RAM
GPT-SoVITS / F5-TTS / Qwen3-TTSCPU do testów, wolnoGPU NVIDIA 6 GB+, 16 GB RAM
MisoTTS 8BNie przy 6 GBGPU 24 GB lub zdalny host

Przekaż dźwięk do OBS

Źródło przeglądarkowe OBS (zalecane)

Działa z wbudowanymi głosami i własnym serwerem.

  1. Dodaj Źródło przeglądarki z Twoim dock.html link TTS.
  2. Włącz Steruj dźwiękiem przez OBS (Control audio via OBS).
  3. Kliknij OK. TTS pojawia się teraz w mikserze OBS.

Aplikacja komputerowa SSN

Aplikacja komputerowa używa tych samych ustawień linku. Dźwięk pochodzi jednak z aplikacji, a nie z OBS. Przechwyć go za pomocą Dźwięk pulpitu lub Przechwytywanie wejścia audio. Aby oddzielić TTS od innych dźwięków, skieruj aplikację do wirtualnego kabla: instrukcje routingu audio.

Nie myl testu w aplikacji z testem w OBS. Przycisk Test w aplikacji sprawdza połączenie z aplikacji. Przy linku w OBS to OBS musi połączyć się z serwerem i odtworzyć dźwięk.
Więcej informacji o aplikacji komputerowej

Okna aplikacji są mniej restrykcyjne w uprawnieniach przeglądarki (CORS) niż Chrome. Mostek pozostaje najpewniejszą opcją dla serwerów odrzucających żądania przeglądarek. Dla wbudowanego Kokoro aplikacja może użyć własnej ninjafy.tts ścieżki zamiast ładowania modelu w przeglądarce.

Systemowy TTS (&speech=en-US bez dostawcy) zależy od głosów dostępnych w OBS. Często nie ma żadnego lub nie wytwarzają dźwięku możliwego do przechwycenia. Użyj zamiast tego jednego z dostawców powyżej.

Porównanie obok siebie

OpcjaKonfiguracjaJakośćPrywatnyDziała w OBSKoszt
Wbudowane KokoroBrak5/5TakTakBezpłatne
Wbudowane PiperBrak4/5TakTakBezpłatne
Wbudowane KittenBrak3/5TakTakBezpłatne
Wbudowane eSpeakBrak2/5TakTakBezpłatne
Kokoro-FastAPIDocker5/5TakTakBezpłatne
openedai-speechDocker4/5TakTakBezpłatne
ElevenLabsklucz API5/5NieTakPłatne plany
Systemowy TTSBrak2/5TakWymaga routingu audioBezpłatne

Rozwiązywanie problemów

Lista kontrolna rozwiązywania problemów z lokalnym TTS w formie zrzutu ekranu
Działa w jednym miejscu, ale nie w innym? Sprawdź po kolei: komputer, adres, głos, uprawnienia przeglądarki i dźwięk OBS.
ProblemSpróbuj tego
Test w aplikacji działa, OBS milczyOBS musi samodzielnie połączyć się z serwerem. Serwer jest na innym komputerze? Zastąp 127.0.0.1 jego lokalnym adresem IP. Sprawdź Steruj dźwiękiem przez OBS (Control audio via OBS). Nadal blokowane? Uruchom mostek na komputerze OBS.
Czytana jest tylko pierwsza litera lub słowaUsuń ttsquick z linku OBS (na przykład &ttsquick=14) i odśwież. Podczas testu usuń też typewriter= aby wykluczyć problemy z czasem uruchomienia.
Serwer nie odpowiadaSprawdź, czy Docker i kontener działają. Na komputerze z serwerem otwórz http://127.0.0.1:8880/web/ (Kokoro-FastAPI lub port serwera). Z komputera OBS otwórz http://SERVER_LAN_IP:8880/web/. Jeśli to nie działa, OBS też nie uzyska dostępu. Sprawdź zaporę serwera.
„Blocked by CORS”, „private network” lub „failed fetch”Przeglądarka zablokowała żądanie, zanim dotarło do serwera. Uruchom node scripts/local-tts-bridge.cjs na komputerze z OBS i użyj http://127.0.0.1:8124/v1/audio/speech. Hostowana strona Docka beta jest częściej blokowana; mostek lub lokalne okno aplikacji są łatwiejsze.
Niewłaściwy głos lub nie znaleziono głosuKokoro-FastAPI: af_bella, af_sarah, am_adamlub jeden z jego strony. openedai-speech: nova, echo, alloy. Niektóre serwery rozróżniają wielkość liter.
Dźwięk jest odtwarzany, ale OBS go nie przechwytujeWłącz Steruj dźwiękiem przez OBS (Control audio via OBS). Obserwuj wskaźnik miksera OBS podczas testu. Upewnij się, że ustawiono &ttsprovider=; systemowy TTS może wymagać dźwięku pulpitu lub wirtualnego kabla.
Nie znaleziono obrazu DockerTagi obrazów zmieniają się. Sprawdź aktualny tag na Kokoro-FastAPI lub openedai-speech.

Dla twórców serwerów

Tak SSN komunikuje się z własnym serwerem. Potrzebujesz tego tylko podczas jego tworzenia lub diagnozowania.

chat text -> SSN -> your endpoint (or the bridge) -> TTS server -> audio -> SSN plays it
Co SSN wysyła

Z ttsprovider=customtts, localtts lub openai, SSN wysyła żądanie POST w JSON:

POST /v1/audio/speech
{
  "model": "tts-1",
  "input": "Chat message text",
  "voice": "af_bella",
  "response_format": "mp3",
  "speed": 1.0
}

Bez ustawionego klucza API SSN nie wysyła nagłówka Authorization.

Co SSN może odtworzyć
OdpowiedźDziała?Uwagi
Plik audioTakNajlepsza. audio/mpeg, audio/wav, audio/ogg, audio/aaclub dowolny typ odtwarzany w przeglądarce.
JSON z adresem URL audioTakSprawdzenia url, audio_url, output_url, data.url, a pierwszy data[] element.
JSON z dźwiękiem base64TakSprawdzenia audio, audio_data, audioContent, b64_json, zagnieżdżone data pola i adresy data URL.
Surowe PCMTylko z warstwą pośredniąWyślij ją jako plik WAV lub WAV zakodowany w base64.

Formaty: mp3 jest mały i szeroko obsługiwany. wav nadaje się do serwerów klonowania głosu i testowania mostka. Użyj opus tylko jeśli obsługują to zarówno serwer, jak i przeglądarka.

Na razie bez strumieniowania. SSN czeka na całą odpowiedź, a następnie ją odtwarza. Utrzymuj krótkie wiadomości czatu.

Ustawienia linku dla własnego serwera
UstawieniePrzykładCo robi
ttsprovidercustomttsUżyj własnego serwera. (openai również działa.)
openaiendpointhttp://localhost:8880/v1/audio/speechAdres serwera. Dopasuj port.
speechen-USWłącza TTS po angielsku.
voiceopenaiaf_bellaNazwa głosu. Zależy od serwera.
openaimodeltts-1-hdNazwa modelu. Domyślnie: tts-1.
openaiformatmp3mp3, wav, opus lub flac.
openaispeed1.0Szybkość mowy (0.5–2.0).

Akceptowane również: customttsendpoint, localttsendpoint, customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, localttsformat. Opcje czytania, np. simpletts, skipmessages i ttsquick działają z każdym dostawcą: wszystkie ustawienia linku.

Przykładowe linki:

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