FL FishSpeech Reference Audio
One clean clip, and the voice is yours
- fs_model
- audio
- fs_reference
Voice cloning is the whole reason this pack exists, and this is the node that does the cloning. You feed it one audio clip of a voice you like plus the exact words being said, and it produces the fs_reference the TTS node uses to speak in that voice. No training, no fine-tuning, no cloud account - a single 5-30 second reference clip is the entire ask. That's the zero-shot part, and it's genuinely impressive when it works.
How it works
The node takes the ComfyUI AUDIO input (from the core Load Audio node), downmixes to mono, and resamples it to the codec's 44.1kHz. Then it runs the waveform through the same DAC codec that TTS uses on the output side, producing a stack of codebook indices - the discrete "how this voice sounds" tokens. It pairs those tokens with the transcript you typed, and that bundle becomes the prompt the DualAR transformer conditions on.
This is why the transcript matters so much. The model isn't just learning a timbre; it's learning "this voice, saying these words," and the text has to line up with the audio or the conditioning gets confused. A mismatched transcript is the single biggest quality killer in the whole pack - the voice drifts, the rhythm sounds off, or the delivery goes flat. It's also why the pack ships the Transcribe node: feed it your clip, and it hands you the transcript to paste in.
Inputs
Three required inputs, and all three matter:
- fs_model - the
FS_MODELoutput from the Model Loader node. It carries the codec the encoding needs, so there's no separate codec loader to manage. - audio - a ComfyUI
AUDIOclip, typically from Load Audio. The node handles stereo by averaging to mono and resamples whatever sample rate you feed it. - transcript - the exact words spoken, multiline. For best results it should match the clip precisely, which is what the author's tooltip says in so many words.
Output
One output, fs_reference (type FS_REFERENCE), which plugs into the TTS node's optional fs_reference input. Skip it and TTS runs as plain text-to-speech; wire it and you're cloning.
Common issues
- Transcript doesn't match - the classic. If the clone sounds wrong, double-check your transcript against what the person actually says, word for word. Running your clip through the Transcribe node first sidesteps the human-error version of this.
- Reference too short or noisy - the author's guidance is 5-30 seconds of clear speech. Background music, heavy reverb, or a 2-second blip will give you a muddy clone.
- Output varies between runs - voice cloning isn't as deterministic as image sampling. Don't treat it like a fixed seed; treat the reference as the target and the generation as the dice roll. You may need to queue a few takes.
Installing
Same pack, same story: ComfyUI Manager, search "FL FishSpeech", install, restart. Or clone into custom_nodes/, pip install -r requirements.txt. The two things that trip people up aren't node-specific - the pack needs the fish-speech repo cloned at ComfyUI/fish-speech/, and the OpenAudio model is gated, so you'll need huggingface-cli login plus access accepted on its HuggingFace page before the first run. Get past that once and the cloning node just works.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| fs_model | FS_MODEL | β | |
| audio | AUDIO | β | |
| transcript | STRING | Exact transcript of the reference audio. Must match the spoken content for best results. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| fs_reference | FS_REFERENCE | β |