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 instalacji | Użyj wbudowane głosy. Większość osób kończy tutaj. |
| Korzystać z już działającego serwera głosowego | Podłącz serwer. |
| Sklonowany głos | Zobacz klonowanie głosu. |
| Fish Audio w OBS | Zobacz Konfiguracja Fish Audio. |
| Płatne głosy w chmurze | Zobacz Dokumentacja TTS. |
Wbudowane głosy (bez instalacji)
Działają wewnątrz SSN w przeglądarce. Bez serwera, Dockera i klucza API.
| Głos | Brzmienie | Obciążenie komputera | Wartość w linku |
|---|---|---|---|
| Kokoro | Doskonała | Średnie. Szybciej z GPU. | ttsprovider=kokoro |
| Piper | Bardzo dobra | Niskie. Tylko CPU. | ttsprovider=piper |
| Kitten | Dobra | Bardzo niskie. Tylko CPU. | ttsprovider=kitten |
| eSpeak-NG | Robotyczny | Minimalne. Tylko CPU. | ttsprovider=espeak |
Konfiguracja w 4 krokach
- Dodaj
&speech=en-US&ttsprovider=kokorodo swojegodock.htmllink. (Lubpiper,kitten,espeak.) - Dodaj ten link w OBS jako Źródło przeglądarki. To strona, która wydaje dźwięk.
- We właściwościach włącz Steruj dźwiękiem przez OBS (Control audio via OBS).
- Wyślij krótką testową wiadomość na czacie, na przykład
Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
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.
- Uruchom serwer. Kokoro-FastAPI jest najprostsze.
- W SSN otwórz listę dostawców TTS i wybierz Własny / lokalny punkt końcowy TTS.
- W sekcji Niestandardowy / lokalny punkt końcowy API, wpisz adres serwera, np.
http://127.0.0.1:8880/v1/audio/speech. - Pozostaw pole klucza API puste.
- Wybierz głos znany serwerowi:
af_belladla Kokoro,novadla openedai-speech. - Skopiuj link do OBS i wyślij testową wiadomość na czacie.
| Serwer | Model | GPU | Dysk | Port |
|---|---|---|---|---|
| Kokoro-FastAPI (zalecane) | Kokoro 82M | Opcjonalne | ~2 GB | 8880 |
| openedai-speech (Piper) | Piper | Tylko CPU | <1 GB | 8000 |
| kokoro-web | Kokoro 82M | Opcjonalne | ~2 GB | 3000 |
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.
| Twoja konfiguracja | Użyj tego adresu |
|---|---|
| OBS i serwer na tym samym komputerze | http://127.0.0.1:8880/v1/audio/speech |
| Serwer na innym komputerze w domu | http://192.168.x.x:8880/v1/audio/speechlokalnym IP tego komputera |
| Test w aplikacji SSN działa, OBS milczy | OBS 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.
- 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. - Otwórz
http://localhost:8880/web/. Powinna pojawić się strona do testowania głosów (ponad 67 dostępnych). - 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
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)
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
- 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żyjcp sample.env speech.env. Docker wymaga dostępu do GPU. Model pobiera się przy pierwszym użyciu. - 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
- W sekcji
config/voice_to_speaker.yaml, dodaj pod istniejącymtts-1-hdsekcji (zachowaj istniejące głosy):tts-1-hd: me: model: xtts speaker: voices/me.wav language: enZmieńmena nazwę, którą będzie wysyłać SSN. - 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.
http://127.0.0.1:8124/v1/audio/speechnawet jeśli serwer głosowy jest na innym komputerze.
- 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ładhttp://192.168.x.x:8880/v1/audio/speech. - W folderze SSN uruchom
node scripts/local-tts-bridge.cjs. Pozostaw uruchomione. - 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.
- Nagraj czysty klip z jednym mówcą, zwykle 3–30 sekund, z niewielkim szumem tła.
- Niektóre serwery potrzebują również dokładnej treści wypowiedzi z klipu.
- Serwer tworzy profil głosu na podstawie klipu.
- SSN wysyła tekst czatu z
ttsprovider=customtts. - Serwer zwraca audio (zwykle WAV lub MP3), które SSN odtwarza.
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.
| Opcja | Klonowanie na podstawie | Mieści się na GPU z 6 GB? | Jak połączyć |
|---|---|---|---|
| XTTS-v2 / openedai-speech | Krótki klip WAV | Tak, około 4 GB | Bezpośrednio, /v1/audio/speech. Projekt jest zarchiwizowany. |
| chatterbox-tts-api / Chatterbox-TTS-Server | Próbka referencyjna | Prawdopodobnie z Turbo lub małymi fragmentami | Bezpośrednio lub przez mostek. GPU działa płynniej niż CPU. Konfiguracja zależy od forka. |
| Qwen3-TTS (0,6B / 1,7B) | Klip 3-sekundowy | Prawdopodobnie (0.6B Base) | Wymaga warstwy zgodnej z OpenAI. |
| GPT-SoVITS | 5 sekund; lepiej z 1 minutą | Prawdopodobnie z fp16 / lekką instalacją | Most --mode gptsovits. |
| F5-TTS | Klip wraz z transkrypcją | Być może | Wrapper lub mostek --mode f5 z F5-TTS_server. |
| MisoTTS 8B | Wzorcowe audio | Nie; zalecane 24 GB | Tylko 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.
| Opcja | Minimum | Komfortowo |
|---|---|---|
| Systemowy TTS / eSpeak | Dowolny komputer | Dowolny komputer |
| Wbudowane Kitten | Słabszy CPU, 4 GB RAM | CPU laptopa, 8 GB RAM |
| Wbudowane Piper | Nowoczesny CPU, 4–8 GB RAM | Nowoczesny CPU, 8 GB RAM |
| Wbudowane Kokoro | Nowoczesny CPU, 8 GB RAM | GPU z WebGPU lub szybki CPU, 8–16 GB RAM |
| Kokoro-FastAPI | CPU, 8 GB RAM | Opcjonalne GPU NVIDIA, 8–16 GB RAM |
| openedai-speech Piper | CPU, 4–8 GB RAM | CPU, 8 GB RAM |
| openedai-speech XTTS | GPU NVIDIA z około 4 GB, 8–16 GB RAM | GPU NVIDIA 6 GB+, 16 GB RAM |
| Chatterbox | CPU w niektórych wersjach, wolno | GPU NVIDIA 6 GB+, 16 GB RAM |
| GPT-SoVITS / F5-TTS / Qwen3-TTS | CPU do testów, wolno | GPU NVIDIA 6 GB+, 16 GB RAM |
| MisoTTS 8B | Nie przy 6 GB | GPU 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.
- Dodaj Źródło przeglądarki z Twoim
dock.htmllink TTS. - Włącz Steruj dźwiękiem przez OBS (Control audio via OBS).
- 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.
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.
&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
| Opcja | Konfiguracja | Jakość | Prywatny | Działa w OBS | Koszt |
|---|---|---|---|---|---|
| Wbudowane Kokoro | Brak | 5/5 | Tak | Tak | Bezpłatne |
| Wbudowane Piper | Brak | 4/5 | Tak | Tak | Bezpłatne |
| Wbudowane Kitten | Brak | 3/5 | Tak | Tak | Bezpłatne |
| Wbudowane eSpeak | Brak | 2/5 | Tak | Tak | Bezpłatne |
| Kokoro-FastAPI | Docker | 5/5 | Tak | Tak | Bezpłatne |
| openedai-speech | Docker | 4/5 | Tak | Tak | Bezpłatne |
| ElevenLabs | klucz API | 5/5 | Nie | Tak | Płatne plany |
| Systemowy TTS | Brak | 2/5 | Tak | Wymaga routingu audio | Bezpłatne |
Rozwiązywanie problemów
| Problem | Spróbuj tego |
|---|---|
| Test w aplikacji działa, OBS milczy | OBS 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łowa | Usuń 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 odpowiada | Sprawdź, 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łosu | Kokoro-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 przechwytuje | Włą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 Docker | Tagi 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 audio | Tak | Najlepsza. audio/mpeg, audio/wav, audio/ogg, audio/aaclub dowolny typ odtwarzany w przeglądarce. |
| JSON z adresem URL audio | Tak | Sprawdzenia url, audio_url, output_url, data.url, a pierwszy data[] element. |
| JSON z dźwiękiem base64 | Tak | Sprawdzenia audio, audio_data, audioContent, b64_json, zagnieżdżone data pola i adresy data URL. |
| Surowe PCM | Tylko 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
| Ustawienie | Przykład | Co robi |
|---|---|---|
ttsprovider | customtts | Użyj własnego serwera. (openai również działa.) |
openaiendpoint | http://localhost:8880/v1/audio/speech | Adres serwera. Dopasuj port. |
speech | en-US | Włącza TTS po angielsku. |
voiceopenai | af_bella | Nazwa głosu. Zależy od serwera. |
openaimodel | tts-1-hd | Nazwa modelu. Domyślnie: tts-1. |
openaiformat | mp3 | mp3, wav, opus lub flac. |
openaispeed | 1.0 | Szybkość 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