Poradnik lokalnego TTS AI

Odczytuj czat na żywo lokalnymi głosami AI. Zacznij od opcji bez instalacji, a lokalnego serwera użyj tylko w razie potrzeby.

Polski

Przegląd

Działa z przechwyconym tekstem czatu niezależnie od platformy. Dostawca głosu należy do odtwarzacza SSN, a nie do YouTube, Twitcha, TikToka ani innej witryny czatu. Ci lokalni dostawcy AI różnią się od Systemowy TTS: generują dźwięk strony zamiast polegać na udostępnianiu głosów systemu operacyjnego przez OBS. Zobacz krótki przewodnik konfiguracji OBS dla dostępności głosów w porównaniu z przechwytywaniem dźwięku. Porównaj dostawców, posłuchaj próbek i zobacz ustawienia.

Social Stream Ninja może odczytywać wiadomości czatu na głos za pomocą lokalnego AI do zamiany tekstu na mowę. „Lokalne” może oznaczać dwie rzeczy: głos działa wewnątrz przeglądarki lub uruchamiasz mały serwer TTS na własnym komputerze.

Istnieją dwa podejścia:

Ścieżka 2 — samodzielnie hostowany serwer Wymagany Docker

Uruchom lokalny serwer TTS na swoim komputerze i skieruj na niego Social Stream Ninja. Daje więcej głosów, klonowanie głosu i sterowanie po stronie serwera.

  • Kokoro-FastAPI
  • openedai-speech (Piper)
  • kokoro-web

Używa wbudowanej w Social Stream obsługi: Punkt końcowy zgodny z OpenAI .

Zacznij od ścieżki 1. Jeśli chcesz po prostu uruchomić TTS w OBS, najpierw wypróbuj wbudowane Kokoro lub Kitten. Nie potrzebują Dockera, serwera ani klucza API. Użyj samodzielnie hostowanego serwera tylko wtedy, gdy potrzebujesz konkretnego głosu serwera, klonowania głosu lub innego modelu.

Szybka konfiguracja

To najkrótsza droga dla większości streamerów:

1
Najpierw użyj wbudowanego dostawcy. Dodaj &speech=en-US&ttsprovider=kokoro lub &speech=en-US&ttsprovider=kitten do swojego dock.html URL.
2
Wstaw ten URL do OBS jako źródło przeglądarkowe. Źródło przeglądarkowe OBS to strona, która będzie generować dźwięk.
3
Włącz przechwytywanie dźwięku OBS. We właściwościach źródła przeglądarkowego włącz Steruj dźwiękiem przez OBS.
4
Wyślij jedną krótką wiadomość testową czatu. Użyj czegoś prostego, np. Testing local TTS. Przy Kokoro lub Piper poczekaj na pierwsze pobranie modeli.
5
Dopiero wtedy wypróbuj samodzielnie hostowany serwer. Jeśli używasz Kokoro-FastAPI, openedai-speech lub innego serwera Docker, przeczytaj poniższą zasadę localhost przed skopiowaniem URL do OBS.

Zasada localhost / 127.0.0.1

To najczęstszy błąd przy lokalnym TTS.

localhost i 127.0.0.1 zawsze oznaczają „ten sam komputer”. Jeśli OBS jest na jednym komputerze, a Kokoro na innym, 127.0.0.1 wewnątrz URL OBS wskazuje komputer OBS, a nie komputer Kokoro.
Diagram pokazujący, że localhost oznacza ten sam komputer, a inny komputer wymaga adresu IP LAN
Użyj 127.0.0.1 tylko wtedy, gdy serwer TTS jest na tym samym komputerze co strona odtwarzająca dźwięk. Jeśli serwer jest na innym komputerze, użyj jego adresu IP LAN.
Twoja konfiguracjaPunkt końcowy do użycia
OBS i Kokoro działają na tym samym komputerzehttp://127.0.0.1:8880/v1/audio/speech
Kokoro działa na innym komputerze w sieci domowejhttp://192.168.x.x:8880/v1/audio/speech, używając adresu IP LAN komputera Kokoro
Przycisk testu aplikacji komputerowej SSN działa, ale OBS milczyOBS nadal potrzebuje własnego działającego punktu końcowego. Test aplikacji nie dowodzi, że OBS może dotrzeć do serwera.

W Linuksie, macOS i Windows upewnij się też, że zapora zezwala na port, a Docker opublikował go przez -p 8880:8880.

Gdzie kliknąć w SSN

W oknie rozszerzenia otwórz wybór dostawcy TTS i wybierz Własny / lokalny punkt końcowy TTS. Pokazuje to pola lokalnego punktu końcowego zgodnego z OpenAI i łącze do tego przewodnika.

Mapa pól lokalnego TTS w Social Stream Ninja w formie zrzutu ekranu
Najważniejsze jest pole punktu końcowego. Dla lokalnego serwera klucz API zwykle może pozostać pusty. Wybierz nazwę głosu faktycznie obsługiwanego przez serwer.
O zrzutach ekranu: mapa pól SSN powyżej pokazuje pola lokalnego punktu końcowego. Interfejsy serwerów innych firm zmieniają się między wersjami projektu, więc aktualne zrzuty ekranu i szczegóły interfejsu są podlinkowane w repozytorium każdego projektu przy odpowiednim kroku konfiguracji.

Przebieg z własnym hostingiem

SSN traktuje lokalny/samodzielnie hostowany serwer TTS jak punkt końcowy mowy zgodny z OpenAI. Podstawowy przebieg:

chat text -> SSN TTS request -> local endpoint or SSN bridge -> TTS server -> audio response -> SSN playback

Struktura żądania

Dla ttsprovider=customtts, localtts lub openai, SSN wysyła żądanie POST JSON do skonfigurowanego punktu końcowego:

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

CORS, hostowane strony i most

CORS to sprawdzanie uprawnień przeglądarki. Mówiąc prosto: serwer TTS musi powiedzieć przeglądarce „tak, ta strona może prosić mnie o dźwięk”. Bez tego uprawnienia żądanie może zostać zablokowane, zanim Kokoro lub inny serwer TTS je zobaczy.

Jeśli serwer nie zezwala na żądania przeglądarki, uruchom Lokalny most TTS SSN i skieruj SSN na http://127.0.0.1:8124/v1/audio/speech. W przypadku OBS najłatwiej uruchomić most na tym samym komputerze co OBS.

Obsługiwane odpowiedzi audio

Odpowiedź Obsługa w SSN Uwagi
Binarny dźwięk Tak Najlepsza opcja. Zwracaj audio/mpeg, audio/wav, audio/ogg, audio/aac, lub inny typ dźwięku odtwarzany przez przeglądarkę.
JSON z adresem URL audio Tak SSN sprawdza url, audio_url, output_url, zagnieżdżone data.url, a pierwszy data[] element.
JSON z dźwiękiem base64 Tak SSN sprawdza audio, audio_data, audioContent, b64_json, zagnieżdżone data pola i adresy data URL.
Surowe PCM Tylko z warstwą pośrednią Zwracaj PCM jako plik WAV lub WAV base64. Element audio przeglądarki nie potrafi niezawodnie odtwarzać bezpośrednio surowych bajtów PCM.
Zalecane formaty: użyj mp3 dla małych plików i szerokiej obsługi przeglądarek, wav dla lokalnych serwerów klonowania i testowania mostu oraz opus tylko gdy serwer i przeglądarka to obsługują.

Strumieniowanie dźwięku

SSN obecnie nie odtwarza w miarę pobierania dla własnych/lokalnych punktów końcowych TTS. Czeka na blob odpowiedzi lub dane audio JSON, a potem odtwarza. Niektóre serwery udostępniają punkty końcowe strumieniowania, ale obecna ścieżka SSN zgodna z OpenAI buforuje przed odtworzeniem.

Praktyczny wniosek: używaj krótkich fragmentów TTS czatu. Obsługa strumieniowania wymagałaby osobnej ścieżki odtwarzania z fragmentami WAV/MP3, MediaSource, WebCodecs lub mikserem po stronie serwera.

Ścieżka 1 — wbudowane TTS (bez konfiguracji)

Te silniki są dołączone do Social Stream Ninja i nie wymagają instalacji. Działają w przeglądarce przy użyciu WebAssembly (WASM) lub ONNX Runtime.

Dostawca Jakość Użycie CPU GPU/WebGPU Parametr URL
Kokoro TTS ⭐⭐⭐⭐⭐ Doskonałe Średnie Szybsze z GPU ?ttsprovider=kokoro
Piper TTS ⭐⭐⭐⭐ Bardzo dobre Niskie Tylko CPU ?ttsprovider=piper
Kitten TTS ⭐⭐⭐ Dobre Bardzo niskie Tylko CPU ?ttsprovider=kitten
eSpeak-NG ⭐⭐ Robotyczne Minimalne Tylko CPU ?ttsprovider=espeak

Jak włączyć

Dodaj &ttsprovider= i &speech= do swojego Social Stream dock.html URL:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro

Opcje Kokoro TTS

SSN oferuje obecnie 28 angielskich, trzy hiszpańskie i trzy brazylijskie portugalskie głosy Kokoro. Wskaż głos parametrem &voicekokoro=:

English female: af_bella, af_sarah, af_nicole, af_sky English male: am_adam, am_michael British female: bf_emma, bf_isabella British male: bm_george, bm_lewis
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro&voicekokoro=af_bella&kokorospeed=1.1
Uwaga o języku: Wybierz głos Kokoro odpowiadający żądanemu językowi. Zmiana samego parametru języka nie zmienia wybranego głosu.

Przykład hiszpański:

dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=kokoro&voicekokoro=ef_dora

Przykład portugalski:

dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=kokoro&voicekokoro=pf_dora

Opcje Piper TTS

Wskaż model głosu przez &pipervoice=:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=piper&pipervoice=en_US-hfc_female-medium

Dostępne są portugalskie i hiszpańskie głosy Piper:

Brazilian Portuguese: pt_BR-faber-medium, pt_BR-edresson-low
Spanish: es_ES-davefx-medium, es_MX-ald-medium
dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=piper&pipervoice=pt_BR-faber-medium
dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=piper&pipervoice=es_ES-davefx-medium

Opcje Kitten TTS

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kitten&kittenvoice=expr-voice-4-f

Opcje eSpeak-NG

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=espeak&espeakvoice=en&espeakspeed=175
dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=espeak&espeakvoice=pt-br&espeakspeed=145
dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=espeak&espeakvoice=es&espeakspeed=145
Pierwsze ładowanie: Kokoro i Piper muszą pobrać pliki modeli przy pierwszym użyciu (~50–200 MB). Dzieje się to automatycznie w tle. Późniejsze ładowania mogą używać modeli z pamięci podręcznej, ale inicjalizacja nadal trwa. OBS ma osobną pamięć podręczną od Chrome/Edge.
Przechwytywanie OBS: Wszyscy wbudowani dostawcy TTS odtwarzają dźwięk bezpośrednio przez przeglądarkę. W OBS dodaj dock.html jako źródło przeglądarkowe i włącz „Control audio via OBS”— wirtualne kable nie są potrzebne. Zobacz sekcję OBS poniżej.

Uwagi dotyczące przeglądarki i aplikacji komputerowej

Rozszerzenie Chrome, źródło przeglądarkowe OBS i samodzielna aplikacja komputerowa Social Stream Ninja używają tych samych dock.html parametrów URL dla TTS. Ważna różnica polega na tym, gdzie powstaje dźwięk.

Interfejs Działanie lokalnego TTS Przechwytywanie dźwięku
Rozszerzenie Chrome / źródło przeglądarkowe OBS Pobieranie w przeglądarce wymaga CORS z lokalnego serwera, chyba że używasz mostu SSN. Użyj źródła przeglądarkowego OBS z „Control audio via OBS”.
Samodzielna aplikacja komputerowa Używa tych samych ustawień dostawcy. Lokalne okna plików aplikacji mają mniej ograniczeń CORS, ale most pozostaje najbezpieczniejszą ścieżką dla serwerów odrzucających żądania przeglądarkowe. Przechwytuj dźwięk pulpitu/aplikacji lub skieruj aplikację do wirtualnego kabla audio.
Wbudowane Kokoro w aplikacji komputerowej Aplikacja może używać swojej lokalnej ścieżki ninjafy.tts dla Kokoro zamiast polegać wyłącznie na ładowaniu modelu w przeglądarce. Dźwięk pochodzi z aplikacji, więc użyj przechwytywania dźwięku pulpitu/aplikacji.
Nie myl testu aplikacji z OBS. Jeśli naciskasz Test wewnątrz aplikacji SSN, test jest wykonywany z aplikacji. Jeśli kopiujesz dock.html URL do OBS, to OBS musi dotrzeć do serwera TTS i odtworzyć dźwięk.

Ścieżka 2 — samodzielnie hostowany serwer TTS

Jeśli chcesz więcej głosów, klonowania głosu lub dedykowanego serwera używanego przez różne narzędzia, możesz uruchomić lokalny serwer TTS. Social Stream Ninja łączy się z nim dzięki wbudowanej obsłudze: Punkt końcowy TTS zgodny z OpenAI — klucz API nie jest potrzebny dla lokalnych serwerów.

Wymagania: Docker Desktop musi być zainstalowane i uruchomione. Docker jest bezpłatny do użytku osobistego.

Trzy zalecane opcje:

Serwer Model GPU Dysk Domyślny port
Kokoro-FastAPI Zalecane Kokoro 82M Opcjonalne ~2 GB 8880
openedai-speech (Piper) Lekki Piper TTS Tylko CPU <1 GB 8000
kokoro-web Kokoro 82M Opcjonalne ~2 GB 3000

Który pakiet pasuje?

Pakiet Główna zaleta Kompromis
Wbudowane Kokoro Najlepszy pierwszy wybór: bez serwera, wysoka jakość, prywatność, działa w przeglądarce i aplikacji komputerowej. Bez klonowania głosu.
Kokoro-FastAPI Serwer zgodny z OpenAI, łatwa konfiguracja Docker, CPU lub GPU, wiele głosów Kokoro. Bez rzeczywistego klonowania głosu; mieszanie głosów i funkcje własnego głosu zależą od wersji serwera.
openedai-speech Lekki punkt końcowy zgodny z OpenAI; Piper dobrze działa na CPU, a XTTS dodaje klonowanie z docelowym zapotrzebowaniem około 4 GB VRAM. Repozytorium podaje, że projekt jest w większości przestarzały, więc traktuj go jako przydatny, ale nie przyszłościowy.
Serwery Chatterbox Klonowanie głosu, opcje interfejsu internetowego, API zgodne z OpenAI, narzędzia do długiego tekstu. Obsługa CUDA/GPU działa sprawniej niż CPU w niektórych wersjach; konfiguracja zależy od forka serwera.
GPT-SoVITS Dobre klonowanie/sterowanie z krótkimi próbkami i obsługą transkrypcji. Domyślnie niezgodne z OpenAI; użyj trybu mostu SSN.
F5-TTS Naturalne klonowanie zero-shot z przykładowym WAV i transkrypcją. Oficjalny projekt nie jest prostym punktem końcowym OpenAI; użyj warstwy pośredniej lub trybu mostu.
Qwen3-TTS Nowoczesne funkcje klonowania i projektowania głosu, w tym mniejsze modele 0.6B/1.7B. Przede wszystkim biblioteka/demo; potrzebuje warstwy pośredniej dla SSN.
MisoTTS Zaawansowane generowanie mowy na podstawie promptów. Nie nadaje się do lokalnego użycia z 6 GB VRAM; w razie potrzeby użyj zdalnego/własnego hostingu.

Jak działa klonowanie głosu

Klonowanie głosu nie jest osobnym trybem SSN. To funkcja wewnątrz niektórych lokalnych serwerów TTS. SSN wysyła tekst czatu do lokalnego punktu końcowego; serwer wybiera sklonowany głos z zapisanego referencyjnego pliku audio, profilu głosu lub konfiguracji mostu.

Typowy przebieg

  1. Nagraj czysty klip referencyjny, zwykle od 3 do 30 sekund jednego mówcy z niewielkim szumem tła.
  2. Niektóre silniki wymagają też dokładnej transkrypcji tego klipu referencyjnego.
  3. Lokalny serwer przekształca próbkę referencyjną w prompt mówcy, embedding lub profil głosu.
  4. SSN wysyła tekst czatu na żywo do punktu końcowego za pomocą ttsprovider=customtts.
  5. Serwer zwraca plik audio do odtworzenia, zwykle WAV lub MP3, a SSN odtwarza go w doku/źródle przeglądarkowym.
Używaj tylko głosów za zgodą. Klonowanie głosu może brzmieć jak prawdziwa osoba, więc używaj tylko głosów własnych, takich, na które masz zgodę, lub wyraźnie licencjonowanych do tego celu.
XTTS-v2 jest domyślnie przeznaczony do użytku niekomercyjnego. Coqui Public Model License zezwala wyłącznie na niekomercyjne użycie modelu i jego wyników. Transmisja z monetyzacją może nie spełniać warunków, więc sprawdź licencję lub uzyskaj osobną zgodę przed komercyjnym użyciem XTTS-v2.

Przy 6 GB VRAM lub mniej najpierw wybieraj małe modele klonowania zero-shot i serwery zgodne z OpenAI. Większe modele nadal mogą działać przez ten sam punkt końcowy SSN, jeśli użytkownik hostuje je gdzie indziej.

Opcja Klonowanie głosu Mieści się w 6 GB VRAM Ścieżka API dla SSN
Qwen3-TTS 0.6B Base 3-sekundowy dźwięk referencyjny Prawdopodobnie Użyj warstwy zgodnej z OpenAI, a następnie ttsprovider=customtts
XTTS-v2 / openedai-speech Krótkie głosy referencyjne WAV Tak, około 4 GB według openedai-speech /v1/audio/speech
Chatterbox Turbo / Server Klonowanie z dźwięku referencyjnego Prawdopodobnie przy Turbo / małych fragmentach Wersje serwera zgodne z OpenAI lub most
GPT-SoVITS 5 sekund zero-shot, 1 minuta few-shot Prawdopodobnie przy fp16 / lekkiej instalacji Użyj scripts/local-tts-bridge.cjs --mode gptsovits
F5-TTS Przykładowy WAV + transkrypcja Być może; zależy od wersji i wokodera Użyj warstwy zgodnej z OpenAI lub --mode f5 dla warstw serwerów F5-TTS
MisoTTS 8B Kontekst audio podany w prompcie Nie; projekt zaleca 24 GB VRAM Tylko zdalny/własny punkt końcowy
Najlepsza docelowa struktura dla SSN: przyjmują POST /v1/audio/speech z { model, input, voice, response_format, speed } i zwracają plik audio do odtworzenia. Obejmuje to OpenAI, Coqui/XTTS, warstwy Kokoro, warstwy Qwen i większość usług proxy.

Wymagania sprzętowe

To praktyczne punkty wyjścia, a nie twarde gwarancje. Wersja modelu, kwantyzacja, długość tekstu, obraz Docker i aplikacje w tle mogą zmieniać użycie pamięci.

Opcja Minimalny praktyczny komputer Dobry wybór docelowy Uwagi
Systemowy TTS / eSpeak Dowolny nowoczesny komputer Dowolny komputer Szybkie, niska jakość, bez klonowania.
Wbudowane Kitten Słabszy CPU, 4 GB RAM Nowoczesny procesor laptopa, 8 GB RAM Mały model ONNX, szybkie uruchamianie.
Wbudowane Piper Nowoczesny CPU, 4–8 GB RAM Nowoczesny CPU, 8 GB RAM Dobra opcja głosu neuronowego zużywająca mało zasobów.
Wbudowane Kokoro Nowoczesny CPU, 8 GB RAM GPU obsługujące WebGPU lub szybki CPU, 8–16 GB RAM Najlepsza jakość bez konfiguracji. Pierwsze ładowanie pobiera zasoby modelu.
Kokoro-FastAPI Host Docker z CPU, 8 GB RAM Opcjonalne GPU NVIDIA, 8–16 GB RAM Dobry lokalny serwer, gdy ładowanie modelu w przeglądarce nie jest idealne.
openedai-speech Piper CPU, 4–8 GB RAM CPU, 8 GB RAM Lekki serwer zgodny z OpenAI.
openedai-speech XTTS GPU NVIDIA około 4 GB VRAM, 8–16 GB RAM GPU NVIDIA 6 GB+, 16 GB RAM Ścieżka klonowania głosu; CPU jest możliwe, ale wolne.
Serwery Chatterbox CPU może działać w niektórych wersjach, ale jest wolne GPU NVIDIA 6 GB+, 16 GB RAM Używaj GPU do klonowania lub przetwarzania długiego tekstu.
GPT-SoVITS / F5-TTS / Qwen3-TTS CPU tylko do testowania, wolne GPU NVIDIA 6 GB+ dla mniejszych/zoptymalizowanych modeli, 16 GB RAM Wybór warstwy pośredniej i rozmiar modelu mają znaczenie. Oczekuj więcej konfiguracji.
MisoTTS 8B Niezalecane lokalnie przy 6 GB VRAM 24 GB VRAM lub zdalny host Repozytorium zaleca GPU z dużą ilością VRAM do interaktywnego użycia.

Uwagi o przetestowanych serwerach

To samodzielnie hostowane rozwiązania klonowania głosu sprawdzone pod kątem zgodności z SSN. Ścieżkę lokalnego punktu końcowego przetestowano zarówno z dock.html i featured.html.

SSN przyjmuje bezpośrednie binarne odpowiedzi audio, odpowiedzi JSON z dźwiękiem base64 i odpowiedzi JSON z adresem URL audio. Obecne odtwarzanie własnego/lokalnego TTS buforuje zwrócony dźwięk przed odtworzeniem; odtwarzanie strumieniowe w miarę pobierania nie jest jeszcze obsługiwane.

Serwer Ścieżka SSN Uwagi
openedai-speech Bezpośrednio lub przez most Zgodne z OpenAI /v1/audio/speech. Tryb Piper przetestowano z rzeczywistą syntezą CPU z dock.html i featured.html, bezpośrednio i przez most. Przy uruchamianiu ze źródeł w Windows upewnij się, że folder Scripts środowiska venv znajduje się w PATH , aby piper.exe i ffmpeg.exe można było znaleźć.
chatterbox-tts-api Bezpośrednio lub przez most Zgodne z OpenAI /v1/audio/speech. Używa skonfigurowanego dźwięku referencyjnego do klonowania. Strukturę API przetestowano bezpośrednio i przez most.
Chatterbox-TTS-Server Bezpośrednio lub przez most Punkt końcowy zgodny z OpenAI i interfejs internetowy. Przetestowano z rzeczywistą syntezą CPU przy użyciu Emily.wav z dock.html i featured.html, bezpośrednio i przez most.
GPT-SoVITS Tryb mostu Uruchom most SSN z --mode gptsovits; serwer docelowy to /tts, nie zgodne z OpenAI.
F5-TTS_server Tryb mostu Uruchom most SSN z --mode f5; serwer docelowy używa GET /synthesize_speech/.
Oficjalne F5-TTS Potrzebna warstwa pośrednia Przede wszystkim CLI, Gradio i serwer gniazd. Użyj warstwy zgodnej z OpenAI lub trybu mostu F5 z taką warstwą.
Qwen3-TTS Potrzebna warstwa pośrednia Przede wszystkim biblioteka i demo Gradio. Dobry kandydat na małą warstwę zgodną z OpenAI wokół generate_voice_clone.
MisoTTS Tylko zdalnie/własne Klonowanie głosu jest obsługiwane, ale model 8B nie jest przeznaczony dla 6 GB VRAM i nie ma lokalnego punktu końcowego REST w repozytorium.

Konfiguracja Kokoro-FastAPI

Kokoro-FastAPI uruchamia model Kokoro 82M jako lokalny serwer z API zgodnym z OpenAI. Działa na CPU (GPU nie jest wymagane) i zapewnia doskonałą jakość głosu.

Instalacja przez Docker

Otwórz terminal (Wiersz polecenia, PowerShell lub Terminal) i uruchom jedno z poniższych:

CPU (działa na dowolnym komputerze):

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

GPU (tylko NVIDIA — szybsza synteza):

docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
Pierwsze uruchomienie: Docker pobierze obraz (~1,5–2 GB). Dzieje się to tylko raz. Potem serwer uruchamia się w kilka sekund.

Sprawdź, czy działa

Otwórz przeglądarkę i przejdź do http://localhost:8880/web/— powinien pojawić się interfejs internetowy, w którym można testować głosy.

Dostępne głosy

Ponad 67 dostępnych głosów. Kilka przykładów:

af_bella, af_sarah, af_nicole, af_sky, af_heart (American female) am_adam, am_michael (American male) bf_emma, bf_isabella (British female) bm_george, bm_lewis (British male)

Przeglądaj i testuj wszystkie głosy na http://localhost:8880/web/ gdy serwer działa.

URL SSN

Jeśli Kokoro-FastAPI jest na tym samym komputerze co OBS:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella

Jeśli Kokoro-FastAPI jest na innym komputerze, zastąp 192.168.x.x adresem IP LAN tego komputera:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://192.168.x.x:8880/v1/audio/speech&voiceopenai=af_bella
Nazwy głosów Kokoro różnią się od nazw głosów OpenAI. W Kokoro-FastAPI używaj głosów takich jak af_bella, af_sarah, am_adam lub bf_emma. Nazwy takie jak echo, nova i alloy są nazwami w stylu OpenAI/openedai-speech i mogą nie działać z Kokoro.

Utrzymuj serwer uruchomiony

Aby Kokoro-FastAPI działał automatycznie w tle, użyj flagi restartu Dockera:

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

Teraz będzie uruchamiać się automatycznie z Docker Desktop przy każdym restarcie.

Konfiguracja openedai-speech (Piper i XTTS-v2)

openedai-speech udostępnia zgodny z OpenAI punkt końcowy /v1/audio/speech potrzebny Social Stream. Jego mały obraz uruchamia Piper na CPU; pełny obraz może uruchamiać klonowanie głosu XTTS-v2 na obsługiwanym GPU.

Zarchiwizowany projekt: openedai-speech zarchiwizowano w styczniu 2026 roku i opisuje się jako w większości przestarzały. Pozostaje przydatnym przykładem zgodności, ale nie jest już utrzymywany. Używaj go lokalnie i nie udostępniaj jego nieuwierzytelnionego portu w publicznym internecie.

Opcja A: lekki Piper

Użyj tej opcji do serwera TTS tylko na CPU o rozmiarze poniżej 1 GB. Nie zawiera XTTS-v2 ani klonowania głosu.

Instalacja przez Docker Compose

1
Sklonuj repozytorium lub utwórz folder z następującym docker-compose.min.yml. Alternatywnie uruchom poniższe polecenia bezpośrednio.
2
Uruchom minimalny obraz tylko z Piper:
docker run -d --restart unless-stopped \ -p 8000:8000 \ ghcr.io/matatonic/openedai-speech-min

Uwaga o instalacji ze źródeł w Windows

Jeśli uruchamiasz openedai-speech z lokalnego kodu zamiast Dockera, dodaj folder skryptów jego środowiska wirtualnego do PATH przed uruchomieniem serwera. Bez tego żądania mogą zwracać HTTP 500, ponieważ serwer nie znajduje 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

Dostępne głosy

openedai-speech używa nazw głosów w stylu OpenAI mapowanych na głosy Piper:

alloy, echo, fable, onyx, nova, shimmer

URL SSN

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=openai&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova

Opcja B: klonowanie głosu XTTS-v2

XTTS-v2 samo w sobie jest modelem, a nie internetowym API. Użyj pełnego serwera openedai-speech, aby załadować model, wybrać zapisany głos referencyjny, przyjąć tekst czatu z SSN i zwrócić dźwięk do odtworzenia. Serwer podaje praktyczne zapotrzebowanie około 4 GB VRAM GPU; inferencja CPU jest możliwa, ale wolna.

Nie używaj openedai-speech-min dla XTTS-v2. Minimalny obraz zawiera tylko Piper. XTTS-v2 wymaga pełnej instalacji i model=tts-1-hd w każdym żądaniu mowy.
1
Sklonuj zarchiwizowany serwer, utwórz jego plik środowiska i uruchom pełną konfigurację Docker Compose z GPU:
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 zamiast Copy-Item. Docker musi mieć dostęp do obsługiwanego GPU. Model pobiera się przy pierwszym użyciu.

2
Przygotuj czysty klip referencyjny używany za zgodą. Dobry początek to monofoniczny WAV 22050 Hz o długości od 6 do 30 sekund:
ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
3
Dodaj sklonowany głos do istniejącej sekcji tts-1-hd w config/voice_to_speaker.yaml:
tts-1-hd: me: model: xtts speaker: voices/me.wav language: en

Zachowaj istniejące głosy wymienione już w tts-1-hd. Zmień me na nazwę głosu, którą SSN ma wysyłać, i w razie potrzeby użyj właściwego kodu języka XTTS.

4
Uruchom serwer ponownie, a następnie skieruj na niego dok SSN lub nakładkę wyróżnionych wiadomości:
docker compose restart
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 dla XTTS-v2. Jeśli zostanie pominięte, Social Stream wysyła domyślne tts-1, a openedai-speech wybiera zamiast tego Piper. Wartość voiceopenai musi odpowiadać nazwie sklonowanego głosu w voice_to_speaker.yaml.

Jeśli przeglądarka lub OBS blokuje bezpośrednie żądanie, uruchom Lokalny most TTS na komputerze OBS i zachowaj te same parametry modelu i głosu, zmieniając openaiendpoint na http://127.0.0.1:8124/v1/audio/speech.

Lokalny most TTS

Most to mały lokalny pomocnik. Przyjmuje żądanie przeglądarki z SSN, komunikuje się z serwerem TTS i zwraca dźwięk do SSN z nagłówkami odpowiednimi dla przeglądarki.

Najprostsza zasada: uruchom most na tym samym komputerze co OBS. Wtedy OBS może używać http://127.0.0.1:8124/v1/audio/speech, nawet jeśli właściwy serwer TTS znajduje się na innym komputerze.
Diagram pokazujący wywołanie lokalnego mostu przez OBS i serwera TTS przez most
Źródło przeglądarkowe OBS komunikuje się z mostem na komputerze OBS. Most może następnie wywołać Kokoro-FastAPI, openedai-speech lub inny serwer.

Samodzielny folder startowy to local-tts-bridge/; zobacz README mostu aby poznać wszystkie opcje uruchamiania.

Proxy zgodne z OpenAI

Windows PowerShell, gdy serwer TTS jest na tym samym komputerze:

$env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" npm run local-tts-bridge

Windows PowerShell, gdy serwer TTS jest na innym komputerze:

$env:SSN_TTS_TARGET="http://192.168.x.x:8880/v1/audio/speech" npm run local-tts-bridge

Terminal macOS/Linux:

SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" npm run local-tts-bridge

Następnie skieruj należący do OBS dock.html URL na most:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=af_bella

Tryb proxy GPT-SoVITS

GPT-SoVITS używa własnej /tts struktury JSON, więc most może przetłumaczyć żądanie SSN zgodne z OpenAI na treść żądania GPT-SoVITS.

$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" npm run local-tts-bridge -- --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 proxy serwera F5-TTS

Niektóre warstwy serwera F5-TTS udostępniają /synthesize_speech/?text=...&voice=... zamiast punktu końcowego zgodnego z OpenAI. Most może przetłumaczyć żądanie SSN na ten format zapytania.

$env:SSN_TTS_TARGET="http://127.0.0.1:7860/synthesize_speech/" npm run local-tts-bridge -- --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
Punkt końcowy mostu: http://127.0.0.1:8124/v1/audio/speech. Zmień port przez SSN_TTS_BRIDGE_PORT=8125 w razie potrzeby.

Łączenie z Social Stream Ninja

Wszystkie powyższe samodzielnie hostowane serwery używają tej samej metody połączenia — wbudowanej w Social Stream obsługi: Punkt końcowy OpenAI TTS z własnym lokalnym URL.

Parametry URL

Parametr Wartość Opis
ttsprovider customtts lub openai Użyj ścieżki TTS zgodnej z OpenAI. Użyj customtts dla lokalnych/samodzielnie hostowanych punktów końcowych.
openaiendpoint http://localhost:8880/v1/audio/speech URL lokalnego serwera (zmień port w razie potrzeby)
speech en-US Włącza TTS dla angielskiego
voiceopenai af_bella Nazwa głosu (zależy od serwera)
openaiformat mp3 Format audio: mp3, wav, opus, flac
openaispeed 1.0 Szybkość mówienia (0.5–2.0)
Aliasy punktów końcowych: customttsendpoint i localttsendpoint również działają. customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat i localttsformat są akceptowanymi aliasami pól w stylu OpenAI.
Sprawdź punkt końcowy i głos przed diagnozowaniem dźwięku. openaiendpoint musi być osiągalne ze strony odtwarzającej TTS oraz voiceopenai musi być głosem obsługiwanym przez Twój serwer. Kokoro-FastAPI używa nazw takich jak af_bella; openedai-speech często używa nazw takich jak nova lub echo.

Pełne przykładowe adresy URL

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

Dodatkowe opcje TTS

Działają z każdym dostawcą TTS, w tym lokalnymi serwerami:

Parametr Przykład Opis
simpletts &simpletts Pomiń „mówi” — odczytuj tylko wiadomość
simpletts2 &simpletts2 Całkowicie pomijaj nazwy użytkowników
volume &volume=0.8 Poziom głośności (0.0–1.0)
skipmessages &skipmessages=3 Odczytuj tylko co trzecią wiadomość
ttscommand &ttscommand=!say Odczytuj tylko wiadomości zaczynające się od !say
readevents &readevents Odczytuj także subskrypcje, wpłaty itd.
ttsquick &ttsquick=100 Celowo skraca mowę po tylu znakach. Usuń, jeśli wiadomości są obcinane.
Klucz API nie jest potrzebny. Przy lokalnym serwerze (URL spoza openai.com) Social Stream Ninja wysyła żądanie bez nagłówka Authorization. Nie musisz konfigurować klucza.

Wbudowane opcje przeglądarkowe warte obsługi

SSN już obsługuje systemowe/przeglądarkowe speechSynthesis, wbudowane Kokoro, Piper, Kitten i eSpeak. Najbardziej przydatnymi przyszłymi dodatkami po stronie przeglądarki byłyby wybór urządzenia wyjściowego audio tam, gdzie setSinkId jest dostępne, więcej głosów Piper i dedykowana ścieżka odtwarzania w miarę pobierania dla serwerów mogących strumieniować fragmenty audio.

Przekazywanie dźwięku do OBS

Sposób przechwytywania dźwięku TTS w OBS zależy od tego, jak uruchamiasz Social Stream Ninja.

Metoda 1 — źródło przeglądarkowe OBS Zalecane

To najprostsza metoda i działa dla wszystkich dostawców TTS (wbudowane i samodzielnie hostowany serwer).

1
W OBS dodaj nowe Źródło przeglądarki
2
Ustaw URL na swój dock.html URL z parametrami TTS
3
Sprawdź „Control audio via OBS” w ustawieniach źródła przeglądarkowego
4
Kliknij OK— dźwięk TTS pojawi się teraz jako źródło audio OBS, którym możesz regulować lub kierować
5
Kliknij raz źródło przeglądarkowe w podglądzie, aby zezwolić na automatyczne odtwarzanie dźwięku
Dlaczego to działa: Wbudowane TTS i TTS z samodzielnie hostowanego serwera odtwarzają dźwięk przez kontekst audio przeglądarki (nie syntezę mowy systemu). OBS może przechwytywać dźwięk przeglądarki bezpośrednio po zaznaczeniu „Control audio via OBS”.

Metoda 2 — aplikacja komputerowa SSN + dźwięk pulpitu

Jeśli używasz samodzielnej aplikacji komputerowej Social Stream Ninja (nie źródła przeglądarkowego OBS):

1
Dźwięk TTS z aplikacji jest odtwarzany przez systemowe głośniki/słuchawki
2
W OBS dodaj Przechwytywanie wejścia audio lub Przechwytywanie dźwięku pulpitu źródło
3
Jeśli chcesz oddzielić TTS od pozostałego dźwięku pulpitu, użyj wirtualnego kabla audio:
  • Windows: VB-Audio Virtual Cable (bezpłatne)
  • Ustaw CABLE Input jako wyjście aplikacji SSN w ustawieniach dźwięku Windows
  • Przechwytywanie CABLE Output w OBS przez przechwytywanie wejścia audio

Łącza dotyczące routingu audio Windows

Routing dla aplikacji w Windows 10

1
Otwórz Ustawienia dźwięku > Głośność aplikacji i preferencje urządzeń.
2
Znajdź przeglądarkę lub aplikację SSN na liście aplikacji.
3
Ustaw Output na CABLE Input (VB-Audio Virtual Cable).
4
W OBS dodaj Przechwytywanie wejścia audio i wybierz CABLE Output.

Routing dla aplikacji w Windows 11

1
Otwórz Ustawienia > System > Dźwięk > Mikser głośności.
2
Znajdź przeglądarkę lub aplikację SSN.
3
Ustaw urządzenie wyjściowe na CABLE Input (VB-Audio Virtual Cable).
4
W OBS dodaj Przechwytywanie wejścia audio i wybierz CABLE Output.

Oprogramowanie Audio Router

Audio Router może skierować jedną aplikację do wirtualnego kabla, ale jest starszym oprogramowaniem. Preferuj routing dla aplikacji w Windows, gdy działa.

1
Zainstaluj Audio Router.
2
Skieruj przeglądarkę lub aplikację SSN do CABLE Input.
3
W OBS przechwytuj CABLE Output.

Zaawansowany routing Voicemeeter

Voicemeeter jest najlepsze, gdy musisz słyszeć TTS lokalnie, skierować je do OBS i oddzielić od muzyki/dźwięku gry.

1
Zainstaluj Voicemeeter i ustaw jako domyślne wyjście Windows.
2
Ustaw Hardware Out na głośniki/słuchawki.
3
Skieruj wirtualne wyjście do OBS jako źródło przechwytywania wejścia audio.
Systemowy TTS (?speech=en-US bez dostawcy) zależy od głosów udostępnianych przez przeglądarkę. OBS może nie udostępniać głosów lub wyświetlać je bez generowania dźwięku możliwego do przechwycenia. Testuj mowę i nagranie OBS osobno. Użyj jednego z powyższych dostawców (kokoro, piper, itd.) zamiast tego.

Tabela porównawcza

Opcja Konfiguracja Jakość Prywatny OBS (źródło przeglądarkowe) Wymagane GPU Koszt
Wbudowane Kokoro Brak ⭐⭐⭐⭐⭐ Tak Tak Nie (szybsze z) Bezpłatne
Wbudowane Piper Brak ⭐⭐⭐⭐ Tak Tak Nie Bezpłatne
Wbudowane Kitten Brak ⭐⭐⭐ Tak Tak Nie Bezpłatne
Wbudowane eSpeak Brak ⭐⭐ Tak Tak Nie Bezpłatne
Kokoro-FastAPI Docker ⭐⭐⭐⭐⭐ Tak Tak Nie (opcjonalne) Bezpłatne
openedai-speech Docker ⭐⭐⭐⭐ Tak Tak Nie Bezpłatne
ElevenLabs Klucz API ⭐⭐⭐⭐⭐ Nie Tak Nie Płatne plany
Systemowy TTS Brak ⭐⭐ Tak Nie* Nie Bezpłatne

* Systemowy TTS wymaga routingu przez wirtualny kabel audio do przechwytywania w OBS.

Rozwiązywanie problemów

Lista kontrolna rozwiązywania problemów z lokalnym TTS w formie zrzutu ekranu
Gdy TTS działa w jednym miejscu, a w innym nie, sprawdzaj kolejno komputer, punkt końcowy, głos, uprawnienia przeglądarki i przechwytywanie dźwięku OBS.

Test aplikacji SSN działa, ale OBS nie ma dźwięku

Test aplikacji dowodzi tylko, że aplikacja może dotrzeć do serwera. Źródło przeglądarkowe OBS nadal musi dotrzeć do punktu końcowego i odtworzyć dźwięk.

Odczytywana jest tylko pierwsza litera lub kilka słów

Lokalny serwer nie odpowiada

Zablokowany CORS lub sieć lokalna

Jeśli przeglądarka zgłasza blokadę żądania przez CORS, dostęp do sieci lokalnej, dostęp do sieci prywatnej lub failed fetch, serwer TTS może w ogóle nie otrzymać żądania.

Niewłaściwy głos lub głosu nie znaleziono

Dźwięk jest odtwarzany, ale OBS go nie przechwytuje

Nie znaleziono obrazu Docker

Tagi obrazów Docker mogą się zmieniać. Jeśli polecenie z tego przewodnika przestanie działać, sprawdź aktualny tag na stronie projektu:

Więcej opcji TTS: Informacje o płatnym TTS w chmurze (ElevenLabs, Google Cloud, Speechify) i pełną dokumentację parametrów URL zawiera Przewodnik po głosach TTS.