Руководство по локальному ИИ-озвучиванию

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

Мне это нужно?

«Локальный» означает одно из двух: встроенный в 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 как Источник «Браузер». Именно эта страница создаёт звук.
  3. В свойствах включите Управлять аудио через 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 и выберите Собственная / локальная конечная точка озвучивания.
  3. В разделе Пользовательская / локальная конечная точка API, введите адрес сервера, например http://127.0.0.1:8880/v1/audio/speech.
  4. Оставьте поле API-ключа пустым.
  5. Выберите известный серверу голос: af_bella для Kokoro, nova для openedai-speech.
  6. Скопируйте ссылку в OBS и отправьте тестовое сообщение в чат.
Наглядная схема полей локального озвучивания в Social Stream Ninja
Главное поле — конечная точка.
OBS на другом компьютере? Прочтите Правило localhost в первую очередь. Браузер блокирует? Используйте мост.
СерверМодельGPUДискПорт
Kokoro-FastAPI (рекомендуется)Kokoro 82MНеобязательно~2 ГБ8880
openedai-speech (Piper)PiperТолько процессор<1 ГБ8000
kokoro-webKokoro 82MНеобязательно~2 ГБ3000

Им нужен Docker Desktop установленный и запущенный. Он бесплатен для личного использования.

Правило localhost

Это самая частая ошибка.

localhost и 127.0.0.1 всегда означают «этот же компьютер». Если OBS на одном ПК, а голосовой сервер на другом, 127.0.0.1 в OBS указывает на ПК с OBS.
Схема: localhost означает тот же компьютер, а для другого компьютера нужен адрес локальной сети
Ваша конфигурацияИспользуйте этот адрес
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 обращается к локальному мосту, а мост — к серверу озвучивания
  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 или библиотека).

Какой компьютер нужен?

Приблизительные ориентиры, не обещания. Размер модели, длина текста и другие приложения влияют на расход памяти.

ВариантМинимумКомфортно
Системное озвучивание / eSpeakЛюбой ПКЛюбой ПК
Встроенный KittenСлабый процессор, 4 ГБ ОЗУCPU ноутбука, 8 ГБ ОЗУ
Встроенный PiperСовременный CPU, 4–8 ГБ ОЗУСовременный процессор, 8 ГБ ОЗУ
Встроенный KokoroСовременный процессор, 8 ГБ ОЗУGPU с WebGPU или быстрый CPU, 8–16 ГБ ОЗУ
Kokoro-FastAPIПроцессор, 8 ГБ ОЗУНеобязательный NVIDIA GPU, 8–16 ГБ ОЗУ
openedai-speech PiperCPU, 4–8 ГБ ОЗУПроцессор, 8 ГБ ОЗУ
openedai-speech XTTSNVIDIA GPU ~4 ГБ, 8–16 ГБ ОЗУGPU NVIDIA с 6 ГБ+, 16 ГБ ОЗУ
ChatterboxCPU в некоторых сборках, медленноGPU NVIDIA с 6 ГБ+, 16 ГБ ОЗУ
GPT-SoVITS / F5-TTS / Qwen3-TTSCPU для проверки, медленноGPU NVIDIA с 6 ГБ+, 16 ГБ ОЗУ
MisoTTS 8BНе при 6 ГБGPU 24 ГБ или удалённый хост

Передать звук в OBS

Браузерный источник OBS (рекомендуется)

Работает со встроенными голосами и своим сервером.

  1. Добавьте Источник «Браузер» со своим dock.html ссылку TTS.
  2. Включите Управлять аудио через OBS.
  3. Нажмите ОК. Теперь 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ДаДаБесплатно
ElevenLabsAPI-ключ5/5НетДаПлатные тарифы
Системное озвучиваниеНет2/5ДаНужна маршрутизация звукаБесплатно

Устранение неполадок

Наглядный список проверок при неполадках локального озвучивания
Работает в одном месте, но не в другом? Проверьте по порядку: компьютер, адрес, голос, разрешение браузера, звук OBS.
ПроблемаЧто попробовать
Проверка в приложении работает, OBS молчитOBS должен сам подключаться к серверу. Сервер на другом ПК? Замените 127.0.0.1 его локальным IP. Проверьте Управлять аудио через 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. При проверке следите за индикатором микшера 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