Nodes/ComfyUI_FishSpeech_EX/EX_SaveAudioToMp3
ComfyUI Node

EX_SaveAudioToMp3

The node that finally turns your Fish Speech output into a file you can listen to

By BIMer-99·Created 2 years ago·Updated 2 years ago· 8
EX_SaveAudioToMp3
  • audio
    filename_prefixComfyUI

    EX_SaveAudioToMp3 is the boring end of the FishSpeech_EX pipeline, and boring is exactly what you want from it. The other nodes in this pack do the wild stuff - clone a voice from a reference clip, generate speech tokens from text, decode them back into audio. This one just writes that audio to disk as an MP3 so you can actually listen to it, share it, or drop it in an editor. Every TTS workflow needs its save node, and this is FishSpeech_EX's.

    It's part of a small pack by BIMer-99 that wraps Fish-Speech 1.5, the open-weight voice-cloning TTS from fishaudio, into ComfyUI. Fish Speech is one of the few local TTS models people genuinely reach for - multilingual, ~1GB weights, and it does zero-shot voice cloning from a short reference clip. The pack adapts AnyaCoder's earlier ComfyUI-fish-speech plugin, and the whole thing is 1.5-only: the author is explicit that other Fish Speech versions use different checkpoints and won't work here.

    How it works

    The pipeline feeding it is: EX_LoadVQGANEX_AudioToPrompt (turns a reference clip into prompt tokens) → EX_Prompt2Semantic (text + tokens → semantic codes) → EX_Semantic2Audio (codes → an AUDIO tensor). That last output is what you wire into this node.

    Mechanically it's a straight port of ComfyUI's own save-image logic. It takes the AUDIO object (waveform + sample rate), loops over the batch, and calls torchaudio.save() with format="MP3" into the output folder. Files land in ComfyUI/output/ named <prefix>_<counter>_.mp3, and the frontend gets an "audio" entry in the results panel so you can click to play right there. Nothing clever, nothing to tune.

    The one thing to know: these MP3s carry no embedded workflow. ComfyUI's culture is "drag the PNG back in and the graph reconstructs" - the source code here literally starts to embed prompt metadata and then comments it out with a note that MP3 isn't suitable. So if you save only the MP3, the workflow is gone. Keep the workflow JSON, or drop a VHS save node alongside it if you want recoverability.

    The inputs that matter

    Only two, and only one you'll touch:

    • audio (AUDIO) - the generated audio from EX_Semantic2Audio. Required.
    • filename_prefix (STRING, default ComfyUI) - the name prefix for the output file. Set it to something descriptive like clone_v1 so you're not digging through a folder of ComfyUI_00012_.mp3.

    There are no outputs - this is a terminal node, the end of the line.

    Installing it

    Standard custom node install:

    cd ComfyUI/custom_nodes
    git clone https://github.com/BIMer-99/ComfyUI_FishSpeech_EX
    

    Or search "ComfyUI_FishSpeech_EX" in ComfyUI Manager and hit install, then restart. This one has a genuinely heavy requirements.txt - hydra, lightning, funasr, silero_vad, and the big one, vector-quantize-pytorch==1.14.24. That exact version matters: the author's whole reason for forking was that missing or wrong vector-quantize-pytorch silently wrecks audio quality (a sampling-step bug that reportedly took them days to pin down). If your output sounds like garbage static, this dependency is the first suspect. A Windows install.bat exists for portable and Aki installs.

    First run also auto-downloads fishaudio/fish-speech-1.5 (plus a VQGAN checkpoint) via Hugging Face, so budget a few GB and don't panic when it stalls on a fresh machine.

    Gotchas

    • Fish Speech 1.5 only. Don't swap in 1.4 or 2.x checkpoints and expect it to work.
    • The output is MP3, no workflow metadata - save the workflow separately if you plan to revisit it.
    • Quality problems trace back to vector-quantize-pytorch or a weak reference clip far more often than this node. If a run fails, check the backend console log; this pack is chatty about what it's loading.

    It's a small utility with a small job - but in a pack this specialized, "it just saves the file" is a feature.

    CategoryFishSpeech_EX

    Inputs (2)

    NameTypeDefaultDescription
    audioAUDIO
    filename_prefixSTRINGComfyUI

    Outputs (0)

    No outputs