Miso TTS - Whisper Transcribe
The helper node that turns reference audio into a transcript you didn't have to type
- audio
- transcript
This node isn't the star of the pack - it's the understudy that keeps the show from stalling. Miso TTS's Generate node can condition on a reference clip, but only if you feed it the transcript of that clip, and it refuses to run if you connect audio without the text. Miso TTS - Whisper Transcribe exists to fill that gap automatically: ComfyUI AUDIO in, transcript STRING out, ready to plug into reference_text. It's the difference between "let me transcribe this voice clip by hand" and a pipeline that just works.
How it works. It's a standard Whisper ASR pipeline (via Hugging Face Transformers, not the openai-whisper package) wrapped in a ComfyUI node. Your AUDIO input gets resampled to whatever Whisper wants, then decoded into text. The default model is whisper-large-v3-turbo (auto-download), which lands in ComfyUI/models/audio_encoders/ on first run. That's honestly overkill for a 10-second reference clip - whisper-small or whisper-medium will transcribe short clean speech fine and download a fraction of the gigabytes. The task dropdown does what you'd expect: transcribe keeps the source language, translate dumps English out regardless. language is an optional hint - leave auto and it guesses; set it if Whisper keeps guessing wrong on accented audio. dtype defaulting to auto means bf16/fp16 on GPU and fp32 on CPU, so it won't thrash your VRAM when the 8B TTS model is hogging the card.
Inputs and output. Required inputs are audio (AUDIO), model, dtype, language, task, chunk_length_s (30 seconds by default, 0 to disable chunking), and download_if_missing. The one beginner actually changes besides the model is chunk_length_s - for a short reference clip, chunking at 30s is irrelevant; for a long file it's what keeps Whisper from losing the plot. Output is a single transcript STRING, wired to Generate's reference_text.
Installing. There's nothing extra to install - this node ships in the MisoTTS-ComfyUI pack:
cd ComfyUI/custom_nodes
git clone https://github.com/saganaki22/MisoTTS-ComfyUI.git
cd MisoTTS-ComfyUI
python install.py
(Windows portable: ..\..\python_embeded\python.exe install.py.) Or grab it from ComfyUI Manager under "Miso TTS". Whisper itself downloads on first run via the download_if_missing flag.
Gotchas. The Whisper model won't show up in your VRAM visualizer until the node has actually run once - registration happens on first load, not at startup. If you're downloading a new Whisper model every run, your local audio_encoders folder is the culprit, same class of bug as the tokenizer re-download issue on the Load Model node. And one honest note: this is a convenience node, not a magic one. If you already have the transcript of your reference clip, just type it into reference_text - the transcription is only worth its tokens when you're converting someone else's audio into a voice context. For that job it works well, and it keeps your reference-conditioning pipeline fully local.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | Audio to transcribe. Connect this output to Miso reference_text. | |
| model | COMBO | whisper-large-v3-turbo (auto-download) | Whisper ASR model. Auto-download options are stored under ComfyUI/models/audio_encoders/. |
| dtype | COMBO | auto | Whisper precision. auto uses bf16/fp16 on GPU and fp32 on CPU. |
| language | COMBO | auto | Optional language hint for Whisper. |
| task | COMBO | transcribe | transcribe keeps the source language; translate outputs English. |
| chunk_length_s | INT | 300–120 | Chunk length in seconds for longer audio. 0 disables chunking. |
| download_if_missing | BOOLEAN | true | Download selected auto-download Whisper model if missing. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| transcript | STRING | — |