Nodes/DJZ-KokoroTTS/Kokoro TTS v2
ComfyUI Node

Kokoro TTS v2

Blend two voices into one, the simple way

By MushroomFleet·Created about a year ago·Updated 4 months ago· 7
Kokoro TTS v2
    • audio
    textHello, world!
    voice1
    voice2
    speed11.0
    speed21.0

    Kokoro ships 46 built-in voices and none of them are exactly what you had in your head. KokoroTTS_v2 is the pack's answer: pick two presets, it averages them into a new voice, and you get audio out the other end. It's the simplest of the pack's blend nodes - there's a fancier one (v3) that adds a real mixing dial, but v2 is where "voice blending" starts.

    Why blend at all

    Kokoro's 46 presets - af_*/am_* for American female/male, bf_*/bm_* for British - cover a lot of ground, but they're fixed points, not a spectrum. If you want something between "af_bella" and "af_sarah," there's no preset for that; you have to build it. That's this whole pack's reason to exist, and it's a genuinely useful idea for a TTS model this size - Kokoro itself is small enough (around 82M parameters) and fast enough that generating a blended voice costs you almost nothing extra compared to a single preset.

    How it actually blends

    Per the pack's own changelog, v2 introduced what the author calls the "default" blending method: a weighted-sum average of the two voices' underlying embeddings. Practically, that means it takes both voice vectors and merges them into a midpoint - straightforward, cheap, and it works, though a plain average can occasionally sound a bit softer or less distinct than either source voice on its own, especially if the two voices are quite different. There's no mix-ratio control here - you don't get to say "80% voice1, 20% voice2." That level of control, plus a second blending method (spherical interpolation), is what KokoroTTS_v3 adds on top of this exact node.

    Inputs and outputs

    • text (STRING, default "Hello, world!") - what gets spoken.
    • voice1 / voice2 (enum, 46 choices each) - the two presets to blend.
    • speed1 / speed2 (FLOAT, 0.5–2, default 1) - playback speed for each source voice going into the blend.

    One output: audio (AUDIO), ready for a Save Audio / Preview Audio node or further downstream.

    Installing it

    Same install as the rest of the pack:

    • ComfyUI Manager - search "DJZ-KokoroTTS", install, restart.
    • Manual - cd ComfyUI/custom_nodes && git clone https://github.com/MushroomFleet/DJZ-KokoroTTS, then restart.

    Portable Windows users get an install-portable.bat - close ComfyUI first, then run it; it sets up the paths and dependencies the portable build needs.

    You also need the model files. Two of them belong in /comfyui/models/kokoro/. The README links directly to the ONNX weights - kokoro.onnx from taylorchu/kokoro-onnx's v0.2.0 release - but is vague on the second file's exact name; check the repo's models.json rather than guessing.

    Where people get stuck

    Same failure mode as every node in this pack: the model files aren't where the node expects them. If voice generation fails outright rather than just sounding wrong, check /comfyui/models/kokoro/ first, exactly that path, before touching anything else.

    Worth knowing generally about custom nodes: every pack drops its own requirements.txt into ComfyUI's shared Python environment, with zero isolation between packs. A conflicting dependency version from something else you've installed can quietly break this node on load, and the error you see usually won't mention Kokoro by name - it'll look like an unrelated import failure. Check the console on startup for what's actually missing or clashing.

    If you find yourself blending the same two voices over and over, don't keep re-running this node for every generation - that's what KokoroTTS_SaveVoice_v1 is for: bake the blend once, save it, and pull it back in with KokoroTTS_LoadVoice_v1 whenever you need it. Faster, and you get a consistent voice across an entire project instead of a slightly different blend each run.

    Categorysd

    Inputs (5)

    NameTypeDefaultDescription
    textSTRINGHello, world!
    voice1COMBO46 options: af_alloy, af_aoede, af_bella, af_heart, af_jessica, af_kore, +40
    voice2COMBO46 options: af_alloy, af_aoede, af_bella, af_heart, af_jessica, af_kore, +40
    speed1FLOAT1.00.5–2
    speed2FLOAT1.00.5–2

    Outputs (1)

    NameTypeDescription
    audioAUDIO