ComfyUI Node

Kokoro TTS

TTS in ComfyUI that doesn't need a GPU or a cloud account

By Burgstall-labs·Created 2 years ago·Updated 2 years ago· 37
Kokoro TTS
    • audio
    textCheck out BS Labs youtube channel: https://www.youtube.com/channel/UCcYXt5R6tpQgKYxULWYD95Q
    speakeraf_sarah

    Text-to-speech has always been the awkward corner of ComfyUI. Everyone's building video, nobody's building the voiceover, and the usual workaround is leaving the graph to record your own narration or pulling in some cloud API. The Kokoro TTS node fixes that with two inputs and one surprising fact: it runs happily on CPU, fully local, no key, no account. It's a wrapper around Kokoro-82M, the 82-million-parameter model that keeps winning blind listening tests against models twenty times its size, and it sounds far better than a model that small has any right to.

    The name is the giveaway - this is the ONNX port, via thewh1teagle's kokoro-onnx, so it doesn't need the PyTorch heavy lifting that most TTS stacks demand. You type a line, pick a voice, get an audio output you can drop straight into SaveAudio or merge into a video pipeline. It's the node you reach for when you want a narration track and your GPU is busy doing the actual generating.

    How it works

    Under the hood it's a thin wrapper. The node loads kokoro-v0_19.onnx and voices.json from its own folder, hands your text to kokoro.create(), and converts the resulting numpy array into ComfyUI's standard AUDIO format - a waveform tensor plus a sample rate. A IS_CHANGED check hashes your text and speaker, so it only re-runs when one of them actually changes instead of churning on every queue bump.

    Two things worth knowing before you get attached to knobs that don't exist. Speed is hardcoded at 1.0 and language is hardcoded to en-us, so this node is English-only and you won't find controls for either. The underlying model speaks more languages via kokoro-onnx directly; this wrapper just doesn't expose them. Fine for narration, a dead end if you need French.

    The inputs that matter

    There are exactly two, and neither is scary.

    • text - a multiline box for whatever you want spoken. The default is a YouTube promo for the author's channel, which is a choice; you'll be replacing it immediately.
    • speaker - a dropdown of 11 voices. The prefix tells you everything: af_ is American female, am_ American male, bf_ British female, bm_ British male. af_sarah (the default) is the crowd favorite, but am_adam and bf_emma are worth a listen.

    The single output, audio, is ComfyUI's standard AUDIO type, so it plugs into core SaveAudio or PreviewAudio, and anything that accepts audio - like video tools that merge a voiceover track - will take it straight from the wire.

    Installing it

    Here's the catch the README is upfront about: this pack is not in the ComfyUI Manager registry, so the "search and install" path won't find it. Manual it is:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Burgstall-labs/ComfyUI-BS_Kokoro-onnx
    cd ComfyUI-BS_Kokoro-onnx
    pip install -r requirements.txt
    

    Then the part people actually trip on: the model does not auto-download. Grab kokoro-v0_19.onnx and voices.json from the kokoro-onnx model releases and drop both into the custom_nodes/ComfyUI-BS-Kokoro-onnx/ folder. Then restart ComfyUI and hit R in the UI to refresh nodes. If you're on Windows, run the pip step against python_embeded\python.exe, not your system Python - the classic "node is missing" error is really "the dependency landed in the wrong interpreter."

    Where people get burned

    The dominant failure is the model-not-found error, and it's always the same story: files went into the wrong folder or never got downloaded at all. Check custom_nodes/ComfyUI-BS-Kokoro-onnx/ - not models/, where your diffusion weights live. The other classic is an import error at startup telling you kokoro-onnx isn't installed; that's the Python-environment mismatch above.

    One genuine gotcha: the model download links have moved before, so if the README's URLs 404, grab the files from the current kokoro-onnx releases page rather than assuming the node is broken. And since this is a first repository from a solo dev (Burgstall, of BS Labs), treat it as what it is - a small, useful wrapper - and don't expect a pile of features to arrive. It's Apache-2.0-licensed through its dependencies, which makes it comfortable for commercial voiceover work.

    Is it the fanciest TTS you can run? No. But it's local, it's fast on CPU, and it sounds good enough that most people stop looking.

    Categorykokoro

    Inputs (2)

    NameTypeDefaultDescription
    textSTRINGCheck out BS Labs youtube channel: https://www.youtube.com/channel/UCcYXt5R6tpQgKYxULWYD95Q
    speakerCOMBOaf_sarah11 options: af, af_sarah, af_bella, af_nicole, af_sky, am_adam, +5

    Outputs (1)

    NameTypeDescription
    audioAUDIO