Atik sa a poko disponib nan lang ou, kidonk li parèt an angle.
You can control SermonWave in OBS without touching the dock: with hotkeys, or from a Stream Deck or Bitfocus Companion through obs-websocket. Everything here works with the dock closed. In the dock, Stream Deck & control sets when translation starts by itself and shows a short summary under Hotkeys and Stream Deck.
Who it's for#
Tech directors who already drive OBS with hotkeys, an Elgato Stream Deck, Bitfocus Companion or a similar controller.
Before you start#
- The plugin is installed and paired. See Pair OBS with SermonWave.
- For Stream Deck / Companion: the obs-websocket server is enabled in OBS (Tools → WebSocket Server Settings → Enable WebSocket server). It's built into OBS 28 and later.
- Your controller can send a raw obs-websocket request (for example Companion's OBS module with a custom request, or a Stream Deck plugin that supports
CallVendorRequest).
Hotkeys#
The plugin adds SermonWave entries to OBS Settings → Hotkeys:
- SermonWave: Start translation, SermonWave: Stop translation and SermonWave: Start / stop translation (toggle).
- Per language: SermonWave: Start translated stream … / Stop translated stream … and SermonWave: Start translated recording … / Stop translated recording ….
- Per language: SermonWave: Toggle language … adds or removes that language from the device's languages. This changes the device for everyone, like Save languages.
Assign keys there like any other OBS hotkey. A Stream Deck can press them with its OBS hotkey actions.
Often you don't even need them, because translation follows OBS:
- In the dock, under Stream Deck & control, set Translate when to Streaming, Recording or Streaming or recording. See Set up audio, languages and start/stop in OBS.
- In OBS Settings → Hotkeys, assign keys to OBS's built-in Start Streaming / Stop Streaming and Start Recording / Stop Recording.
- Pressing those keys now starts and stops translation, translated streams and translated recordings together.
obs-websocket vendor requests#
The plugin registers an obs-websocket vendor named sermonwave. Any obs-websocket client can call it with the standard CallVendorRequest request:
{
"requestType": "CallVendorRequest",
"requestData": {
"vendorName": "sermonwave",
"requestType": "get_state",
"requestData": {}
}
}
Languages are given as short codes, for example es, fr, pt.
Useful requests#
| Request type | Request data | What it does |
|---|---|---|
GetStatus | — | Pairing, connection, session state, device languages, each added language's stream/recording state and the hotkey names. |
Start / Stop / Toggle | wait (true/false, optional) | Starts, stops or toggles the translation session, like Start translation / Stop translation. With wait, the answer comes after SermonWave confirms (at most 10 s). |
StartTranslatedStream / StopTranslatedStream | language | Starts or stops one language's translated stream, like its Start / Stop button. |
StartTranslatedRecording / StopTranslatedRecording | language | Turns one language's recording copy on or off, like its REC button. |
ToggleLanguage | language | Adds or removes that language from the device's languages. Changes the device for everyone. |
get_state | — | Pairing, device number, device languages, caption language, health. |
get_outputs | — | Per language: stream/recording state, bitrate, dropped frames, re-sync progress, YouTube state and watch link. |
set_output | language plus any of the fields below | Changes one added language's settings. |
add_language | language | Same as Add language. |
remove_language | language | Same as Remove. |
set_sync_delay | sync_delay_ms (4000–15000) | Sets the Sync delay. |
set_languages | source_language, target_languages (list of {"code": "es"}) | Saves the device's languages, like Save languages. Changes the device for everyone. |
set_youtube_channel | channel | Saves Channel for /listen. |
youtube_state | — | YouTube sign-in and broadcast state. |
youtube_settings | privacy (unlisted, public, private), title_template | Sets YouTube privacy and title. |
youtube_keys | refresh (true/false) | Lists your channel's stream keys. |
collect_diagnostics | reason | Sends a diagnostics report to SermonWave support now. |
set_output fields#
All optional except language:
stream_now:"start"or"stop"— same as the language's Start / Stop button in the control bar.video_quality:auto,720p,1080p,480pormatch— the language's Video quality (match= Same as the main stream).stream_enabled,record_enabled,room(true/false) — Stream …, Record a … copy, Play … in the room.preset:youtube_rtmps,youtube_rtmps_backup,youtube_rtmp,facebook,custom; ordestination:youtube_autofor YouTube (automatic).server,key— server and stream key for a manual platform.sync_video,stream_captions,record_captions,captions_default,resync,keep_live(true/false).bg_db,bg_off,duck_db— Original audio level, Original audio Off, and Under translation level, in dB.
Examples#
Start the Spanish translated stream now:
{
"requestType": "CallVendorRequest",
"requestData": {
"vendorName": "sermonwave",
"requestType": "set_output",
"requestData": { "language": "es", "stream_now": "start" }
}
}
Toggle in-room playback of French on:
{
"requestType": "CallVendorRequest",
"requestData": {
"vendorName": "sermonwave",
"requestType": "set_output",
"requestData": { "language": "fr", "room": true }
}
}
Lower the original sound under the Spanish translation to −25 dB:
{
"requestType": "CallVendorRequest",
"requestData": {
"vendorName": "sermonwave",
"requestType": "set_output",
"requestData": { "language": "es", "duck_db": -25 }
}
}
The response comes back in the responseData of the reply. Requests like set_output answer {"ok": true} right away; check the result with get_outputs.
Troubleshooting#
The request fails with an unknown vendor. obs-websocket was not running when OBS loaded the plugin, or the plugin isn't installed. Enable the WebSocket server and restart OBS.
set_output returns ok: false. The language field is missing.
Nothing happens for a language. Make sure that language was added with Add language under Translated streams (or call add_language first). Per-language hotkeys appear in OBS Settings → Hotkeys once the language is offered by the device or added in the dock.
FAQ#
Do hotkeys work when the dock is closed?#
Yes. Hotkeys, obs-websocket requests and the automatic start and stop with your stream or recording all work with the dock closed.
Is the obs-websocket connection secure?#
It's local to your network. Keep Enable Authentication on in the WebSocket Server Settings and use the password in your controller.