Nodes/ComfyUI-Universal-LLM-Suite/πŸ”Š LLM Audio Save & Play
ComfyUI Node

πŸ”Š LLM Audio Save & Play

The Node That Lets You Hear the Voice

By alice-ai-wonderΒ·Created 4 months agoΒ·Updated 4 months agoΒ· 1
πŸ”Š LLM Audio Save & Play
  • 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:

    1. Converts the waveform to a standard 16-bit PCM WAV (the pack's own audio_dict_to_wav_bytes helper handles the tensor β†’ WAV header + data conversion).
    2. Saves the file to ComfyUI/output/llm_audio/ with a timestamped name like llm_audio_20260820_153000.wav, so you've got a permanent artifact on disk.
    3. Writes a temp copy for the browser and hands the node a playable URL.
    4. 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.

    Category✨ Universal LLM

    Inputs (1)

    NameTypeDefaultDescription
    audioAUDIOβ€”

    Outputs (0)

    No outputs