Мені це потрібно?
«Локальний» означає одне з двох: вбудований у SSN голос, що працює в браузері, або голосовий сервер, який ви запускаєте самостійно.
| Я хочу… | Що зробити |
|---|---|
| Безкоштовні голоси без встановлення | Використовуйте вбудовані голоси. Більшості цього достатньо. |
| Використовувати вже запущений голосовий сервер | Підключити сервер. |
| Клонований голос | Дивіться клонування голосу. |
| Fish Audio в OBS | Дивіться Налаштування Fish Audio. |
| Платні хмарні голоси | Дивіться Довідка TTS. |
Вбудовані голоси (нічого встановлювати не потрібно)
Вони працюють усередині SSN у браузері. Без сервера, Docker й API-ключа.
| Голос | Звучання | Навантаження на комп'ютер | Значення в посиланні |
|---|---|---|---|
| Kokoro | Відмінно | Середнє. Швидше з GPU. | ttsprovider=kokoro |
| Piper | Дуже добре | Низьке. Лише CPU. | ttsprovider=piper |
| Kitten | Добре | Дуже низьке. Лише CPU. | ttsprovider=kitten |
| eSpeak-NG | Роботизований | Мінімальне. Лише CPU. | ttsprovider=espeak |
Налаштуйте за 4 кроки
- Додайте
&speech=en-US&ttsprovider=kokoroдо свогоdock.htmlпосилання. (Абоpiper,kitten,espeak.) - Додайте це посилання до OBS як Джерело браузера (Browser Source). Саме ця сторінка створює звук.
- У властивостях увімкніть Керувати звуком через OBS (Control audio via OBS).
- Надішліть коротке тестове повідомлення, наприклад
Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
Голоси, швидкість та інші мови: налаштування провайдерів. Віддаєте перевагу кнопкам? Використовуйте посібник із налаштування.
Підключіть власний сервер TTS
Сервер дає більше голосів, клонування чи один голос для різних інструментів. SSN спілкується з ним як із Сумісний з OpenAI сервером мовлення. API-ключ не потрібен.
- Запустіть сервер. Kokoro-FastAPI найпростіше.
- У SSN відкрийте список провайдерів TTS і виберіть Власна / локальна кінцева точка TTS.
- У розділі Користувацька / локальна кінцева точка API, уведіть адресу сервера, наприклад
http://127.0.0.1:8880/v1/audio/speech. - Залиште поле API-ключа порожнім.
- Виберіть відомий серверу голос:
af_bellaдля Kokoro,novaдля openedai-speech. - Скопіюйте посилання в OBS і надішліть тестове повідомлення в чат.
| Сервер | Модель | GPU | Диск | Порт |
|---|---|---|---|---|
| Kokoro-FastAPI (рекомендовано) | Kokoro 82M | Необов’язково | ~2 ГБ | 8880 |
| openedai-speech (Piper) | Piper | Лише CPU | <1 ГБ | 8000 |
| kokoro-web | Kokoro 82M | Необов’язково | ~2 ГБ | 3000 |
Їм потрібен Docker Desktop установлений і запущений. Він безкоштовний для особистого використання.
Правило localhost
Це найпоширеніша помилка.
localhost і 127.0.0.1 завжди означають «цей самий комп'ютер». Якщо OBS на одному ПК, а голосовий сервер на іншому, 127.0.0.1 в OBS указує на ПК з OBS.
| Ваші налаштування | Використовуйте цю адресу |
|---|---|
| OBS і сервер на одному ПК | http://127.0.0.1:8880/v1/audio/speech |
| Сервер на іншому домашньому ПК | http://192.168.x.x:8880/v1/audio/speechлокальною IP-адресою цього ПК |
| Перевірка застосунку SSN працює, OBS мовчить | OBS потрібна власна робоча адреса. Перевірка в застосунку не доводить доступ OBS до сервера. |
Також перевірте дозвіл порту в брандмауері та його публікацію Docker (-p 8880:8880).
Kokoro-FastAPI
Kokoro-FastAPI запускає Kokoro як локальний сервер. Працює на CPU, GPU не потрібен.
- Відкрийте термінал (командний рядок, PowerShell або Terminal) і виконайте одну з команд:
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2
NVIDIA GPU (швидше):
docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
Перший запуск одноразово завантажує близько 1,5–2 ГБ. - Відкрити
http://localhost:8880/web/. Має з'явитися сторінка перевірки голосів (доступно понад 67). - Використовуйте це посилання (змініть адресу, якщо сервер на іншому ПК):
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 або bf_emma. Імена OpenAI на кшталт nova або alloy можуть не працювати.Запускайте автоматично через Docker:
docker run -d --restart unless-stopped -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2
openedai-speech (Piper та XTTS-v2)
Варіант A: легкий сервер Piper (CPU)
Менше 1 ГБ. Без клонування голосу.
docker run -d --restart unless-stopped -p 8000:8000 ghcr.io/matatonic/openedai-speech-min
Голоси: 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
Запуск із вихідного коду у Windows (помилки HTTP 500)
Додайте з його віртуального середовища теку Scripts теку до PATH спочатку. Інакше не знайде piper.exe або 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
Варіант B: клонування голосу XTTS-v2 (GPU)
Потрібен повний сервер, не openedai-speech-min. Плануйте близько 4 ГБ пам'яті GPU. CPU працює, але повільно.
Налаштуйте XTTS-v2 за 4 кроки
- Завантажте й запустіть сервер:
git clone https://github.com/matatonic/openedai-speech.git cd openedai-speech Copy-Item sample.env speech.env docker compose up -d
У macOS або Linux використовуйтеcp sample.env speech.env. Docker потрібен доступ до GPU. Модель завантажується під час першого використання. - Підготуйте чистий зразок голосу, який вам дозволено використовувати. Моно, 22050 Гц, 6–30 секунд:
ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
- У розділі
config/voice_to_speaker.yaml, додайте під наявнимtts-1-hdрозділ (збережіть наявні голоси):tts-1-hd: me: model: xtts speaker: voices/me.wav language: enЗмінітьmeна ім'я, яке надсилатиме SSN. - Виконайте
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 обов'язковий. Без нього SSN надсилає tts-1і сервер натомість використовує Piper. voiceopenai має збігатися з ім'ям голосу в YAML-файлі.Браузер блокує? Запустіть міст і змініть лише openaiendpoint до http://127.0.0.1:8124/v1/audio/speech.
Локальний міст TTS
Невелика утиліта SSN. Приймає запит SSN, передає голосовому серверу й повертає звук у формі, яку приймають браузери. Потрібен Node.js.
http://127.0.0.1:8124/v1/audio/speechнавіть якщо голосовий сервер на іншому ПК.
- Укажіть мосту адресу сервера. PowerShell:
$env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech"
Сервер на іншому ПК? Використовуйте його локальну IP-адресу, наприкладhttp://192.168.x.x:8880/v1/audio/speech. - У теці SSN запустіть
node scripts/local-tts-bridge.cjs. Залиште запущеним. - Спрямуйте SSN на міст:
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, одним рядком: SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" node scripts/local-tts-bridge.cjs. Усередині local-tts-bridge теці, node server.cjs робить те саме. Змініть порт через SSN_TTS_BRIDGE_PORT=8125. Усі параметри: README мосту.
Режим GPT-SoVITS
GPT-SoVITS використовує власний /tts формат. Міст перетворює запити для нього.
$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
Деякі обгортки F5-TTS використовують /synthesize_speech/?text=...&voice=.... Міст перетворює запити для них.
$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
Клонування голосу
Клонування — не налаштування SSN. Це функція деяких голосових серверів. SSN надсилає текст чату, сервер вибирає клонований голос.
- Запишіть чистий кліп одного мовця, зазвичай 3–30 секунд, із мінімальним фоновим шумом.
- Деяким серверам також потрібні точні слова з кліпу.
- Сервер перетворює кліп на голосовий профіль.
- SSN надсилає текст чату через
ttsprovider=customtts. - Сервер повертає звук (зазвичай WAV або MP3), а SSN відтворює його.
Із 6 ГБ пам'яті GPU або менше почніть із невеликих моделей на серверах, сумісних з OpenAI. Більші моделі теж працюють, якщо розміщені в іншому місці.
| Варіант | Клонує з | Уміститься на GPU 6 ГБ? | Як підключитися |
|---|---|---|---|
| XTTS-v2 / openedai-speech | Короткий WAV-кліп | Так, близько 4 ГБ | Безпосередньо, /v1/audio/speech. Проєкт архівований. |
| chatterbox-tts-api / Chatterbox-TTS-Server | Зразок голосу | Імовірно з Turbo або невеликими фрагментами | Безпосередньо чи через міст. На GPU плавніше, ніж на CPU. Налаштування залежить від форку. |
| Qwen3-TTS (0,6B / 1,7B) | Кліп 3 секунди | Імовірно (0.6B Base) | Потрібна обгортка, сумісна з OpenAI. |
| GPT-SoVITS | 5 секунд; краще 1 хвилина | Імовірно з fp16 / полегшеним установленням | Міст --mode gptsovits. |
| F5-TTS | Кліп і його розшифрування | Можливо | Обгортка чи міст --mode f5 з F5-TTS_server. |
| MisoTTS 8B | Аудіопідказка | Ні; рекомендовано 24 ГБ | Лише віддалений хостинг. У репозиторії немає локальної REST-кінцевої точки. |
Вбудований Kokoro та Kokoro-FastAPI не клонують голоси.
Що перевірялося з SSN
Перевірено з обома dock.html і featured.html:
- openedai-speech (Piper): справжнє мовлення на CPU, безпосередньо й через міст.
- Chatterbox-TTS-Server: справжнє мовлення на CPU з
Emily.wav, безпосередньо та через міст. - chatterbox-tts-api: формат запиту перевірений безпосередньо й через міст.
- GPT-SoVITS і F5-TTS_server: лише через режими мосту.
- Офіційний F5-TTS і Qwen3-TTS: спочатку потрібна обгортка (лише CLI, Gradio чи бібліотека).
Який комп'ютер потрібен?
Приблизні орієнтири, не обіцянки. Розмір моделі, довжина тексту й інші застосунки впливають на витрати пам'яті.
| Варіант | Мінімум | Комфортно |
|---|---|---|
| Системний TTS / eSpeak | Будь-який ПК | Будь-який ПК |
| Вбудований Kitten | Слабкий CPU, 4 ГБ RAM | CPU ноутбука, 8 ГБ оперативної пам'яті |
| Вбудований Piper | Сучасний CPU, 4–8 ГБ оперативної пам'яті | Сучасний CPU, 8 ГБ RAM |
| Вбудований Kokoro | Сучасний CPU, 8 ГБ RAM | GPU з WebGPU або швидкий CPU, 8–16 ГБ оперативної пам'яті |
| Kokoro-FastAPI | CPU, 8 ГБ RAM | Необов'язковий NVIDIA GPU, 8–16 ГБ оперативної пам'яті |
| openedai-speech Piper | CPU, 4–8 ГБ оперативної пам'яті | CPU, 8 ГБ RAM |
| openedai-speech XTTS | NVIDIA GPU ~4 ГБ, 8–16 ГБ оперативної пам'яті | NVIDIA GPU з 6 ГБ+, 16 ГБ RAM |
| Chatterbox | CPU в деяких збірках, повільно | NVIDIA GPU з 6 ГБ+, 16 ГБ RAM |
| GPT-SoVITS / F5-TTS / Qwen3-TTS | CPU для перевірки, повільно | NVIDIA GPU з 6 ГБ+, 16 ГБ RAM |
| MisoTTS 8B | Не за 6 ГБ | GPU 24 ГБ або віддалений хост |
Передати звук до OBS
Браузерне джерело OBS (рекомендовано)
Працює з вбудованими голосами й власним сервером.
- Додайте Джерело браузера (Browser Source) зі своїм
dock.htmlпосилання TTS. - Увімкніть Керувати звуком через OBS (Control audio via OBS).
- Натисніть OK. Тепер TTS відображається в мікшері OBS.
Настільний застосунок SSN
Настільний застосунок використовує ті самі параметри посилання. Але звук іде із застосунку, не OBS. Захоплюйте його через Звук робочого столу або Захоплення вхідного аудіопотоку. Щоб відокремити TTS від інших звуків, спрямуйте застосунок до віртуального кабелю: кроки маршрутизації.
Докладніше про настільний застосунок
Вікна застосунку менш суворі до браузерних дозволів (CORS), ніж Chrome. Міст залишається найнадійнішим вибором для серверів, що відхиляють запити браузера. Для вбудованого Kokoro застосунок може використовувати власний ninjafy.tts шлях замість завантаження моделі в браузері.
&speech=en-US без провайдера) залежить від голосів, наявних в OBS. Часто їх немає або вони не створюють звуку, який можна захопити. Використовуйте провайдера вище.Порівняння поруч
| Варіант | Налаштування | Якість | Приватний | Працює в OBS | Вартість |
|---|---|---|---|---|---|
| Вбудований Kokoro | Немає | 5/5 | Так | Так | Безкоштовно |
| Вбудований Piper | Немає | 4/5 | Так | Так | Безкоштовно |
| Вбудований Kitten | Немає | 3/5 | Так | Так | Безкоштовно |
| Вбудований eSpeak | Немає | 2/5 | Так | Так | Безкоштовно |
| Kokoro-FastAPI | Docker | 5/5 | Так | Так | Безкоштовно |
| openedai-speech | Docker | 4/5 | Так | Так | Безкоштовно |
| ElevenLabs | Ключ API | 5/5 | Ні | Так | Платні тарифи |
| Системне озвучення | Немає | 2/5 | Так | Потрібна маршрутизація звуку | Безкоштовно |
Усунення несправностей
| Проблема | Що спробувати |
|---|---|
| Перевірка в застосунку працює, OBS мовчить | OBS має сам підключатися до сервера. Сервер на іншому ПК? Замініть 127.0.0.1 його локальною IP-адресою. Перевірте Керувати звуком через OBS (Control audio via OBS). Досі заблоковано? Запустіть міст на ПК з OBS. |
| Читається лише перша літера чи перші слова | Видалити ttsquick із посилання OBS (наприклад &ttsquick=14) й оновіть. Під час перевірки також видаліть typewriter= щоб виключити проблеми часу виконання. |
| Сервер не відповідає | Перевірте, чи запущені Docker і контейнер. На серверному ПК відкрийте http://127.0.0.1:8880/web/ (Kokoro-FastAPI або порт вашого сервера). Із комп'ютера OBS відкрийте http://SERVER_LAN_IP:8880/web/. Якщо це не працює, OBS теж не підключиться. Перевірте брандмауер сервера. |
| «Заблоковано CORS», «приватна мережа» або «помилка fetch» | Браузер заблокував запит до того, як його побачив сервер. Запустіть node scripts/local-tts-bridge.cjs на ПК з OBS і використовуйте http://127.0.0.1:8124/v1/audio/speech. Розміщена бета-сторінка Dock блокується частіше; міст чи локальне вікно застосунку простіші. |
| Неправильний голос або голос не знайдено | Kokoro-FastAPI: af_bella, af_sarah, am_adamабо зі сторінки сервера. openedai-speech: nova, echo, alloy. Деякі сервери враховують регістр. |
| Грає, але OBS не захоплює | Увімкніть Керувати звуком через OBS (Control audio via OBS). Під час перевірки стежте за індикатором мікшера OBS. Переконайтеся, що задано &ttsprovider=; системному TTS може знадобитися звук робочого столу чи віртуальний кабель. |
| Образ Docker не знайдено | Теги образів змінюються. Перевірте поточний тег на Kokoro-FastAPI або openedai-speech. |
Для розробників серверів
Як SSN спілкується з користувацьким сервером. Це потрібно лише під час розроблення чи налагодження сервера.
chat text -> SSN -> your endpoint (or the bridge) -> TTS server -> audio -> SSN plays it
Що надсилає SSN
З ttsprovider=customtts, localtts або openai, SSN надсилає JSON POST:
POST /v1/audio/speech
{
"model": "tts-1",
"input": "Chat message text",
"voice": "af_bella",
"response_format": "mp3",
"speed": 1.0
}
Якщо API-ключ не заданий, SSN не надсилає заголовок Authorization.
Що SSN може відтворювати
| Відповідь | Працює? | Примітки |
|---|---|---|
| Аудіофайл | Так | Найкраще. audio/mpeg, audio/wav, audio/ogg, audio/aacабо будь-який формат, відтворюваний браузером. |
| JSON із посиланням на аудіо | Так | Перевірки url, audio_url, output_url, data.url, і перший data[] елемент. |
| JSON із аудіо в base64 | Так | Перевірки audio, audio_data, audioContent, b64_json, вкладені data поля та URL даних. |
| Необроблений PCM | Лише з обгорткою | Надішліть як WAV-файл або WAV у base64. |
Формати: mp3 невеликий і широко підтримується. wav підходить для серверів клонування й перевірки мосту. Використовуйте opus лише якщо і сервер, і браузер це підтримують.
Потокового передавання поки немає. SSN чекає повну відповідь, потім відтворює. Робіть повідомлення чату короткими.
Параметри посилання для власного сервера
| Налаштування | Приклад | Що робить |
|---|---|---|
ttsprovider | customtts | Використовуйте власний сервер. (openai теж працює.) |
openaiendpoint | http://localhost:8880/v1/audio/speech | Адреса вашого сервера. Укажіть відповідний порт. |
speech | en-US | Вмикає TTS англійською. |
voiceopenai | af_bella | Ім'я голосу. Залежить від сервера. |
openaimodel | tts-1-hd | Ім'я моделі. За замовчуванням tts-1. |
openaiformat | mp3 | mp3, wav, opus або flac. |
openaispeed | 1.0 | Швидкість мовлення (0,5–2,0). |
Також приймається: customttsendpoint, localttsendpoint, customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, localttsformat. Параметри читання на кшталт simpletts, skipmessages і ttsquick працюють із будь-яким провайдером: усі параметри посилання.
Приклади посилань:
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