zhenzhen-zonos2-fal
Clone a voice from a few seconds of audio, no local stack
- reference_audio
- audio
- audio_url
- response
The hosted way to do zero-shot voice cloning
Zonos is one of the open-weight TTS models that actually holds up - a zero-shot voice cloner where a few seconds of reference audio is enough to clone a speaker, at 44kHz, with real expressiveness (audio-generation.md). The catch is that running it locally means pulling down a transformer stack and a decent GPU. This node skips all of that: it calls Zonos v2 through fal's hosted endpoint, so the only things on your machine are the node and the script you're reading aloud.
And yes, "FAL" in the category means exactly the fal you think - the pay-per-call inference platform (fal.json). Metered credits, empty balance = no generation. The zhenzhen pack routes the request through its own server, but the key is yours.
The one thing you must get right: a fal API key
This node does not use the shared zhenzhen Seedance settings node, and it does not use a zhenzhen key. The api_key field takes your direct fal key - the one from your fal dashboard. Leave it empty and the node fails with "API key not provided." Every other input is optional, which tells you how important the reference audio is by comparison.
What to feed it
- text - what the voice says. The default is fal's own promo line; replace it.
- reference_audio - a ComfyUI
AUDIOclip of the voice you want to clone. This is the heart of the node: Zonos is zero-shot, so a short clean sample (5–30 seconds, ideally no music) defines the speaker. - reference_audio_url - same thing as a URL, when
audio_wayis set toaudio_urlinstead ofupload. - language -
en_usby default, withen_gb,fr_fr,de,es,it,pt_br,ja,cmn,koon offer. Match it to the text, not the reference clip. - accurate_mode - on by default; a quality/throughput trade-off on fal's side.
- temperature / top_p / min_p / top_k / max_tokens - sampling dials. Leave them alone until you're chasing a specific delivery;
temperature 1.15andmin_p 0.18are sensible defaults. - seed - 0 to 65535; 0 means random, and unlike the video nodes this one is sent to the API. Fix a seed to reproduce a take.
- poll_interval / max_poll_attempts - how hard the node waits. Defaults are 6s × 600 = a 3600s timeout; plenty.
Outputs
Three: audio (a real ComfyUI AUDIO object - waveform + sample rate - so it wires straight into an audio player or a video's audio track), audio_url (the hosted file), and response (fal's JSON). With skip_error on, failures return a blank audio clip instead of stopping the graph.
Install and notes
Same pack, same install:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
then restart and let requirements install (torchaudio does the audio decoding, so don't strip requirements). Two practical notes: voice cloning works best when the reference is clean - background noise and music bleed straight into the clone, which is what clean_speaker_background exists to help with. And this is a cloud call, so your reference clip and text leave the machine; keep that in mind if you're cloning something private.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | "Fal" is the fastest solution for your audio generation. | — |
| reference_audioopt | AUDIO | — | |
| reference_audio_urlopt | STRING | — | |
| api_keyopt | STRING | — | |
| languageopt | COMBO | en_us | 10 options: en_us, en_gb, fr_fr, de, es, it, +4 |
| accurate_modeopt | BOOLEAN | true | — |
| clean_speaker_backgroundopt | BOOLEAN | false | — |
| temperatureopt | FLOAT | 1.150–2 | — |
| top_popt | FLOAT | 0.000–1 | — |
| min_popt | FLOAT | 0.180–1 | — |
| top_kopt | INT | 1060–1024 | — |
| max_tokensopt | INT | 00–6144 | 0 = server default. |
| seedopt | INT | 00–65535 | 0 = random seed. FAL seed max is 65535. |
| audio_wayopt | COMBO | upload | 2 options: upload, audio_url |
| poll_intervalopt | INT | 61–60 | — |
| max_poll_attemptsopt | INT | 60010–3600 | Default 600*6s = 3600s timeout. |
| skip_erroropt | BOOLEAN | false | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| audio_url | STRING | — |
| response | STRING | — |