Confucius4 Live Microphone
Real-time captions, with a Start button in the middle of it
- model
- text
- language
- result_json
- srt
This is the only node in the pack you have to click, and that's the whole story of it. Your browser microphone feeds a live streaming decode, the node shows the transcript as it grows, and when you're done you Run the graph to get the final text out. Word of warning up front: it is not a recorder, and it is not dictation into a text box. It's a snapshot reader with a Start button.
How the pieces fit
The node adds three buttons to itself: Start microphone, Stop and finalize, Cancel. Start asks the browser for mic permission, grabs the stream through an audio worklet that resamples it down to 16 kHz mono, and pushes it over a local WebSocket to ComfyUI's own endpoints. From there the isolated worker decodes in chunks, keeps a running transcript, and bumps a revision counter each time it publishes a finalized snapshot.
Then you press Run. The node doesn't have any audio input - at execution time it fetches the finished snapshot belonging to the session_id in the widget and returns it. Which is why "run it while still recording" doesn't produce partial text, it produces an error telling you to stop first. Mic access needs localhost or HTTPS; if you're hitting ComfyUI on a LAN IP over plain HTTP, the browser will refuse the mic, and the server checks the request origin too.
The inputs
model - from Confucius4 Q8 Loader.
language - the same twelve options as the file node, same advice: Auto unless you're mixing languages or getting flaky output.
context - the same free-text prompt field, same 8192-character ceiling. Set it before you hit Start; the session is created with whatever was there at click time.
session_id - filled in automatically when you press Start. Don't type in this box by hand.
revision - the snapshot counter. The node compares your widget value against the worker's, and refuses to hand you text from a stale revision. That's a feature: you get an error instead of silence that looks like a bad transcript.
stream_chunk_ms (default 320) - how much audio goes per step. Higher is gentler on latency spikes; the file node defaults to 160, this one defaults to 320 on purpose.
min_segment_seconds (0/4/8) - the shortest stretch that can be closed off as a segment. Leave it at 8 for ordinary speech. At 0, the segmenter is allowed to cut much sooner, and the result gets marked requires_review when boundaries were forced.
Outputs
text, language, and result_json - the same three as Transcribe, and result_json is what you feed to Confucius4 Save Transcript. The node's own status display tells you which state the session is in while you're talking, either idle, recording, or finalizing, and it will say OVERLOAD and stop the mic if the audio backlog passes about three seconds. That's usually a sign the GPU is busy with something else - or that you're running the decode on a machine that isn't keeping up.
Install
One install for the whole pack: ComfyUI Manager, search Confucius4-R2T2 Q8 ASR, then run scripts/setup_worker_windows.ps1 from the node directory in PowerShell on a Windows/NVIDIA box. The browser side is stock ComfyUI plus the pack's bundled JS - nothing extra to install, no extension, no port to open, since the endpoints register inside ComfyUI itself. Then drag workflows/confucius4_q8_live.json onto the canvas.
Where people get burned
"Click Start and Stop in the Live Session node before running the workflow." Exactly what it says - empty session_id.
"Live session is active; click Stop before workflow execution." You hit Run while the mic was still streaming. Stop and finalize first.
Restarting ComfyUI mid-capture. That kills the worker, and the session id belonged to the previous worker generation. Start over.
A stale browser tab. Session credentials for the browser side expire after roughly 75 minutes of inactivity, so a tab you started an hour ago may be talking to nothing.
Expecting production-grade live captions from a real microphone. The README is disarmingly honest here: the live Start/Stop path was validated with injected audio, physical-microphone capture and accuracy on long, uninterrupted natural speech are unverified, and forced segment boundaries get flagged requires_review. If you need a trustworthy transcript of something that matters, record it and use the offline path - that's the boring answer and it's the right one. Live is best treated as a monitor while you talk.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | R2T2_MODEL | — | |
| language | COMBO | 12 options: Auto, Chinese, English, Cantonese, Japanese, Korean, +6 | |
| context | STRING | — | |
| session_id | STRING | — | |
| revision | INT | 00–2147483647 | — |
| stream_chunk_msopt | INT | 320160–640 | — |
| min_segment_secondsopt | INT | 80–8 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| language | STRING | — |
| result_json | STRING | — |
| srt | STRING | — |