Nodes/ComfyUI Web Viewer/AUDIO Web Viewer @ vrch.ai
ComfyUI Node

AUDIO Web Viewer @ vrch.ai

Stream audio to a browser tab with a visualizer attached

By VrchStudio·Created 2 years ago·Updated 18 days ago· 356
AUDIO Web Viewer @ vrch.ai
  • audio
  • AUDIO
  • URL
channel1
server127.0.0.1:8188
sslfalse
refresh_interval5000
visualizer_typewaveform
fade_in_duration0
fade_out_duration0
crossfade_duration0
server_messages
save_settingsfalse
window_width1280
window_height960
show_urlfalse
dev_modefalse
extra_params
url

The AUDIO Web Viewer @ vrch.ai is the output half of the pack's audio story: it takes the AUDIO running through your workflow and plays it in a browser tab - with a built-in visualizer so you get something to look at while you listen. This is the node you hear in the pack's signature demos: the real-time voice clone setup where you record, hear your cloned voice play back, and watch a waveform dance along. Input audio in, browser window out, problem solved.

It's the audio cousin of the plain Web Viewer node, and it shares the same bones: it opens a page served by your ComfyUI instance and updates it on a refresh loop. The difference is that it's built to keep a continuous audio stream in sync rather than just display the newest file.

How it works

audio in, and the node streams it to a viewer tab whose address also comes out as a URL output. The display and transport details are all in the inputs:

  • visualizer_type - the eye candy: waveform, bars, circles, matrix, particles, spiral, waterball. Picking one is the whole "make it look cool" decision, and it's the most fun input on the node.
  • refresh_interval (ms) - how often the viewer re-pulls; lower is snappier, higher is kinder to a loaded machine.
  • fade_in_duration, fade_out_duration, crossfade_duration (ms) - smooth the audio in, out, and between clips instead of hard cuts. Set these when you're doing continuous playback of generated chunks and want it to feel like one performance.
  • channel (1–8) - which audio bus this viewer is tied to, keeping multiple viewers from stepping on each other.
  • server / ssl - where ComfyUI lives, same as the image Web Viewer.
  • save_settings - remember the viewer's UI state between sessions.
  • server_messages - a text banner the viewer can display (handy for a "now playing" label or a live caption).
  • window_width / window_height, show_url, dev_mode, extra_params, url - the usual viewer controls; url overrides the served page entirely if you want to host your own.

Outputs: AUDIO (the input passed through, so you can keep processing it downstream) and URL (the tab's address, if you want to display or log it).

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. FFmpeg is needed for the streaming/decoding path, so the README's FFmpeg troubleshooting applies (install the tool, ensure the ffmpeg-python package is the one installed, not a stray ffmpeg package).

Where people get tripped up

  • The usual browser rules. The viewer tab needs to be reachable over http (Chrome may need the --unsafely-treat-insecure-origin-as-secure flag), and if you're opening it from a non-local domain, launch ComfyUI with --enable-cors-header to avoid the origin-mismatch 403.
  • Silence when the channel doesn't match. If this viewer is on channel 2 but the audio source is feeding channel 1, nothing plays and nothing obviously errors. Keep channel numbers consistent across a workflow.
  • Latency is polling-based by design. For interactive voice work this is fine; for true realtime conversation latency you'd look at the pack's WebSocket path instead. This node is the polished, visual playback layer.

The canonical use remains the F5-TTS voice clone workflow: Audio Recorder → TTS → Audio Web Viewer, hear your clone, watch the waterball.

Categoryvrch.ai/viewer

Inputs (17)

NameTypeDefaultDescription
audioAUDIO
channelCOMBO18 options: 1, 2, 3, 4, 5, 6, +2
serverSTRING127.0.0.1:8188
sslBOOLEANfalse
refresh_intervalINT50001–10000
visualizer_typeCOMBOwaveform7 options: bars, circles, matrix, particles, spiral, waterball, +1
fade_in_durationINT00–10000
fade_out_durationINT00–10000
crossfade_durationINT00–10000
server_messagesSTRING
save_settingsBOOLEANfalse
window_widthINT1280100–10240
window_heightINT960100–10240
show_urlBOOLEANfalse
dev_modeBOOLEANfalse
extra_paramsSTRING
urlSTRING

Outputs (2)

NameTypeDescription
AUDIOAUDIO
URLSTRING