๐๏ธ Pocket TTS Clone Voice
Clone a voice on CPU, no GPU, no API key โ the Pocket TTS Clone node
- ref_audio
- audio
Want your own voice - or anyone else's, with their say-so - reading narration straight out of ComfyUI on a machine that has never seen a GPU? Pocket TTS Clone Voice is the node that does it locally, for free, with no API key and no account. It's the voice-cloning half of the ComfyUI-Pocket-TTS pack, which wraps Kyutai Labs' Pocket TTS, a 100M-parameter text-to-speech model built specifically for CPU and on-device use. Where the pack's other node picks from eight built-in voices, this one takes whatever audio you feed it and zero-shot clones the speaker from it.
How it works
The mechanism is surprisingly small. The node takes your reference audio, squeezes it down to mono float32, does a sanity check (it needs at least 100 samples - any real clip clears that), writes a temporary WAV file, and hands the path to the model's get_state_for_audio_prompt(), which builds a voice embedding from those few seconds. Then generate_audio() speaks your text in that voice and the node hands you back a ComfyUI AUDIO dict - waveform plus sample rate.
The model loads once and is cached in memory for the whole session. That means the first generation is the slow one (it also downloads the ~100M checkpoint on its first run), and everything after is warm. The author claims roughly 6x real-time on CPU and ~400MB of RAM for the whole thing - realistic for a 100M model, and it matches what you'd expect from the "Pocket" name.
The inputs and outputs that matter
There are only three fields on this node, which is most of its charm:
- ref_audio (
AUDIO) - the reference clip whose voice you're cloning. - target_text (
STRING, multiline) - what the cloned voice says. Defaults to "Hello world, this is a test." - audio (output,
AUDIO) - the generated speech, ready to wire into a preview or save node.
Here's the gotcha that will burn you once: the input is an AUDIO socket, not a file path. The README tells you to drop a .wav into ComfyUI/input/ and "select" it, but there's no file picker on this node. You wire in an audio loader node instead - ComfyUI core ships a Load Audio node, and Video Helper Suite has its own. Load your reference with that, and plug it in.
For the reference itself: a few seconds of clean speech, one speaker, no background music. The model builds its voice state from a short prompt, so a five-minute podcast clip is not what this wants - trim to a sentence or two.
Installing it
Either route works:
cd ComfyUI/custom_nodes
git clone https://github.com/ai-joe-git/ComfyUI-Pocket-TTS
cd ComfyUI-Pocket-TTS
pip install -r requirements.txt
Or open ComfyUI Manager, search "Simple Pocket TTS", and hit Install, then restart ComfyUI. The actual requirements are pocket-tts, torch>=2.5, and scipy - torch you almost certainly already have. The model checkpoint downloads itself on first use.
Where people get tripped up
- "pocket-tts not installed" - the library didn't land in your ComfyUI venv. Run
pip install pocket-ttsfrom inside it and restart. - The README promises more than the pack ships. It advertises four nodes including a "Model Loader" and a "Simple" node with precision settings. Only two actually exist in the code - Generate and Clone. If you can't find the others, you're not going mad.
- Cloning quality is "good enough," not "scary good." Pocket TTS lives in the same lightweight corner as Kokoro - best voice per watt on a laptop - not the Chatterbox-class corner that genuinely challenges ElevenLabs. Fine for narration and prototypes; don't expect Hollywood impressions.
- Consent is the README's own warning: voice cloning without explicit consent is prohibited, and for good reason. Don't be that person.
TTS is still second-class infrastructure in ComfyUI - a bolted-on layer of node packs fighting dependency conflicts. This pack is the opposite of that mess: three dependencies and a laptop requirement. For a quick cloned voice on whatever machine you happen to be on, it's hard to beat.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| ref_audio | AUDIO | โ | |
| target_text | STRING | Hello world, this is a test. | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | โ |