Посібник із локального озвучення ШІ

Запускайте голоси чату на власному комп'ютері. Більшості стримерів достатньо вбудованих голосів.

Мені це потрібно?

«Локальний» означає одне з двох: вбудований у SSN голос, що працює в браузері, або голосовий сервер, який ви запускаєте самостійно.

Я хочу…Що зробити
Безкоштовні голоси без встановленняВикористовуйте вбудовані голоси. Більшості цього достатньо.
Використовувати вже запущений голосовий серверПідключити сервер.
Клонований голосДивіться клонування голосу.
Fish Audio в OBSДивіться Налаштування Fish Audio.
Платні хмарні голосиДивіться Довідка TTS.
Працює з будь-яким чатом, який захоплює SSN. Голос належить програвачу SSN, не YouTube чи Twitch. На відміну від Системне озвучення, локальні ШІ-голоси створюють власний звук, який OBS може захопити. Порівняти провайдерів і послухати приклади.

Вбудовані голоси (нічого встановлювати не потрібно)

Вони працюють усередині SSN у браузері. Без сервера, Docker й API-ключа.

ГолосЗвучанняНавантаження на комп'ютерЗначення в посиланні
KokoroВідмінноСереднє. Швидше з GPU.ttsprovider=kokoro
PiperДуже добреНизьке. Лише CPU.ttsprovider=piper
KittenДобреДуже низьке. Лише CPU.ttsprovider=kitten
eSpeak-NGРоботизованийМінімальне. Лише CPU.ttsprovider=espeak

Налаштуйте за 4 кроки

  1. Додайте &speech=en-US&ttsprovider=kokoro до свого dock.html посилання. (Або piper, kitten, espeak.)
  2. Додайте це посилання до OBS як Джерело браузера (Browser Source). Саме ця сторінка створює звук.
  3. У властивостях увімкніть Керувати звуком через OBS (Control audio via OBS).
  4. Надішліть коротке тестове повідомлення, наприклад Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
Перше використання повільне. Kokoro та Piper спочатку завантажують моделі (приблизно 50–200 МБ). Наступні запуски використовують їх повторно, але запуск однаково триває певний час. OBS зберігає власну копію окремо від Chrome.

Голоси, швидкість та інші мови: налаштування провайдерів. Віддаєте перевагу кнопкам? Використовуйте посібник із налаштування.

Підключіть власний сервер TTS

Сервер дає більше голосів, клонування чи один голос для різних інструментів. SSN спілкується з ним як із Сумісний з OpenAI сервером мовлення. API-ключ не потрібен.

  1. Запустіть сервер. Kokoro-FastAPI найпростіше.
  2. У SSN відкрийте список провайдерів TTS і виберіть Власна / локальна кінцева точка TTS.
  3. У розділі Користувацька / локальна кінцева точка API, уведіть адресу сервера, наприклад http://127.0.0.1:8880/v1/audio/speech.
  4. Залиште поле API-ключа порожнім.
  5. Виберіть відомий серверу голос: af_bella для Kokoro, nova для openedai-speech.
  6. Скопіюйте посилання в OBS і надішліть тестове повідомлення в чат.
Схема полів локального TTS у Social Stream Ninja у вигляді знімка екрана
Головне поле — кінцева точка.
OBS на іншому комп'ютері? Прочитайте Правило localhost спочатку. Браузер блокує? Використовуйте міст.
СерверМодельGPUДискПорт
Kokoro-FastAPI (рекомендовано)Kokoro 82MНеобов’язково~2 ГБ8880
openedai-speech (Piper)PiperЛише CPU<1 ГБ8000
kokoro-webKokoro 82MНеобов’язково~2 ГБ3000

Їм потрібен Docker Desktop установлений і запущений. Він безкоштовний для особистого використання.

Правило localhost

Це найпоширеніша помилка.

localhost і 127.0.0.1 завжди означають «цей самий комп'ютер». Якщо OBS на одному ПК, а голосовий сервер на іншому, 127.0.0.1 в OBS указує на ПК з OBS.
Схема, що показує: localhost означає той самий комп’ютер, а для іншого комп’ютера потрібна LAN IP-адреса
Ваші налаштуванняВикористовуйте цю адресу
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 не потрібен.

  1. Відкрийте термінал (командний рядок, 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 ГБ.
  2. Відкрити http://localhost:8880/web/. Має з'явитися сторінка перевірки голосів (доступно понад 67).
  3. Використовуйте це посилання (змініть адресу, якщо сервер на іншому ПК):
    dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella
Використовуйте імена голосів Kokoro, наприклад 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)

Архівований проєкт. openedai-speech архівований у січні 2026 року й називає себе переважно застарілим. Він і далі працює як приклад, але не отримує оновлень. Використовуйте локально. Ніколи не відкривайте його порт в інтернеті: він не має входу в систему.

Варіант 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 кроки
  1. Завантажте й запустіть сервер:
    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. Модель завантажується під час першого використання.
  2. Підготуйте чистий зразок голосу, який вам дозволено використовувати. Моно, 22050 Гц, 6–30 секунд:
    ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
  3. У розділі config/voice_to_speaker.yaml, додайте під наявним tts-1-hd розділ (збережіть наявні голоси):
    tts-1-hd:
      me:
        model: xtts
        speaker: voices/me.wav
        language: en
    Змініть me на ім'я, яке надсилатиме SSN.
  4. Виконайте 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.

Найпростіше правило: запустіть міст на комп'ютері OBS. Тоді OBS завжди використовує http://127.0.0.1:8124/v1/audio/speechнавіть якщо голосовий сервер на іншому ПК.
Схема, на якій OBS звертається до локального мосту, а міст — до сервера TTS
  1. Укажіть мосту адресу сервера. PowerShell:
    $env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech"
    Сервер на іншому ПК? Використовуйте його локальну IP-адресу, наприклад http://192.168.x.x:8880/v1/audio/speech.
  2. У теці SSN запустіть node scripts/local-tts-bridge.cjs. Залиште запущеним.
  3. Спрямуйте 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 надсилає текст чату, сервер вибирає клонований голос.

  1. Запишіть чистий кліп одного мовця, зазвичай 3–30 секунд, із мінімальним фоновим шумом.
  2. Деяким серверам також потрібні точні слова з кліпу.
  3. Сервер перетворює кліп на голосовий профіль.
  4. SSN надсилає текст чату через ttsprovider=customtts.
  5. Сервер повертає звук (зазвичай WAV або MP3), а SSN відтворює його.
Клонуйте лише власні голоси або ті, на використання яких маєте дозвіл.
XTTS-v2 за замовчуванням призначений для некомерційного використання. Його Coqui Public Model License дозволяє лише некомерційне використання. Монетизована трансляція може не відповідати цій умові. Спочатку перевірте ліцензію або отримайте дозвіл.

Із 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-SoVITS5 секунд; краще 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 ГБ RAMCPU ноутбука, 8 ГБ оперативної пам'яті
Вбудований PiperСучасний CPU, 4–8 ГБ оперативної пам'ятіСучасний CPU, 8 ГБ RAM
Вбудований KokoroСучасний CPU, 8 ГБ RAMGPU з WebGPU або швидкий CPU, 8–16 ГБ оперативної пам'яті
Kokoro-FastAPICPU, 8 ГБ RAMНеобов'язковий NVIDIA GPU, 8–16 ГБ оперативної пам'яті
openedai-speech PiperCPU, 4–8 ГБ оперативної пам'ятіCPU, 8 ГБ RAM
openedai-speech XTTSNVIDIA GPU ~4 ГБ, 8–16 ГБ оперативної пам'ятіNVIDIA GPU з 6 ГБ+, 16 ГБ RAM
ChatterboxCPU в деяких збірках, повільноNVIDIA GPU з 6 ГБ+, 16 ГБ RAM
GPT-SoVITS / F5-TTS / Qwen3-TTSCPU для перевірки, повільноNVIDIA GPU з 6 ГБ+, 16 ГБ RAM
MisoTTS 8BНе за 6 ГБGPU 24 ГБ або віддалений хост

Передати звук до OBS

Браузерне джерело OBS (рекомендовано)

Працює з вбудованими голосами й власним сервером.

  1. Додайте Джерело браузера (Browser Source) зі своїм dock.html посилання TTS.
  2. Увімкніть Керувати звуком через OBS (Control audio via OBS).
  3. Натисніть OK. Тепер TTS відображається в мікшері OBS.

Настільний застосунок SSN

Настільний застосунок використовує ті самі параметри посилання. Але звук іде із застосунку, не OBS. Захоплюйте його через Звук робочого столу або Захоплення вхідного аудіопотоку. Щоб відокремити TTS від інших звуків, спрямуйте застосунок до віртуального кабелю: кроки маршрутизації.

Не плутайте перевірку в застосунку й OBS. Кнопка «Перевірити» в застосунку перевіряє із застосунку. За посиланням в OBS саме OBS має підключитися до сервера й відтворити звук.
Докладніше про настільний застосунок

Вікна застосунку менш суворі до браузерних дозволів (CORS), ніж Chrome. Міст залишається найнадійнішим вибором для серверів, що відхиляють запити браузера. Для вбудованого Kokoro застосунок може використовувати власний ninjafy.tts шлях замість завантаження моделі в браузері.

Системне озвучення (&speech=en-US без провайдера) залежить від голосів, наявних в OBS. Часто їх немає або вони не створюють звуку, який можна захопити. Використовуйте провайдера вище.

Порівняння поруч

ВаріантНалаштуванняЯкістьПриватнийПрацює в OBSВартість
Вбудований KokoroНемає5/5ТакТакБезкоштовно
Вбудований PiperНемає4/5ТакТакБезкоштовно
Вбудований KittenНемає3/5ТакТакБезкоштовно
Вбудований eSpeakНемає2/5ТакТакБезкоштовно
Kokoro-FastAPIDocker5/5ТакТакБезкоштовно
openedai-speechDocker4/5ТакТакБезкоштовно
ElevenLabsКлюч API5/5НіТакПлатні тарифи
Системне озвученняНемає2/5ТакПотрібна маршрутизація звукуБезкоштовно

Усунення несправностей

Контрольний список усунення несправностей локального TTS у вигляді знімка екрана
Працює в одному місці, але не в іншому? Перевірте за порядком: комп'ютер, адреса, голос, дозвіл браузера, звук OBS.
ПроблемаЩо спробувати
Перевірка в застосунку працює, 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 чекає повну відповідь, потім відтворює. Робіть повідомлення чату короткими.

Параметри посилання для власного сервера
НалаштуванняПрикладЩо робить
ttsprovidercustomttsВикористовуйте власний сервер. (openai теж працює.)
openaiendpointhttp://localhost:8880/v1/audio/speechАдреса вашого сервера. Укажіть відповідний порт.
speechen-USВмикає TTS англійською.
voiceopenaiaf_bellaІм'я голосу. Залежить від сервера.
openaimodeltts-1-hdІм'я моделі. За замовчуванням tts-1.
openaiformatmp3mp3, wav, opus або flac.
openaispeed1.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