AUDIO WebSocket Channel Loader @ vrch.ai
Low-latency audio over WebSocket
- default_audio
- AUDIO
The AUDIO WebSocket Channel Loader @ vrch.ai is the pack's low-latency audio input: it receives audio being pushed to a channel over a WebSocket connection and hands it to the graph as AUDIO. Same channel-numbering idea as the plain AUDIO Web Viewer Channel Loader, but instead of pulling from the HTTP file-based path, this one listens on a WebSocket stream - which is the transport you want when audio is arriving continuously from a browser or another device and you can't afford polling delays.
Where does that matter? Real-time voice work. The pack's voice-clone and audio-picture-book workflows need the browser's mic audio to get into the graph with as little latency as possible - a record-then-send round trip is fine for a one-shot clip, but for streaming, WebSocket is the difference between "sounds like a radio" and "sounds like a conversation." This node is the receiving end of that streaming path.
How it works
Pick a channel (1–8) and the node subscribes to that channel on the WebSocket server at server (default 172.17.0.2:8001). Audio arriving on that channel becomes the AUDIO output. There's also an optional default_audio input - a fallback clip that plays when the channel is silent, which is useful for keeping a workflow from idling into nothing when no one is streaming. debug logs the connection and incoming chunks.
The one output, AUDIO, is the streamed audio - and since the node is marked as an output node, it works fine as a terminal stage in a chain that's purely about receiving.
Installing it
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/VrchStudio/comfyui-web-viewer
pip install -r comfyui-web-viewer/requirements.txt
Or install "ComfyUI Web Viewer" via ComfyUI Manager and restart. The WebSocket nodes do need FFmpeg on the system plus the ffmpeg-python package (in the requirements) to decode what arrives - the README's FFmpeg troubleshooting section applies here directly. If you see [Errno 2] No such file or directory: 'ffmpeg', that's an environment problem, not a node problem.
The gotcha
The default server is 172.17.0.2:8001, a Docker bridge address from the author's dev environment. Unless your ComfyUI genuinely runs in a container with that network layout, point this at your real host - 127.0.0.1:8001 for local, or the LAN IP of the machine running the WebSocket server. Leaving the default is the #1 reason this node shows up as "connected but silent."
Also keep the channel contract consistent: the sender must be pushing to the same channel number this loader listens on. Channel 3 in, channel 3 out - any mismatch gives you nothing and a lot of confusing debug logs.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| channel | COMBO | 1 | 8 options: 1, 2, 3, 4, 5, 6, +2 |
| server | STRING | 172.17.0.2:8001 | — |
| debug | BOOLEAN | false | — |
| default_audioopt | AUDIO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |