Amage STT
In-graph speech-to-text, and the model that'll make you shout
- audio
- STRING
Amage STT is the ComfyUI-Amage pack's speech-to-text node: you feed it an AUDIO signal, it hands you back a STRING of what was said. That's the whole transaction, and it runs fully local on Whisper-tiny. For most people this is the first "the graph just listened to something" moment, and it's genuinely neat - with caveats you'll want before you wire it up.
Why you'd reach for it
Because transcribing audio inside the graph lets the text drive the workflow. Feed it a voice memo and pipe the transcript into a CLIPTextEncode, or use it in an audio-reactive setup where spoken words become your prompt. If you're just batch-transcribing files, do that outside ComfyUI with the Whisper CLI - but if the transcript needs to feed a generation, this is the node that closes the loop.
How it works
Under the hood it's a HuggingFace transformers ASR pipeline pointed at a model called whisper-tiny - the smallest of OpenAI's Whisper family. On the way in it normalizes whatever ComfyUI's AUDIO type throws at it: unwraps the {waveform, sample_rate} dict, drops the batch dimension, averages channels down to mono, casts to float32, then transcribes. language="auto" lets Whisper detect the language; anything else is forced as the target language code. If something goes wrong mid-pipeline it returns a [STT Error] … string rather than crashing your queue - a nicer failure mode than most nodes manage.
Setup - read this twice, it's the whole game
Two things, and both will bite you:
- The model lives in a folder ComfyUI doesn't create for you. The node hardcodes the path
ComfyUI/models/sonic/whisper-tiny. You have to createmodels/sonic/by hand and put a Whisper-tiny model there - the README calls this out explicitly. There's no auto-download, no "Install missing model" button. - It needs
transformers, and the pack has no requirements.txt. Worse,from transformers import pipelineruns at module load innodes.py, so iftransformersis missing from your ComfyUI Python environment, every node in the pack fails to import, not just STT. Fix it once withpip install transformersinto the ComfyUI venv.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Sampkao/ComfyUI-Amage.git
# or: ComfyUI Manager → search "Amage" → install → restart
mkdir -p ComfyUI/models/sonic
# put whisper-tiny into ComfyUI/models/sonic/whisper-tiny
Then restart ComfyUI.
The catches that'll cost you an hour
First, the pipeline is built in the node's __init__, which means the model loads the moment the workflow initializes - if the model path is wrong or missing, the node dies at load/queue time, not with a helpful error. Second, whisper-tiny is the weakest Whisper model. Clean, short, well-recorded speech? Fine. Background noise, music, two people talking, heavy accents? Expect mangled output. It's the accuracy-sacrificing-for-speed choice, and the model path is hardcoded, so swapping in whisper-base or small means editing nodes.py. Third, this pack ships no audio loader - it consumes the AUDIO type but doesn't produce one, so you need another pack (VHS's audio loaders, ComfyUI's audio nodes) to get audio into the graph in the first place.
Inputs & output
You set two: audio (the AUDIO signal) and language (default "auto", or an ISO code like "en" to skip detection). Output is a single STRING - the transcript - which you can display or wire into anything that eats text.
It's a small, honest node from a small pack, and if your audio is clean it'll surprise you how well tiny Whisper works. Dirty audio, and the "[STT Error]" string will be the least of your frustrations.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| language | STRING | auto | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |