ComfyUI Node

FunASR Speech to Text (File)

Drop an audio file in, get Chinese text out — FunASR without the wiring

By ahkimkoo·Created 3 months ago·Updated 3 months ago· 1
FunASR Speech to Text (File)
    • text
    audio_file
    hotword

    FunASR Speech to Text (File) is the sibling node in the same pack, and it exists to solve one dumb annoyance: not wanting to wire up a LoadAudio node every time you want to transcribe something. Instead of taking an AUDIO signal, it shows you a dropdown of audio files sitting in ComfyUI's input/ folder, with drag-and-drop upload built in. Pick one, run it, get text. Same engine, same offline pipeline, one less node on the canvas.

    Under the hood it's identical to the AUDIO version: Alibaba DAMO's FunASR with Paraformer-Large for recognition, an FSMN VAD that segments speech from silence, and a CT-Transformer that restores punctuation - all local. The node loads your file with torchaudio, converts it to mono 16 kHz, and transcribes. First run still pulls the same ~2 GB of models into models/funasr/ from ModelScope; after that it's cached and fully offline. So the File variant adds nothing to accuracy or speed - it's purely a convenience for when the audio already lives in your input folder.

    Inputs and outputs

    • audio_file (required) - a dropdown listing audio files in your input directory. The pack filters to .wav, .mp3, .flac, .ogg, .opus, .m4a, .aac, .wma, and the audio_upload flag means you can drag a file straight onto the widget and ComfyUI copies it in for you.
    • hotword (optional, STRING, multiline) - the same hotword boost as its sibling: one term per line to improve recognition of names, product names, and jargon.

    Output is one text STRING, also shown in the node UI. The node is registered as both an input and an output node, so you can run it standalone or feed the string onward into a save-text or LLM node.

    Install

    Same pack as FunASR Speech to Text, same story. ComfyUI Manager → search "ComfyUI-FunASR", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/ahkimkoo/ComfyUI-FunASR
    cd ComfyUI-FunASR
    pip install -r requirements.txt   # funasr>=1.0.0, modelscope, torchaudio
    

    Restart ComfyUI. Both nodes live under the "FunASR" category; this one is the one marked "(File)".

    Where people get burned

    • The dropdown is a snapshot. The file list is built when the node's input definition runs, so a file you drop into input/ while ComfyUI is already running won't appear in an existing node. Re-add the node (or restart) and it refreshes. Mildly annoying, easily mistaken for a bug.
    • One file at a time. There's no batch mode. If you're transcribing a whole folder of clips, looping the AUDIO version through a graph is the better path; this node is for quick one-offs.
    • The extension list is fixed. .webm and other containers aren't in the set, so a file that plays fine elsewhere may simply not show up. Convert it, or use the AUDIO version.
    • Shared gotchas with its sibling: the ~2 GB ModelScope download on first use (proxy or pre-download if you're outside China), and funasr/torchaudio living in your shared Python environment where they can collide with other packs' pinned versions.

    When the audio is already sitting in your input folder, this is the node I'd reach for - if only to avoid dragging a wire across half the canvas for a thirty-second check.

    CategoryFunASR

    Inputs (2)

    NameTypeDefaultDescription
    audio_fileCOMBO0 options:
    hotwordoptSTRINGOptional hotwords to boost recognition accuracy, one per line

    Outputs (1)

    NameTypeDescription
    textSTRING