π LLM Audio Save & Play
The Node That Lets You Hear the Voice
- audio
The API runners in this pack return audio as a response_audio output - but a ComfyUI audio dict isn't a thing you can hear. π LLM Audio Save & Play is the bridge: it takes that audio, writes it out as a real WAV file, and puts a Play button on the node so you can listen right in the browser. It's the last node in the suite's voice story, and without it the whole Gemini-native-audio and OpenAI TTS feature set is invisible.
Voice is the pack's headline, and this node is where that headline pays off. TTS is one of the places the API genuinely still beats local open models - the audio-generation knowledge base's honest line is that API providers keep the reliability and language bar, while local models win on cloning and price. Gemini's Gen-Audio voices (Puck, Charon, Kore, Fenrir, Aoede) are dramatic-reading personas tuned for character, not the robotic drone of old-school TTS; OpenAI's six tts-1 voices are cleaner and more neutral. This node plays whichever one you set in the configurator.
How it works
One input: audio (AUDIO) - wire it to the runner's response_audio. It's an output node, so nothing comes out the other side. On execution it:
- Converts the waveform to a standard 16-bit PCM WAV (the pack's own
audio_dict_to_wav_byteshelper handles the tensor β WAV header + data conversion). - Saves the file to
ComfyUI/output/llm_audio/with a timestamped name likellm_audio_20260820_153000.wav, so you've got a permanent artifact on disk. - Writes a temp copy for the browser and hands the node a playable URL.
- Updates the node's widgets: a status line ("β Audio ready β press Play") and the saved filename.
The frontend adds βΆ Play Audio and βΉ Stop buttons plus those status/filename widgets. Hit Play and it streams the WAV from ComfyUI's temp endpoint into an <audio> element - no extra player, no external app.
The one trap: silent audio
If the runner returned an empty/silent audio dict (which happens when the model didn't generate audio - see the runner articles: text-only models like the default gemini-2.5-flash, or OpenAI with generate_audio left off), this node detects a waveform with no real samples and skips the save, printing a warning and showing "No audio data received." It won't crash the graph. But the failure mode is silent - literally - so if you queue a run and hear nothing, check that you picked an audio-capable model on the Gemini side, or that you ticked generate_audio on the OpenAI configurator. The problem is almost never this node; it's the setup upstream.
Install
Ships with ComfyUI-Universal-LLM-Suite: ComfyUI Manager β search "Universal LLM Suite", or:
cd ComfyUI/custom_nodes/
git clone https://github.com/alice-ai-wonder/ComfyUI-Universal-LLM-Suite
Restart; the pack auto-installs google-genai, openai, and librosa on boot. No API key or model needed for this node itself - it only ever sees the audio the runner already fetched. One note for recording-clean setups: the saved WAVs pile up in output/llm_audio/, so occasionally sweep that folder. It's the pack's free-and-local end, even though everything feeding it cost tokens at Google or OpenAI.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | β |
Outputs (0)
No outputs