// obs setup

Add LiveAudio captions to OBS in five steps.

LiveAudio renders into OBS through a Browser source that loads the included subtitulos_obs.html overlay and listens to a local WebSocket (ws://127.0.0.1:8765). Create the source, size it 1920×200, keep it always running, match the port, and start the system. Windows and Linux.

// the five steps

The exact Browser-source flow.

  1. // browser source

    Add a Browser source in OBS

    In OBS, go to Sources → + → Browser. This creates the surface that LiveAudio draws captions onto inside your scene.

    Sources → + → Browser

  2. // local overlay

    Point it at subtitulos_obs.html and size it 1920×200

    Choose Local file and select subtitulos_obs.html (it ships in liveaudio/assets/). Not sure where that is? On the installed app it lives under your LiveAudio data folder — on Windows open %LOCALAPPDATA%\LiveAudio\data, on Linux ~/.local/share/liveaudio/data, then go into liveaudio/assets/. Set the source size to Width 1920 and Height 200 so the caption ribbon spans the bottom of a 1080p canvas.

    1920×200

  3. // keep alive

    Disable "Shut down source when not visible"

    In the Browser source properties, turn off "Shut down source when not visible" (and "Refresh browser when scene becomes active"). This keeps the WebSocket connection open so captions never drop when you switch scenes.

    turn OFF "shut down when not visible"

  4. // port match

    Match the WebSocket port (default 8765)

    LiveAudio broadcasts on ws://127.0.0.1:8765 by default. To change it, set ws_port in config.json; the OBS overlay reads its port from the ?port=XXXX query in the source URL. Keep both sides on the same port.

    ws://127.0.0.1:8765 custom port: set ws_port + ?port=XXXX

  5. // go live

    Apply changes, then START SYSTEM

    In LiveAudio pick a profile, audio device, CPU or CUDA, and a Whisper model, then click Apply changes and START SYSTEM. Speak — captions appear in the OBS Browser source within about a second.

    START SYSTEM

// the signal path

How the caption signal reaches OBS.

LiveAudio transcribes locally and broadcasts subtitle JSON over a local WebSocket. OBS connects through the included overlay, but any HTML or WebSocket client on localhost can receive the same broadcast. Connections are accepted only from localhost, with no authentication.

LiveAudio subtitle JSON
ws://127.0.0.1:8765
OBS Browser source
Any localhost client

// websocket payload

What each caption frame contains.

Every caption is a small JSON frame broadcast on the local WebSocket. These are the documented fields you can read in your own overlay or client.

Every caption is a small JSON frame broadcast on the local WebSocket. These are the documented fields you can read in your own overlay or client.
field description
id Monotonic caption id for ordering.
text The transcribed caption text.
style Display style hint for the overlay.
created_at When the audio segment was captured.
processed_at When transcription finished.
queue_delay Seconds spent waiting in the queue.
total_delay End-to-end delay, capture to broadcast.
latency Transcription latency in seconds.
is_replay True when the frame is a backlog replay.
catchup_interval_sec Spacing used when replaying backlog.

Latency is low and tunable — sub-second to about one second on a typical setup (example frame: total_delay ~1.3s, latency ~1.1s), not milliseconds.

// download

Get LiveAudio and wire up OBS today.

Free & open-source (MIT). No subscription, no API key. You only pay your own electricity — hardware not included. Windows and Linux.

Download LiveAudio v1.2.0 (free)
v1.2.0 Detecting OS…
Download LiveAudio v1.2.0 (free)