FunASR Speech to Text (File)
Drop an audio file in, get Chinese text out — FunASR without the wiring
- text
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 theaudio_uploadflag 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.
.webmand 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/torchaudioliving 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.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_file | COMBO | 0 options: | |
| hotwordopt | STRING | Optional hotwords to boost recognition accuracy, one per line |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |