FL Qwen3 TTS Audio Decode
Back from tokens to sound — the other half of the Qwen3 codec round trip
- tokenizer
- audio_codes
- audio
Audio Decode is the mirror image of Audio Encode: it takes audio_codes - Qwen3-TTS's discrete, 12Hz speech code representation - and turns them back into a listenable AUDIO waveform. On its own it's useless; paired with Audio Encode it's a codec round trip, and with anything else that emits QWEN3TTS_AUDIO_CODES, it's how you get sound back out of the token domain.
You'll rarely need it for ordinary TTS. The generate nodes decode internally and hand you audio directly. This node exists for the same power-user path as its pair: reconstructing audio from codes you've produced, inspected, or manipulated somewhere upstream. If you've gone down the rabbit hole of the 12Hz tokenizer - testing what survives the compression, feeding codes into a custom graph - this is your way back to a waveform you can preview or save.
How it works
It needs a tokenizer from the Tokenizer Loader and an audio_codes input - the natural source is the Audio Encode node's output, but anything emitting the QWEN3TTS_AUDIO_CODES type works. It runs the codes through the tokenizer's decode, then hands you standard ComfyUI AUDIO at the codec's native sample rate. That output plugs into any preview or save node.
Inputs and output
tokenizer- from the Tokenizer Loader (Qwen3-TTS-Tokenizer-12Hz).audio_codes- discrete codes, typically from Audio Encode.- Output:
audio(AUDIO).
Installing
ComfyUI Manager → "FL Qwen3 TTS", or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI-FL-Qwen3TTS.git
cd ComfyUI-FL-Qwen3TTS
pip install -r requirements.txt
Restart, and let the Tokenizer Loader grab the 12Hz tokenizer on first use.
Gotchas
The usual one: if you expect a faithful copy of what you encoded, you'll be disappointed. The encode→decode loop is lossy - that's the point of a compression codec. The bigger practical gotcha is mis-wiring: decode needs the same tokenizer family the codes came from, and it needs the codes, not the raw audio. Feed it a waveform and it'll error immediately rather than silently doing the wrong thing, which is at least a friendly failure. And remember the pair of codec nodes is entirely optional for this pack's main job - if your workflow is just text to a talking voice, you can ignore Audio Encode and Audio Decode completely.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| tokenizer | QWEN3TTS_TOKENIZER | — | |
| audio_codes | QWEN3TTS_AUDIO_CODES | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |