FL FishSpeech Model Loader
The 8 GB doorway to every other FishSpeech node
- fs_model
This is where every FL FishSpeech workflow starts, and honestly where most of them end for people who didn't read the fine print. The Model Loader node grabs the entire OpenAudio S1-mini bundle - the DualAR transformer that turns text into speech tokens, the DAC neural codec that turns tokens into audio, and the tokenizer - and hands it to the rest of the pack as a single fs_model connection. It's the only node that talks to the network, so a lot of the pack's install pain lives right here.
How it works
First run is the scary part. The loader checks ComfyUI/models/fishspeech/openaudio-s1-mini/ for a checkpoint; if it's missing, it pulls it from HuggingFace. That's a one-time ~8GB download, which the code prints loudly so you don't think it hung. Once the weights are local, it loads the transformer, pre-allocates KV caches, loads the DAC codec, and stashes the whole bundle in a process-wide cache keyed by device+precision. Subsequent runs skip straight to "Model found in cache," which is why the node feels instant after the first queue.
Two things the README won't tell you, straight from the source:
- This pack needs a separate
fish-speechrepo. The loader importsfish_speech.models.text2semantic.inferencefrom a clone it expects atComfyUI/fish-speech/- a sibling ofcustom_nodes/, not inside it. If that folder is missing you getFileNotFoundError: fish-speech directory not foundon first load. So before anything else:cd ComfyUI git clone https://github.com/fishaudio/fish-speech.git - The model is gated.
fishaudio/openaudio-s1-minirequires you to log in and accept access on its HuggingFace page. Runhuggingface-cli login, accept the terms in your browser, and only then let the node download. Expect aGatedRepoErrorif you skip this.
Inputs that matter
All four inputs are optional, which is a nice change from most loaders:
- device (
auto/cuda/cpu) -autodetects your GPU, or falls back to CPU (painfully slow, per the author's own warning). - precision (
bfloat16/float16/float32) - bfloat16 is the CUDA default and the one you should keep. float32 only makes sense on CPU. - compile - enables
torch.compile. First run compiles and can take a while; runs after that get faster. Flip it on if you're generating a lot and can eat the warm-up. - force_reload - drops the cached bundle and reloads from disk. Reach for this if you've been fiddling with files or swapped checkpoints and the cache is serving you stale data.
Output
One output, fs_model (type FS_MODEL), and it's required by every other node in the pack: TTS, Reference Audio, VQ Encode, VQ Decode. You can wire it into several at once - the example workflow does.
Installing the pack itself
Easiest via ComfyUI Manager - search "FL FishSpeech" and install, then restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI-FL-FishSpeech.git
cd ComfyUI-FL-FishSpeech
pip install -r requirements.txt
Then restart ComfyUI. Requirements are the usual torch-adjacent suspects (torchaudio, safetensors, lightning, huggingface_hub, and friends). Watch the VRAM: the README calls for 14GB+ to be comfortable. If you OOM, keep bfloat16, and remember the loader's cache holds the model resident between runs - force_reload is also how you make it let go.
One more thing while you're reading the model page: the pack itself is Apache 2.0, but that's the wrapper, not the weights. The gated model ships under its own terms - community members have flagged non-commercial restrictions on Fish Audio's model releases, so read the OpenAudio model card before you build anything you plan to monetize.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| deviceopt | COMBO | auto | Device to load the model on. 'auto' detects GPU automatically. |
| precisionopt | COMBO | bfloat16 | Model precision. bfloat16 recommended for CUDA, float32 for CPU. |
| compileopt | BOOLEAN | false | Enable torch.compile for faster generation. First run will be slow due to compilation. |
| force_reloadopt | BOOLEAN | false | Force reload the model, clearing cache. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| fs_model | FS_MODEL | β |