API Qwen Audio2Text
Make an LLM listen to your audio in ComfyUI
- audio
- text
API Qwen Audio2Text is the pack's "make the AI listen" node: it takes an audio clip from your graph, sends it to Alibaba's Qwen Omni model, and returns text - a transcription, a description, or a music-analysis prompt, depending on what you ask. It's the audio cousin of the image-to-text nodes, and it's the cheapest way to get real audio understanding inside ComfyUI without running a local audio model.
Why would you want this? Two big jobs. The first is reverse-prompting audio for music/audio LoRA training - the pack's README is explicit that audio reverse-prompting and tagging is a headline feature, fast and effective for building training captions. The second is the practical day-to-day: feed it a clip of dialogue and ask for a transcript or a summary, and the output feeds a text node that can drive anything downstream. Since it's an API call, an 8-core CPU box handles it the same as a 4090.
How it works
Your AUDIO input (a waveform tensor plus sample_rate) is converted to an MP3 and sent as base64 input_audio content to DashScope's OpenAI-compatible endpoint, streaming with modalities=["text"]. The conversion goes through pydub - which means it needs ffmpeg on your PATH, a detail the requirements file won't tell you. The model dropdown has two choices: qwen-omni-turbo-latest (default, fast) and qwen2.5-omni-7b. Key resolution is the pack standard: DASHSCOPE_API_KEY env var, then the api_key field.
The inputs that matter
audio(AUDIO, required) - wire it from an audio loader or from any node that emits the AUDIO type. This is a single clip; batch work isn't what this node does.prompt(multiline) - the instruction. "Transcribe this audio", "Describe the music and its genre", or "Write a caption for this audio clip for training".system_prompt(multiline) - optional framing, e.g. "You are a music tagger. Output only tags."model- the omni models are the ones that actually hear audio; the dropdown reflects the two current options.api_key- env var or field.
Output is a single text STRING, ready for a text viewer or a prompt pipeline.
Installing it
Ships in ComfyUI_Prompt-All-In-One by billwuhao. ComfyUI Manager → search Prompt-All-In-One, or:
cd ComfyUI/custom_nodes
git clone https://github.com/billwuhao/ComfyUI_Prompt-All-In-One.git
cd ComfyUI_Prompt-All-In-One
pip install -r requirements.txt
Restart; it's under 🎤MW/MW-Prompt-All-In-One.
Where people get burned
The ffmpeg thing is the one nobody expects. The node's MP3 conversion runs through pydub, which shells out to ffmpeg; if the call dies with a pydub/ffmpeg-style error even though pip install -r requirements.txt succeeded, install ffmpeg on your system (Windows portable ComfyUI usually bundles it - check ffmpeg exists in your environment first). The other watch-item is audio length: very long clips make for large API payloads, so trim or split before sending. And keep the API reality in mind - this is audio leaving your machine, subject to vendor policy, which matters if you're analyzing something you'd rather not upload. For fully local audio understanding, the pack's Ke-Omni-R node is the no-upload alternative, at the cost of a ~3B model download and some VRAM.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| api_key | STRING | — | |
| system_prompt | STRING | — | |
| prompt | STRING | — | |
| model | COMBO | qwen-omni-turbo-latest | 2 options: qwen-omni-turbo-latest, qwen2.5-omni-7b |
| seed | INT | 00–18446744073709550000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |