Мне это нужно?
«Локальный» означает одно из двух: встроенный в 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 как Источник «Браузер». Именно эта страница создаёт звук.
- В свойствах включите Управлять аудио через OBS.
- Отправьте короткое тестовое сообщение, например
Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
Голоса, скорость и другие языки: настройки провайдеров. Предпочитаете кнопки? Используйте руководство по настройке.
Подключите свой сервер TTS
Сервер даёт больше голосов, клонирование или один голос для разных инструментов. SSN общается с ним как с Совместимый с OpenAI сервером речи. API-ключ не нужен.
- Запустите сервер. Kokoro-FastAPI проще всего.
- В SSN откройте список провайдеров 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 | Только процессор | <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 или библиотека).
Какой компьютер нужен?
Приблизительные ориентиры, не обещания. Размер модели, длина текста и другие приложения влияют на расход памяти.
| Вариант | Минимум | Комфортно |
|---|---|---|
| Системное озвучивание / 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 Piper | CPU, 4–8 ГБ ОЗУ | Процессор, 8 ГБ ОЗУ |
| openedai-speech XTTS | NVIDIA GPU ~4 ГБ, 8–16 ГБ ОЗУ | GPU NVIDIA с 6 ГБ+, 16 ГБ ОЗУ |
| Chatterbox | CPU в некоторых сборках, медленно | GPU NVIDIA с 6 ГБ+, 16 ГБ ОЗУ |
| GPT-SoVITS / F5-TTS / Qwen3-TTS | CPU для проверки, медленно | GPU NVIDIA с 6 ГБ+, 16 ГБ ОЗУ |
| MisoTTS 8B | Не при 6 ГБ | GPU 24 ГБ или удалённый хост |
Передать звук в OBS
Браузерный источник OBS (рекомендуется)
Работает со встроенными голосами и своим сервером.
- Добавьте Источник «Браузер» со своим
dock.htmlссылку TTS. - Включите Управлять аудио через OBS.
- Нажмите ОК. Теперь 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. Всё ещё заблокировано? Запустите мост на ПК с 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 ждёт полный ответ, затем воспроизводит. Делайте сообщения чата короткими.
Параметры ссылки для своего сервера
| Настройка | Пример | Что делает |
|---|---|---|
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