Этот комплект принимает 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-у, отправившему конкретное сообщение.
- Откройте настройки серверов Streamer.bot.
- Создайте WebSocket Custom Server.
- Установите порт
9090. - Запустите сервер.
Relay-код использует сервер с индексом 0:
private const int WebSocketConnectionIndex = 0;Если нужный Custom Server имеет другой индекс, измените эту константу в streamer.bot_sub-action.cs.
Не публикуйте WebSocket-порт в интернет без отдельной авторизации и защищённого подключения. Текущий протокол рассчитан на локальное использование.
-
Создайте новое Action, например
TTS WebSocket Relay. -
Добавьте trigger:
Core -> WebSocket -> Custom Server -> Custom Server Message -
Выберите тот же Custom Server, который работает на порту
9090. -
Добавьте sub-action
Core -> C# -> Execute C# Code. -
Откройте
streamer.bot_sub-action.cs, вставьте его содержимое в редактор C# и нажмитеCompile. -
Сохраните и включите Action.
Receiver автоматически переподключится и зарегистрируется. Поведение sender-а при разрыве соединения зависит от его реализации.
- Добавьте источник
Browser. - Включите
Local file/Локальный файл. - Выберите
test-receiver.html. - Включите
Control audio via OBS/Управлять звуком через OBS. - Нажмите
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.
| Параметр | Значение по умолчанию | Назначение |
|---|---|---|
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, указанным внутри страницы.
Чтобы воспроизводить одно сообщение одновременно в нескольких 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 снова запускался скрыто и подключался автоматически.
- Убедитесь, что WebSocket Custom Server запущен на порту
9090. - Убедитесь, что relay Action включён и C#-код успешно скомпилирован.
- Обновите Browser Source в OBS.
- Отправьте TTS-сообщение sender-ом в тот же канал.
- Проверьте микшер 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-кода.
В канале sender-а нет зарегистрированного receiver-а. Проверьте канал, адрес WebSocket и состояние Browser Source.
Если в URL присутствует debug, это штатное поведение: нажмите Connect вручную или удалите параметр debug.
Relay не нашёл исходный sender для указанного id. Это возможно после перезапуска или перекомпиляции relay-кода, при повторном использовании одного id разными sender-ами либо если ответ receiver-а пришёл слишком поздно.
Убедитесь, что вставлено полное содержимое streamer.bot_sub-action.cs, включая строки using. Код использует встроенную в Streamer.bot библиотеку Newtonsoft.Json.
При обновлении файлов:
- Замените
test-receiver.htmlи обновите Browser Source. - Повторно вставьте
streamer.bot_sub-action.csв C# sub-action. - Нажмите
Compileи сохраните Action. - Обновите receiver-ы в OBS, чтобы они переподключились и зарегистрировались заново.