Breeze TTS 2 Whisper Transcribe
The transcript helper that saves your voice clones from yourself
- audio
- audio
- transcript
Every voice-cloning guide in this pack says the same thing: the transcript of your reference clip has to be exact. A wrong word quietly degrades the clone. This node exists to make that easy - it runs OpenAI's Whisper on your reference audio and hands you back the transcript, so you're not hand-typing it and hoping.
It's the unglamorous node in the pack, and honestly that's the point. Cloning is the hard job in local TTS, and the transcript is the most common way to sabotage it. This node removes that failure mode with two clicks.
How it works
It wraps the Hugging Face Whisper pipeline and transcribes whatever AUDIO you feed it. The default model is whisper-large-v3-turbo, which is the sensible pick - near-large quality at a fraction of the compute. Models are cached in memory after first use, download on demand into ComfyUI/models/audio_encoders/, and the node passes your audio straight through so you can wire it in-line without a detour.
You'll notice this node rarely appears on its own in a workflow - the Speaker node calls it internally when you leave a transcript empty with auto-transcription on. Wiring the two explicitly (convert reference_text to an input, connect the transcript) just gives you control and visibility over what Whisper heard.
The inputs that matter
audio- the clip to transcribe. Your reference audio for cloning.model- six Whisper sizes fromwhisper-large-v3-turbodown towhisper-tiny. Unless your reference is in a rare language or very noisy, the turbo default is right; the tiny models are only for CPU-bound trims.language-autodetects it, but if Whisper keeps mangling a language it should know, pin it (chinese,japanese,korean, etc. are listed).task-transcribekeeps the source language;translatewrites English. Only set translate if you actually want an English transcript of foreign audio.chunk_length_s- 30 by default; set 0 to use the pipeline default, raise it for very long inputs.download_if_missing- leave on; it pulls the Whisper weights from Hugging Face on first run.
The outputs are audio (an unchanged passthrough of what you fed it) and transcript (the text string). Transcript is what you wire into a Speaker's reference_text or a Voice Clone's reference_text.
Installing and troubleshooting
Same pack, same story:
cd ComfyUI/custom_nodes
git clone https://github.com/saganaki22/ComfyUI-Breeze-TTS-2
or ComfyUI Manager → search "ComfyUI-Breeze-TTS-2", restart. Whisper weights download separately from the Breeze model - first transcription pulls a chunk of a GB into ComfyUI/models/audio_encoders/, so don't panic when the first run is slow.
Realistic gotchas: background music or a second voice in the reference makes Whisper transcribe garbage, and then your clone inherits the garbage - clean source audio is not optional. For very accented or technical speech, pinning language beats auto-detection. And a tip from the Speaker node's tooltip: check the console log after auto-transcription, because a wrong auto-transcript is still a wrong transcript. Whisper gets you 95% of the way; you're the last 5%.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | Audio to transcribe (e.g. the reference clip used for cloning). | |
| model | COMBO | whisper-large-v3-turbo | Whisper model used for transcription. |
| dtype | COMBO | auto | Compute dtype for Whisper. |
| language | COMBO | auto | Spoken language hint; auto detects it. |
| task | COMBO | transcribe | transcribe keeps the source language; translate writes English. |
| chunk_length_s | INT | 300–120 | Chunk length in seconds for long inputs (0 uses the pipeline default). |
| download_if_missing | BOOLEAN | true | Download the Whisper model from Hugging Face when missing locally. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| transcript | STRING | — |