Nodes/Confucius4-R2T2 Q8 ASR/Confucius4 Q8 Loader
ComfyUI Node

Confucius4 Q8 Loader

The node that has to run before any of this works

By T8mars·Created 21 days ago·Updated 9 days ago· 15
Confucius4 Q8 Loader
    • model
    • status
    ◄n_ctx8192►
    ◄n_batch1024►
    ◄n_threads8►
    ◄gpu_layers-1►

    Confucius4-R2T2 is NetEase Youdao's speech-recognition model, and this pack is T8mars' ComfyUI wrapper around it. The Loader is the price of admission: it transcribes nothing, it just stands up the inference backend that every other node in the pack points at. Its model output feeds Transcribe, Live Microphone, and Unload, and that's the whole job.

    Why the "loader" is its own thing here

    The upstream model runs on vLLM. You do not want vLLM's dependency tree anywhere near a ComfyUI environment you actually use - that road ends in a week of pip whack-a-mole, and ComfyUI's whole dependency story is already the ecosystem's most common complaint (comfyui-ecosystem.md § ComfyUI Manager). So the pack sidesteps it: a separate Python 3.12 virtualenv under .runtime/worker, started as its own process, spoken to over a loopback HTTP port with a token that's regenerated on every boot. Your ComfyUI Python never imports any of it.

    That's the real function of this node. It starts the worker, points it at the pinned Q8 pair, and hands you back a handle. If the worker venv isn't there, it fails loudly instead of half-working - and yes, you can point it at a different interpreter with the R2T2_WORKER_PYTHON environment variable if you set the runtime up somewhere unusual.

    The four numbers

    • n_ctx (default 8192, range 2048–32768) - the inference context window. There's a trap in the README worth repeating: raising this does not stop the pack from chunking long files, and it does not decide how many minutes of audio you can feed. It's the context for one segment.
    • n_batch (default 1024) - decode batch size. Leave it.
    • n_threads (default 8) - CPU threads for the non-GPU parts.
    • gpu_layers (default -1) - -1 offloads everything to the GPU, which is what you want. 0 runs it on CPU, which is technically possible and practically a science experiment.

    Outputs are model (type R2T2_MODEL, wire it everywhere downstream) and status, a plain string telling you which decoder and projector were loaded. Under the hood the handle also carries the file names, the model fingerprint, and SHA-256s for both files, which matter for the reason below.

    Q8, and why you shouldn't go shopping for a smaller quant

    GGUF's ladder tops out at Q8, which is basically fp16 at half the size - the tier where quantization stops being a quality decision (gguf.json). This pack ships exactly one rung of it: the official Confucius4-R2T2-Q8_0.gguf plus the mmproj audio projector, about 2.19 GB together. The loader verifies size, GGUF header, and SHA-256, and it will not substitute a different GGUF you drop in the folder. So if you were planning to swap in a Q4 to save VRAM: not supported, and the error will tell you so.

    Install (this is the part that isn't one click)

    Windows and NVIDIA CUDA only, per the README. Find Confucius4-R2T2 Q8 ASR in ComfyUI Manager, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/T8mars/comfyui-confucius-r2t2-t8
    

    That gets you code. It does not get you a runtime. In PowerShell, from the node folder:

    .\scripts\setup_worker_windows.ps1
    

    Prerequisites: Python 3.12, Git, CMake, Visual Studio 2022 C++ Build Tools, and CUDA Toolkit 12.8. The script builds the worker venv (aiohttp, numpy, onnxruntime, kaldi-native-fbank, kaldiio, pybind11, soundfile, soxr), clones llama.cpp at a pinned commit, downloads and verifies the ~2.19 GB of weights plus the FireRedVAD ONNX assets, then compiles a CUDA extension. Expect compile time, not a coffee break.

    The default build targets CUDA architecture 120, i.e. RTX 50 series. On anything older, build for your own card:

    .\scripts\setup_worker_windows.ps1 -SkipNativeBuild
    .\scripts\build_native_windows.ps1 -CudaArch 89   # 4090; 86 for a 3090
    

    Then restart ComfyUI. Weights and runtime live in the node folder under models/ and .runtime/, both gitignored.

    Where people get burned

    "Isolated worker Python not found." The setup script never ran, or it ran with a different Python than the one you expected. Rerun it from the node directory and watch the output.

    A build for the wrong architecture. The arch-120 default is the single most likely cause of odd behaviour on a 30- or 40-series card, and the README is upfront that other GPU architectures haven't been fully validated. Rebuild with your arch before blaming the model.

    Expecting the load to be free. The first load hashes those files and spins up the worker process; it's not instant. Subsequent runs skip the expensive parts, and the node returns the same handle.

    Assuming ComfyUI's own VRAM button covers this. It doesn't. The worker is outside ComfyUI's model list, which is exactly why the pack ships Confucius4 Unload Q8. Use it.

    If transcription itself is what you're after, the Loader is just step zero - Confucius4 Transcribe is where the actual work happens.

    CategoryConfucius4-R2T2

    Inputs (4)

    NameTypeDefaultDescription
    n_ctxINT81922048–32768—
    n_batchINT1024256–4096—
    n_threadsINT81–64—
    gpu_layersINT-1-1–99—

    Outputs (2)

    NameTypeDescription
    modelR2T2_MODEL—
    statusSTRING—