OBS hotkeys and Stream Deck control بیٹا

آخری تازہ کاری 4 اکتوبر، 2026 کس کے لیے: Tech directors who automate OBS with hotkeys, Stream Deck or Companion

یہ مضمون ابھی آپ کی زبان میں دستیاب نہیں، اس لیے انگریزی میں دکھایا گیا ہے۔

اس صفحے پر

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:

  1. 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.
  2. In OBS Settings → Hotkeys, assign keys to OBS's built-in Start Streaming / Stop Streaming and Start Recording / Stop Recording.
  3. Pressing those keys now starts and stops translation, translated streams and translated recordings together.
OBS Settings > Hotkeys with the SermonWave entries and Start Streaming assigned

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 typeRequest dataWhat it does
GetStatus—Pairing, connection, session state, device languages, each added language's stream/recording state and the hotkey names.
Start / Stop / Togglewait (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 / StopTranslatedStreamlanguageStarts or stops one language's translated stream, like its Start / Stop button.
StartTranslatedRecording / StopTranslatedRecordinglanguageTurns one language's recording copy on or off, like its REC button.
ToggleLanguagelanguageAdds 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_outputlanguage plus any of the fields belowChanges one added language's settings.
add_languagelanguageSame as Add language.
remove_languagelanguageSame as Remove.
set_sync_delaysync_delay_ms (4000–15000)Sets the Sync delay.
set_languagessource_language, target_languages (list of {"code": "es"})Saves the device's languages, like Save languages. Changes the device for everyone.
set_youtube_channelchannelSaves Channel for /listen.
youtube_state—YouTube sign-in and broadcast state.
youtube_settingsprivacy (unlisted, public, private), title_templateSets YouTube privacy and title.
youtube_keysrefresh (true/false)Lists your channel's stream keys.
collect_diagnosticsreasonSends 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, 480p or match — 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; or destination: youtube_auto for 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.