Skip to content

Knoot/websocket-relay

Repository files navigation

TTS-аудио через Streamer.bot и OBS

Этот комплект принимает TTS-аудио от WebSocket sender-а, передаёт его через Streamer.bot и воспроизводит в OBS Browser Source.

Для установки нужны два файла:

  • streamer.bot_sub-action.cs — relay-код для Streamer.bot;
  • test-receiver.html — аудиополучатель для OBS.

По умолчанию используется WebSocket ws://127.0.0.1:9090/ и канал default.

Как это работает

TTS sender -> Streamer.bot WebSocket Server -> OBS Browser Source

В одном канале может работать несколько sender-ов и несколько receiver-ов. Каждое аудиосообщение получают все receiver-ы соответствующего канала. ACK и результаты воспроизведения возвращаются только sender-у, отправившему конкретное сообщение.

1. Настройка WebSocket Server

  1. Откройте настройки серверов Streamer.bot.
  2. Создайте WebSocket Custom Server.
  3. Установите порт 9090.
  4. Запустите сервер.

Relay-код использует сервер с индексом 0:

private const int WebSocketConnectionIndex = 0;

Если нужный Custom Server имеет другой индекс, измените эту константу в streamer.bot_sub-action.cs.

Не публикуйте WebSocket-порт в интернет без отдельной авторизации и защищённого подключения. Текущий протокол рассчитан на локальное использование.

2. Добавление relay-действия

  1. Создайте новое Action, например TTS WebSocket Relay.

  2. Добавьте trigger:

    Core -> WebSocket -> Custom Server -> Custom Server Message
    
  3. Выберите тот же Custom Server, который работает на порту 9090.

  4. Добавьте sub-action Core -> C# -> Execute C# Code.

  5. Откройте streamer.bot_sub-action.cs, вставьте его содержимое в редактор C# и нажмите Compile.

  6. Сохраните и включите Action.

Receiver автоматически переподключится и зарегистрируется. Поведение sender-а при разрыве соединения зависит от его реализации.

3. Добавление receiver-а в OBS

Канал default

  1. Добавьте источник Browser.
  2. Включите Local file / Локальный файл.
  3. Выберите test-receiver.html.
  4. Включите Control audio via OBS / Управлять звуком через OBS.
  5. Нажмите OK.

Receiver работает без интерфейса, автоматически подключается к ws://127.0.0.1:9090/ и регистрируется в канале default.

Другой канал или адрес сервера

Чтобы использовать параметры, отключите Local file и укажите HTML как file:/// URL:

file:///C:/TTS/test-receiver.html?channel=alerts

Полный пример:

file:///C:/TTS/test-receiver.html?channel=alerts&socket-ip=127.0.0.1&soket-port=9090

Sender должен регистрироваться с таким же значением channel.

Параметры receiver-а

Параметр Значение по умолчанию Назначение
channel default Канал TTS. Все receiver-ы одного канала получают каждое аудиосообщение этого канала.
socket-ip 127.0.0.1 IP-адрес WebSocket Custom Server.
soket-port 9090 Порт WebSocket Custom Server. Такое написание сохранено для совместимости.
socket-port 9090 Допустимый вариант правильного написания порта.
debug отсутствует Показывает интерфейс и логи, но отключает автоподключение.

Параметры socket-ip и soket-port имеют приоритет над WebSocket URL, указанным внутри страницы.

Несколько receiver-ов

Чтобы воспроизводить одно сообщение одновременно в нескольких Browser Source, добавьте несколько receiver-ов с одинаковым каналом:

.../test-receiver.html?channel=alerts
.../test-receiver.html?channel=alerts

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

.../test-receiver.html?channel=alerts
.../test-receiver.html?channel=donations

Сообщения между разными каналами не пересекаются.

Режим диагностики

Добавьте параметр debug:

file:///C:/TTS/test-receiver.html?debug&channel=default

В OBS откройте контекстное меню Browser Source и выберите Interact / Взаимодействовать. В режиме debug:

  • отображаются состояние соединения, очередь и журнал;
  • автоподключение отключено;
  • для подключения нужно нажать Connect вручную.

После диагностики удалите debug, чтобы receiver снова запускался скрыто и подключался автоматически.

Проверка установки

  1. Убедитесь, что WebSocket Custom Server запущен на порту 9090.
  2. Убедитесь, что relay Action включён и C#-код успешно скомпилирован.
  3. Обновите Browser Source в OBS.
  4. Отправьте TTS-сообщение sender-ом в тот же канал.
  5. Проверьте микшер OBS и журнал Streamer.bot.

При успешной работе в журнале Streamer.bot появляются сообщения:

[TTS Relay] Registered receiver ...
[TTS Relay] Registered sender ...
[TTS Relay] Forwarding audio ...

Типовые проблемы

Звука нет

  • Проверьте, что Control audio via OBS включён.
  • Проверьте громкость и mute источника в микшере OBS.
  • Убедитесь, что sender и receiver используют одинаковый channel.
  • Убедитесь, что sender подключён к тому же IP и порту.
  • Обновите Browser Source после перезапуска или перекомпиляции relay-кода.

NO_RECEIVER_REGISTERED

В канале sender-а нет зарегистрированного receiver-а. Проверьте канал, адрес WebSocket и состояние Browser Source.

Receiver виден, но не подключается

Если в URL присутствует debug, это штатное поведение: нажмите Connect вручную или удалите параметр debug.

UNKNOWN_MESSAGE_ROUTE

Relay не нашёл исходный sender для указанного id. Это возможно после перезапуска или перекомпиляции relay-кода, при повторном использовании одного id разными sender-ами либо если ответ receiver-а пришёл слишком поздно.

Ошибка компиляции C#

Убедитесь, что вставлено полное содержимое streamer.bot_sub-action.cs, включая строки using. Код использует встроенную в Streamer.bot библиотеку Newtonsoft.Json.

Обновление

При обновлении файлов:

  1. Замените test-receiver.html и обновите Browser Source.
  2. Повторно вставьте streamer.bot_sub-action.cs в C# sub-action.
  3. Нажмите Compile и сохраните Action.
  4. Обновите receiver-ы в OBS, чтобы они переподключились и зарегистрировались заново.

About

sender <-> streamer.bot(relay) <-> receiver

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors