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

Озвучивайте чат локальными ИИ-голосами. Начните с варианта без установки и используйте локальный сервер только при необходимости.

Русский

Обзор

Работает с захваченным текстом чата независимо от платформы. Провайдер голоса относится к проигрывателю SSN, а не к YouTube, Twitch, TikTok или другому сайту чата. Эти локальные ИИ-провайдеры отличаются от Системное озвучивание: они создают звук страницы и не зависят от доступности системных голосов в OBS. См. краткое руководство по настройке OBS о доступности голосов и захвате звука. Сравните провайдеров, послушайте образцы и посмотрите настройки.

Social Stream Ninja умеет читать сообщения чата вслух с помощью локального ИИ-синтеза речи. «Локальный» означает одно из двух: голос работает прямо в браузере либо небольшой сервер озвучивания запущен на вашем компьютере.

Есть два подхода:

Вариант 2 — собственный сервер Нужен Docker

Запустите локальный сервер озвучивания на своём компьютере и укажите его в Social Stream Ninja. Это даёт больше голосов, клонирование и управление на стороне сервера.

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

Использует встроенную в Social Stream поддержку: OpenAI-совместимая конечная точка .

Начните с варианта 1. Если вам просто нужно озвучивание в OBS, сначала попробуйте встроенный Kokoro или Kitten. Им не нужны Docker, сервер или API-ключ. Используйте собственный сервер только при необходимости конкретного серверного голоса, клонирования или другой модели.

Быстрая настройка

Для большинства стримеров это самый короткий путь:

1
Сначала используйте встроенного провайдера. Добавить &speech=en-US&ttsprovider=kokoro или &speech=en-US&ttsprovider=kitten к вашему dock.html URL.
2
Добавьте этот URL в OBS как источник «Браузер». Звук будет воспроизводить именно страница источника «Браузер» OBS.
3
Включите захват звука OBS. В свойствах источника «Браузер» включите Управлять аудио через OBS.
4
Отправьте одно короткое тестовое сообщение в чат. Используйте что-нибудь простое, например Testing local TTS. При использовании Kokoro или Piper дождитесь первой загрузки моделей.
5
Только после этого пробуйте собственный сервер. При использовании Kokoro-FastAPI, openedai-speech или другого сервера Docker прочитайте правило localhost ниже, прежде чем копировать URL в OBS.

Правило localhost / 127.0.0.1

Это самая частая ошибка при настройке локального озвучивания.

localhost и 127.0.0.1 всегда означают «этот же компьютер». Если OBS находится на одном компьютере, а Kokoro — на другом, 127.0.0.1 в URL OBS указывает на компьютер с OBS, а не с Kokoro.
Схема: localhost означает тот же компьютер, а для другого компьютера нужен адрес локальной сети
Используйте 127.0.0.1 только если сервер озвучивания находится на том же компьютере, что и страница воспроизведения. Если сервер на другом компьютере, используйте его IP-адрес локальной сети.
Ваша конфигурацияКакую конечную точку использовать
OBS и Kokoro работают на одном компьютереhttp://127.0.0.1:8880/v1/audio/speech
Kokoro работает на другом компьютере домашней сетиhttp://192.168.x.x:8880/v1/audio/speech, используя LAN IP компьютера с Kokoro
Тестовая кнопка настольного SSN работает, но OBS молчитOBS всё равно нужна собственная рабочая конечная точка. Проверка приложения не доказывает, что OBS может подключиться к серверу.

В Linux, macOS и Windows также убедитесь, что брандмауэр разрешает порт и Docker опубликовал его с помощью -p 8880:8880.

Где нажать в SSN

В меню расширения откройте выбор провайдера озвучивания и выберите Собственная / локальная конечная точка озвучивания. Появятся поля локальной OpenAI-совместимой конечной точки и ссылка на это руководство.

Наглядная схема полей локального озвучивания в Social Stream Ninja
Главное поле — конечная точка. Для локального сервера API-ключ обычно можно оставить пустым. Выберите имя голоса, которое действительно поддерживает сервер.
О снимках экрана: схема полей SSN выше показывает настройки локальной конечной точки. Интерфейсы сторонних серверов меняются от версии к версии, поэтому актуальные снимки и описание доступны по ссылкам на репозитории рядом с соответствующим этапом настройки.

Работа с собственным сервером

SSN воспринимает локальный или собственный сервер озвучивания как OpenAI-совместимую речевую конечную точку. Основной процесс:

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

Формат запроса

Для 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 }

CORS, размещённые страницы и мост

CORS — проверка разрешений в браузере. Проще говоря, сервер озвучивания должен сообщить браузеру: «Да, этой странице разрешено запрашивать у меня звук». Без разрешения запрос может быть заблокирован ещё до того, как попадёт в Kokoro или другой сервер озвучивания.

Если сервер не разрешает запросы браузера, запустите Мост локального озвучивания SSN и направьте SSN на http://127.0.0.1:8124/v1/audio/speech. Для OBS проще всего запустить мост на том же компьютере, что и OBS.

Поддерживаемые аудиоответы

Ответ Поддержка SSN Примечания
Двоичные аудиоданные Да Лучший вариант. Возвращайте audio/mpeg, audio/wav, audio/ogg, audio/aacили другой аудиотип, воспроизводимый браузером.
JSON с URL аудио Да SSN проверяет url, audio_url, output_url, вложенный data.url, а первый data[] .
JSON с аудио в base64 Да SSN проверяет audio, audio_data, audioContent, b64_json, вложенный data поля и URL данных.
Необработанные PCM-данные Только через обёртку Возвращайте PCM как файл WAV или WAV в base64. Аудиоэлемент браузера не может надёжно воспроизводить необработанные байты PCM напрямую.
Рекомендуемые форматы: используйте mp3 для небольших файлов и широкой поддержки браузерами, wav для локальных серверов клонирования и проверки моста, а также opus только если это поддерживают и сервер, и браузер.

Потоковое аудио

SSN пока не воспроизводит звук постепенно из собственных или локальных конечных точек. Он дожидается двоичного ответа или JSON с аудио, затем воспроизводит его. Некоторые серверы предоставляют потоковые конечные точки, но текущий OpenAI-совместимый путь SSN сначала буферизует звук.

Практический вывод: делайте озвучиваемые фрагменты чата короткими. Для потокового воспроизведения нужен отдельный путь с фрагментами WAV/MP3, MediaSource, WebCodecs или серверным микшером.

Вариант 1 — встроенное озвучивание без настройки

Эти движки входят в Social Stream Ninja и не требуют установки. Они работают в браузере через WebAssembly (WASM) или ONNX Runtime.

Провайдер Качество Использование процессора GPU/WebGPU Параметр URL
Kokoro TTS ⭐⭐⭐⭐⭐ Отличный Среднее Быстрее с GPU ?ttsprovider=kokoro
Piper TTS ⭐⭐⭐⭐ Очень хороший Низкое Только процессор ?ttsprovider=piper
Kitten TTS ⭐⭐⭐ Хороший Очень низкое Только процессор ?ttsprovider=kitten
eSpeak-NG ⭐⭐ Роботизированный Минимальное Только процессор ?ttsprovider=espeak

Как включить

Добавить &ttsprovider= и &speech= к вашему Social Stream dock.html URL:

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

Параметры Kokoro TTS

Сейчас в SSN доступны 28 английских, три испанских и три бразильских португальских голоса Kokoro. Укажите голос с помощью параметра &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
Примечание о языке: Выберите голос Kokoro для нужного языка. Изменение только параметра языка не меняет выбранный голос.

Пример на испанском:

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

Пример на португальском:

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

Параметры Piper TTS

Укажите модель голоса с помощью &pipervoice=:

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

Доступны португальские и испанские голоса 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

Параметры Kitten TTS

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

Параметры 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
Первая загрузка: При первом использовании Kokoro и Piper скачивают файлы моделей размером около 50–200 МБ. Это происходит автоматически в фоне. В дальнейшем можно использовать кэшированные модели, но инициализация всё равно требует времени. Кэш OBS отделён от Chrome и Edge.
Захват OBS: Все встроенные провайдеры озвучивания воспроизводят звук прямо через браузер. В OBS добавьте dock.html как источник «Браузер» и включите «Управлять аудио через OBS»— виртуальные кабели не нужны. См. раздел OBS ниже.

Примечания о браузере и настольном приложении

Расширение Chrome, источник «Браузер» OBS и отдельное настольное приложение Social Stream Ninja используют одинаковые dock.html параметры URL для озвучивания. Главное различие — где создаётся звук.

Среда Поведение локального озвучивания Захват звука
Расширение Chrome / источник «Браузер» OBS Для запросов из браузера локальный сервер должен разрешать CORS, если вы не используете мост SSN. Используйте источник «Браузер» OBS с параметром «Управлять аудио через OBS».
Отдельное настольное приложение Использует те же настройки провайдера. Локальные файловые окна приложения меньше ограничены CORS, но для серверов, отклоняющих браузерные запросы, мост остаётся самым надёжным путём. Захватывайте звук рабочего стола или приложения либо направьте приложение на виртуальный аудиокабель.
Встроенный Kokoro в настольном приложении Приложение может использовать свой локальный путь ninjafy.tts для Kokoro вместо зависимости только от загрузки модели в браузере. Звук воспроизводится приложением, поэтому используйте захват звука рабочего стола или приложения.
Не путайте проверку приложения с проверкой OBS. При нажатии Test внутри SSN проверка выполняется из приложения. Если вы скопировали dock.html URL в OBS, именно OBS должен подключиться к серверу озвучивания и воспроизвести звук.

Вариант 2 — собственный сервер озвучивания

Если нужны дополнительные голоса, клонирование или отдельный сервер для нескольких инструментов, можно запустить локальный сервер озвучивания. Social Stream Ninja подключается к нему через встроенную поддержку: OpenAI-совместимая конечная точка озвучивания — для локальных серверов API-ключ не нужен.

Требования: Docker Desktop должен быть установлен и запущен. Docker бесплатен для личного использования.

Три рекомендуемых варианта:

Сервер Модель GPU Диск Порт по умолчанию
Kokoro-FastAPI Рекомендуется Kokoro 82M Необязательно ~2 ГБ 8880
openedai-speech (Piper) Лёгкий Piper TTS Только процессор <1 ГБ 8000
kokoro-web Kokoro 82M Необязательно ~2 ГБ 3000

Какой пакет подходит?

Пакет Главное преимущество Компромисс
Встроенный Kokoro Лучший первый вариант: без сервера, высокое качество, приватность, работа в браузере и настольном приложении. Без клонирования голоса.
Kokoro-FastAPI OpenAI-совместимый сервер, простая настройка Docker, процессор или GPU, много голосов Kokoro. Настоящего клонирования нет; смешивание и настройка голосов зависят от сборки сервера.
openedai-speech Лёгкая OpenAI-совместимая конечная точка; Piper удобен для процессора, а XTTS добавляет клонирование с ориентиром примерно на 4 ГБ видеопамяти. В репозитории указано, что проект в основном устарел: он может быть полезен, но не стоит рассчитывать на его развитие.
Серверы Chatterbox Клонирование голоса, варианты веб-интерфейса, OpenAI-совместимые API и инструменты для длинных текстов. В некоторых сборках CUDA/GPU работает стабильнее процессора; настройка зависит от ответвления сервера.
GPT-SoVITS Хорошее клонирование и управление по коротким образцам с поддержкой расшифровки. По умолчанию несовместим с OpenAI; используйте режим моста SSN.
F5-TTS Естественное клонирование без обучения по образцу WAV и расшифровке. Официальный проект не предоставляет простую конечную точку OpenAI; используйте обёртку или режим моста.
Qwen3-TTS Современные функции клонирования и создания голосов, включая небольшие модели 0.6B/1.7B. В первую очередь библиотека или демонстрация; для SSN нужна обёртка.
MisoTTS Высококачественная генерация речи по описанию. Не подходит для локального запуска с 6 ГБ видеопамяти; при необходимости используйте удалённое или собственное размещение.

Как работает клонирование голоса

Клонирование голоса — не отдельный режим SSN, а функция некоторых локальных серверов озвучивания. SSN отправляет текст чата на локальную конечную точку; сервер выбирает клонированный голос из сохранённого образца, профиля голоса или настроек моста.

Типичный процесс

  1. Запишите чистый образец: обычно от 3 до 30 секунд речи одного человека с минимальным фоновым шумом.
  2. Некоторым движкам также нужна точная расшифровка этого образца.
  3. Локальный сервер преобразует образец в описание говорящего, эмбеддинг или профиль голоса.
  4. SSN отправляет текст чата на конечную точку с помощью ttsprovider=customtts.
  5. Сервер возвращает воспроизводимый аудиофайл, обычно WAV или MP3, и SSN проигрывает его в док-панели или источнике браузера.
Используйте голоса только с согласия владельцев. Клонированный голос может звучать как реальный человек, поэтому используйте только свой голос либо голоса с разрешением владельца или явной лицензией на такое использование.
По умолчанию XTTS-v2 предназначен для некоммерческого использования. Coqui Public Model License разрешает только некоммерческое использование модели и её результатов. Трансляция с монетизацией может не соответствовать этому условию, поэтому перед коммерческим использованием XTTS-v2 проверьте лицензию или получите отдельное разрешение.

При 6 ГБ видеопамяти или меньше сначала выбирайте небольшие модели клонирования без обучения и OpenAI-совместимые серверы. Более крупные модели тоже могут работать через ту же конечную точку SSN, если пользователь размещает их на другом компьютере.

Вариант Клонирование голоса Помещается в 6 ГБ видеопамяти Путь API для SSN
Qwen3-TTS 0.6B Base Образец аудио длиной 3 секунды Скорее всего Используйте OpenAI-совместимую обёртку, затем ttsprovider=customtts
XTTS-v2 / openedai-speech Голоса по коротким образцам WAV Да, около 4 ГБ по данным openedai-speech /v1/audio/speech
Chatterbox Turbo / Server Клонирование по образцу аудио Скорее всего при Turbo или небольших фрагментах OpenAI-совместимые сборки сервера или мост
GPT-SoVITS 5 секунд без обучения, 1 минута с небольшим обучением Скорее всего при fp16 или облегчённой установке Используйте scripts/local-tts-bridge.cjs --mode gptsovits
F5-TTS Образец WAV и расшифровка Возможно; зависит от сборки и вокодера Используйте OpenAI-совместимую обёртку или --mode f5 для серверных обёрток F5-TTS
MisoTTS 8B Аудиоконтекст для генерации Нет; проект рекомендует 24 ГБ видеопамяти Только удалённая или собственная конечная точка
Лучший формат конечной точки для SSN: принимают POST /v1/audio/speech с { model, input, voice, response_format, speed } и возвращают воспроизводимый аудиофайл. Это охватывает OpenAI, Coqui/XTTS, обёртки Kokoro и Qwen и большинство прокси-сервисов.

Требования к компьютеру

Это практические ориентиры, а не строгие гарантии. Версия модели, квантование, длина текста, образ Docker и фоновые приложения могут менять расход памяти.

Вариант Минимальная практическая конфигурация Подходящий вариант Примечания
Системное озвучивание / eSpeak Любой современный ПК Любой ПК Быстро, низкое качество, без клонирования.
Встроенный Kitten Слабый процессор, 4 ГБ ОЗУ Современный процессор ноутбука, 8 ГБ ОЗУ Небольшая модель ONNX, быстрый запуск.
Встроенный Piper Современный процессор, 4–8 ГБ ОЗУ Современный процессор, 8 ГБ ОЗУ Хороший нейросетевой голос с низкими требованиями к ресурсам.
Встроенный Kokoro Современный процессор, 8 ГБ ОЗУ GPU с поддержкой WebGPU или быстрый процессор, 8–16 ГБ ОЗУ Лучшее качество без настройки. При первом запуске скачиваются файлы модели.
Kokoro-FastAPI Хост Docker с процессором, 8 ГБ ОЗУ GPU NVIDIA необязателен, 8–16 ГБ ОЗУ Хороший локальный сервер, если загрузка модели в браузере неудобна.
openedai-speech Piper Процессор, 4–8 ГБ ОЗУ Процессор, 8 ГБ ОЗУ Лёгкий OpenAI-совместимый сервер.
openedai-speech XTTS GPU NVIDIA примерно с 4 ГБ видеопамяти, 8–16 ГБ ОЗУ GPU NVIDIA с 6 ГБ+, 16 ГБ ОЗУ Путь клонирования голоса; на процессоре возможно, но медленно.
Серверы Chatterbox Некоторые сборки работают на процессоре, но медленно GPU NVIDIA с 6 ГБ+, 16 ГБ ОЗУ При клонировании или обработке длинного текста используйте GPU.
GPT-SoVITS / F5-TTS / Qwen3-TTS На процессоре только для проверки, медленно GPU NVIDIA с 6 ГБ+ для небольших или оптимизированных моделей, 16 ГБ ОЗУ Важны выбор обёртки и размер модели. Настройка потребует больше усилий.
MisoTTS 8B Не рекомендуется локально при 6 ГБ видеопамяти 24 ГБ видеопамяти или удалённый хост Для интерактивного использования репозиторий рекомендует GPU с большим объёмом видеопамяти.

Примечания о проверенных серверах

Это варианты собственного сервера клонирования, проверенные на совместимость с SSN. Путь локальной конечной точки проверен с обоими dock.html и featured.html.

SSN принимает прямые двоичные аудиоответы, JSON с аудио в base64 и JSON с URL аудио. Текущее воспроизведение через собственную или локальную конечную точку сначала буферизует полученный звук; постепенное потоковое воспроизведение пока не поддерживается.

Сервер Путь SSN Примечания
openedai-speech Напрямую или через мост Совместимый с OpenAI /v1/audio/speech. Режим Piper проверен на настоящем синтезе с помощью процессора из dock.html и featured.html, напрямую и через мост. При запуске из исходников в Windows убедитесь, что папка Scripts виртуального окружения находится в PATH , чтобы piper.exe и ffmpeg.exe можно было найти.
chatterbox-tts-api Напрямую или через мост Совместимый с OpenAI /v1/audio/speech. Для клонирования используется настроенный образец аудио. Формат API проверен напрямую и через мост.
Chatterbox-TTS-Server Напрямую или через мост OpenAI-совместимая конечная точка и веб-интерфейс. Проверено с настоящим синтезом на процессоре с использованием Emily.wav из dock.html и featured.html, напрямую и через мост.
GPT-SoVITS Режим моста Запустите мост SSN с --mode gptsovits; целевой сервер — /tts, а не OpenAI-совместимый.
F5-TTS_server Режим моста Запустите мост SSN с --mode f5; целевой сервер использует GET /synthesize_speech/.
Официальный F5-TTS Нужна обёртка В первую очередь CLI, Gradio и сокет-сервер. Используйте OpenAI-совместимую обёртку или режим моста F5 с обёрткой.
Qwen3-TTS Нужна обёртка В первую очередь библиотека и демонстрация Gradio. Хороший кандидат для небольшой OpenAI-совместимой обёртки вокруг generate_voice_clone.
MisoTTS Только удалённое или собственное размещение Клонирование поддерживается, но модель 8B не рассчитана на 6 ГБ видеопамяти, а в репозитории нет локальной REST-конечной точки.

Настройка Kokoro-FastAPI

Kokoro-FastAPI запускает модель Kokoro 82M как локальный сервер с OpenAI-совместимым API. Работает на процессоре без GPU и обеспечивает отличное качество голоса.

Установка через Docker

Откройте терминал: командную строку, PowerShell или Terminal — и выполните одну из команд:

Процессор (работает на любом компьютере):

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

GPU (только NVIDIA — синтез быстрее):

docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
Первый запуск: Docker скачает образ размером около 1,5–2 ГБ. Это происходит один раз. После этого сервер запускается за несколько секунд.

Проверьте работу

Откройте браузер и перейдите по адресу http://localhost:8880/web/— откроется веб-интерфейс для проверки голосов.

Доступные голоса

Доступно более 67 голосов. Несколько примеров:

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)

Посмотреть и проверить все голоса можно на http://localhost:8880/web/ после запуска сервера.

URL SSN

Если Kokoro-FastAPI находится на том же компьютере, что и OBS:

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

Если Kokoro-FastAPI находится на другом компьютере, замените 192.168.x.x IP-адресом этого компьютера в локальной сети:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://192.168.x.x:8880/v1/audio/speech&voiceopenai=af_bella
Имена голосов Kokoro отличаются от имён голосов OpenAI. Для Kokoro-FastAPI используйте голоса вроде af_bella, af_sarah, am_adam, или bf_emma. Такие имена, как echo, nova, и alloy — имена в стиле OpenAI или openedai-speech; они могут не работать с Kokoro.

Не останавливайте сервер

Чтобы Kokoro-FastAPI автоматически работал в фоне, используйте флаг перезапуска Docker:

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

Теперь сервер будет автоматически запускаться вместе с Docker Desktop после каждой перезагрузки.

Настройка openedai-speech (Piper и XTTS-v2)

openedai-speech предоставляет совместимую с OpenAI конечную точку /v1/audio/speech , которая нужна Social Stream. Небольшой образ запускает Piper на процессоре; полный образ умеет клонировать голос через XTTS-v2 на поддерживаемом GPU.

Архивный проект: openedai-speech был архивирован в январе 2026 года и описывает себя как в основном устаревший. Он остаётся полезным примером совместимости, но больше не поддерживается. Используйте его локально и не открывайте его порт без аутентификации в общий интернет.

Вариант A: лёгкий Piper

Используйте этот вариант для сервера озвучивания только на процессоре размером менее 1 ГБ. XTTS-v2 и клонирование голоса в него не входят.

Установка через Docker Compose

1
Клонируйте репозиторий или создайте папку со следующим docker-compose.min.yml. Либо выполните приведённые ниже команды напрямую.
2
Запустите минимальный образ только с Piper:
docker run -d --restart unless-stopped \ -p 8000:8000 \ ghcr.io/matatonic/openedai-speech-min

Примечание об установке из исходников в Windows

Если вы запускаете openedai-speech из локальной копии исходников, а не через Docker, добавьте папку скриптов виртуального окружения в PATH перед запуском сервера. Иначе запросы могут возвращать HTTP 500, поскольку сервер не находит 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

Доступные голоса

openedai-speech использует имена голосов в стиле OpenAI, сопоставленные голосам 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

Вариант B: клонирование голоса XTTS-v2

XTTS-v2 — модель, а не веб-API. Используйте полный сервер openedai-speech для загрузки модели, выбора сохранённого образца голоса, получения текста чата из SSN и возврата воспроизводимого аудио. Сервер указывает практический ориентир около 4 ГБ видеопамяти GPU; работа на процессоре возможна, но медленна.

Не используйте openedai-speech-min для XTTS-v2. Минимальный образ содержит только Piper. Для XTTS-v2 нужны полная установка и model=tts-1-hd в каждом запросе речи.
1
Клонируйте архивный сервер, создайте файл окружения и запустите полную конфигурацию Docker Compose с поддержкой GPU:
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 вместо Copy-Item. Docker должен иметь доступ к поддерживаемому GPU. Модель скачивается при первом использовании.

2
Подготовьте чистый образец с согласия владельца голоса. Для начала подойдёт монофонический WAV 22050 Гц длительностью от 6 до 30 секунд:
ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
3
Добавьте клонированный голос в существующий раздел tts-1-hd в config/voice_to_speaker.yaml:
tts-1-hd: me: model: xtts speaker: voices/me.wav language: en

Сохраните все голоса, уже перечисленные в tts-1-hd. Измените me на имя голоса, которое SSN должен отправлять, и при необходимости укажите правильный код языка XTTS.

4
Перезапустите сервер, затем направьте на него док-панель или оверлей выбранного сообщения 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 требуется для XTTS-v2. Если он не указан, Social Stream отправляет значение по умолчанию tts-1, и openedai-speech вместо этого выбирает Piper. Значение voiceopenai должно совпадать с именем клонированного голоса в voice_to_speaker.yaml.

Если браузер или OBS блокирует прямой запрос, запустите Мост локального озвучивания на компьютере с OBS; сохраняйте параметры модели и голоса, меняя openaiendpoint на http://127.0.0.1:8124/v1/audio/speech.

Мост локального озвучивания

Мост — небольшой локальный помощник. Он принимает браузерный запрос SSN, обращается к вашему серверу озвучивания, затем возвращает звук в SSN с подходящими браузеру заголовками.

Самое простое правило: запускайте мост на том же компьютере, что и OBS. Тогда OBS сможет использовать http://127.0.0.1:8124/v1/audio/speech, даже если сам сервер озвучивания находится на другом компьютере.
Схема: OBS обращается к локальному мосту, а мост — к серверу озвучивания
Источник «Браузер» OBS обращается к мосту на компьютере с OBS. Затем мост может вызвать Kokoro-FastAPI, openedai-speech или другой сервер.

Папка для самостоятельного запуска — local-tts-bridge/; см. README моста для всех параметров запуска.

OpenAI-совместимый прокси

Windows PowerShell, если сервер озвучивания находится на этом компьютере:

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

Windows PowerShell, если сервер озвучивания находится на другом компьютере:

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

Терминал macOS/Linux:

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

Затем направьте в OBS dock.html URL на мост:

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

Режим прокси GPT-SoVITS

GPT-SoVITS использует собственный /tts формат JSON, поэтому мост преобразует OpenAI-совместимый запрос SSN в тело запроса 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

Режим прокси сервера F5-TTS

Некоторые серверные обёртки F5-TTS предоставляют /synthesize_speech/?text=...&voice=... вместо OpenAI-совместимой конечной точки. Мост может преобразовать запрос SSN в этот формат.

$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
Конечная точка моста: http://127.0.0.1:8124/v1/audio/speech. Измените порт с помощью SSN_TTS_BRIDGE_PORT=8125 при необходимости.

Подключение к Social Stream Ninja

Все перечисленные собственные серверы подключаются одинаково — через встроенную в Social Stream поддержку: Конечная точка OpenAI TTS с собственным локальным URL.

Параметры URL

Параметр Значение Описание
ttsprovider customtts или openai Используйте OpenAI-совместимый путь озвучивания. Укажите customtts для локальных и собственных конечных точек.
openaiendpoint http://localhost:8880/v1/audio/speech URL локального сервера; при необходимости измените порт
speech en-US Включает озвучивание на английском
voiceopenai af_bella Имя голоса (зависит от сервера)
openaiformat mp3 Формат аудио: mp3, wav, opus, flac
openaispeed 1.0 Скорость речи (0.5–2.0)
Альтернативные адреса конечной точки: customttsendpoint и localttsendpoint тоже работают. customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, и localttsformat принимаются как альтернативные имена полей в стиле OpenAI.
Прежде чем искать проблему со звуком, проверьте конечную точку и голос. openaiendpoint должен быть доступен со страницы, воспроизводящей речь, а voiceopenai должен соответствовать голосу, поддерживаемому сервером. Kokoro-FastAPI использует имена вроде af_bella; openedai-speech часто использует имена вроде nova или echo.

Полные примеры 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

Дополнительные варианты озвучивания

Работает с любым провайдером озвучивания, включая локальные серверы:

Параметр Пример Описание
simpletts &simpletts Пропускать «говорит» — читать только сообщение
simpletts2 &simpletts2 Полностью пропускать имена пользователей
volume &volume=0.8 Громкость (0.0–1.0)
skipmessages &skipmessages=3 Читать только каждое третье сообщение
ttscommand &ttscommand=!say Читать только сообщения, начинающиеся с !say
readevents &readevents Также читать подписки, пожертвования и другие события
ttsquick &ttsquick=100 Намеренно обрывает речь после указанного числа символов. Уберите параметр, если сообщения обрезаются.
API-ключ не нужен. При использовании локального сервера с URL вне openai.com Social Stream Ninja отправляет запрос без заголовка Authorization. Настраивать ключ не нужно.

Встроенные браузерные варианты, которые стоит поддерживать

SSN уже поддерживает системное и браузерное speechSynthesis, встроенные Kokoro, Piper, Kitten и eSpeak. Из будущих браузерных дополнений полезнее всего были бы выбор устройства вывода звука там, где setSinkId доступен, больше голосов Piper и отдельный путь постепенного потокового воспроизведения для серверов, умеющих передавать фрагменты аудио.

Передача звука в OBS

Способ захвата озвучивания в OBS зависит от того, как вы запускаете Social Stream Ninja.

Способ 1 — источник «Браузер» OBS Рекомендуется

Это самый простой способ, подходящий для всех провайдеров озвучивания (встроенный и собственный сервер).

1
В OBS добавьте новый Источник «Браузер»
2
Укажите в URL свою dock.html URL с параметрами озвучивания
3
Проверьте «Управлять аудио через OBS» в настройках источника браузера
4
Нажмите ОК— звук озвучивания появится в OBS как аудиоисточник, который можно настраивать и маршрутизировать
5
Один раз нажмите на источник браузера в предпросмотре, чтобы разрешить автоматическое воспроизведение звука
Почему это работает: И встроенное озвучивание, и озвучивание через собственный сервер воспроизводят звук через аудиоконтекст браузера, а не системный синтез речи. OBS может напрямую захватывать звук браузера при включённом параметре «Управлять аудио через OBS».

Способ 2 — настольное приложение SSN и звук рабочего стола

Если вы используете отдельное настольное приложение Social Stream Ninja, а не источник «Браузер» OBS:

1
Звук озвучивания воспроизводится приложением через системные динамики или наушники
2
В OBS добавьте Захват входного аудиопотока или Захват звука рабочего стола источник
3
Чтобы отделить озвучивание от остальных звуков рабочего стола, используйте виртуальный аудиокабель:
  • Windows: VB-Audio Virtual Cable (бесплатно)
  • Установите CABLE Input как выход для SSN в настройках звука Windows
  • Захват CABLE Output в OBS через захват входного аудиопотока

Ссылки по маршрутизации звука в Windows

Маршрутизация отдельных приложений в Windows 10

1
Открыть Параметры звука > Параметры устройств и громкости приложений.
2
Найдите браузер или SSN в списке приложений.
3
В Output выберите CABLE Input (VB-Audio Virtual Cable).
4
В OBS добавьте Захват входного аудиопотока и выберите CABLE Output.

Маршрутизация отдельных приложений в Windows 11

1
Открыть Параметры > Система > Звук > Микшер громкости.
2
Найдите браузер или приложение SSN.
3
В Output device выберите CABLE Input (VB-Audio Virtual Cable).
4
В OBS добавьте Захват входного аудиопотока и выберите CABLE Output.

Программа Audio Router

Audio Router может направлять отдельное приложение на виртуальный кабель, но это старая программа. Если работает маршрутизация отдельных приложений Windows, лучше использовать её.

1
Установите Audio Router.
2
Направьте браузер или SSN на CABLE Input.
3
В OBS захватывайте CABLE Output.

Расширенная маршрутизация Voicemeeter

Voicemeeter лучше всего подходит, когда нужно слышать озвучивание локально, направлять его в OBS и отделять от музыки и звуков игры.

1
Установите Voicemeeter и назначьте его устройством вывода Windows по умолчанию.
2
В Hardware Out выберите динамики или наушники.
3
Направьте виртуальный выход в OBS как источник захвата входного аудиопотока.
Системное озвучивание (?speech=en-US без провайдера) зависит от голосов, предоставляемых браузером. OBS может не предоставлять голоса либо показывать их без звука, доступного для захвата. Проверяйте речь и запись OBS отдельно. Используйте одного из провайдеров выше (kokoro, piperи другие) вместо этого.

Сравнительная таблица

Вариант Настройка Качество Личный OBS (источник «Браузер») Нужен GPU Стоимость
Встроенный Kokoro Нет ⭐⭐⭐⭐⭐ Да Да Нет (с ним быстрее) Бесплатно
Встроенный Piper Нет ⭐⭐⭐⭐ Да Да Нет Бесплатно
Встроенный Kitten Нет ⭐⭐⭐ Да Да Нет Бесплатно
Встроенный eSpeak Нет ⭐⭐ Да Да Нет Бесплатно
Kokoro-FastAPI Docker ⭐⭐⭐⭐⭐ Да Да Нет (необязательно) Бесплатно
openedai-speech Docker ⭐⭐⭐⭐ Да Да Нет Бесплатно
ElevenLabs API-ключ ⭐⭐⭐⭐⭐ Нет Да Нет Платные тарифы
Системное озвучивание Нет ⭐⭐ Да Нет* Нет Бесплатно

* Для захвата системного озвучивания в OBS нужна маршрутизация через виртуальный аудиокабель.

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

Наглядный список проверок при неполадках локального озвучивания
Если озвучивание работает в одном месте, но не в другом, последовательно проверьте компьютер, конечную точку, голос, разрешение браузера и захват звука OBS.

Проверка в SSN работает, но в OBS нет звука

Проверка приложения доказывает только его доступ к серверу. Источник «Браузер» OBS должен отдельно подключиться к конечной точке и воспроизвести звук.

Читается только первая буква или несколько первых слов

Локальный сервер не отвечает

CORS или локальная сеть заблокированы

Если браузер сообщает о блокировке CORS, доступа к локальной или частной сети либо об ошибке fetch, запрос может вообще не дойти до сервера озвучивания.

Неверный голос или голос не найден

Звук воспроизводится, но OBS его не захватывает

Образ Docker не найден

Теги образов Docker могут меняться. Если команда из этого руководства перестала работать, проверьте актуальный тег на странице проекта:

Другие варианты озвучивания: О платном облачном озвучивании (ElevenLabs, Google Cloud, Speechify) и параметрах URL см. раздел Руководство по голосам озвучивания.