Piper Speak Text
The Node That Reads Your Text Out Loud
- TTS
Piper Speak Text is the payoff half of the tiny two-node ComfyUI-TTS pack. The pack's own description says it best: it converts strings inside ComfyUI to audio so you can hear what's written. Feed it a sentence and it turns into a WAV you can play. No API keys, no cloud calls - it's all local, which is the whole point of pulling Piper into ComfyUI in the first place.
You reach for it when text alone isn't enough. The author built it specifically to pair with LLM text generation in the same graph - let a language model write the line and have this node read it back. It's also genuinely handy for checking prompts aloud before a big batch render, throwing quick narration under a video workflow, or just making your ComfyUI box feel alive. It's a utility node, not a hero node. It does one thing and does it simply.
How it works
Under the hood this is Piper, the offline neural TTS engine from the Rhasspy/Home Assistant world. It's a VITS-style model exported to ONNX and run through onnxruntime, which matters for two practical reasons: it runs on plain CPU at faster-than-realtime speeds, and it's tiny compared to the diffusion models sitting next to it in your graph. You don't need a GPU for this. The companion JSON config per voice carries the espeak-ng voice settings and sample rate the engine needs to phonemize and render your text.
The two inputs
The node is refreshingly minimal - there's only this pair, and both are required:
- TTS - the model object coming out of Load Piper Model. You have to wire this in; there's no default and nothing to fall back on.
- text - a
STRING, default empty. This is what gets spoken. Feed it a prompt, an LLM's output, anything.
Note the outputs column: it's empty. Piper Speak Text is marked as an output node, so instead of passing audio down the wire it writes the result out - you'll find your rendered WAV in ComfyUI's output folder after a run. That's the standard sink-node pattern; don't go hunting for a speaker output on the graph.
Installing it
Same story for the whole pack. Easiest route is ComfyUI Manager: search for ComfyUI-TTS on the install page, hit install, restart, then Ctrl+F5 to hard-reload the browser so the new TTS menu shows up. Manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/daniel-lewis-ab/ComfyUI-TTS
pip install piper-tts # the manual path needs this; Manager usually handles it
Then drop at least one voice (a .onnx plus its matching .json) into ComfyUI/custom_nodes/ComfyUI-TTS/models/ - that part is really Load Piper Model's job, but nothing speaks until it's done.
Where people get burned
- Forgetting to load the model. This node takes a
TTSobject, not a file path. If you wire text without running Load Piper Model first, there's nothing to speak with. - Empty text gives you silence. An empty string isn't an error, it's a blank WAV. Check your string upstream before blaming the node.
- The honest caveat. This pack is a very early, basic release by an individual author - the README itself says "only basic functionality is probable." As of mid-2026 the GitHub repo behind it returns a 404 and the author's account no longer resolves, so if your Manager install or
git clonefails, it's not you. Piper's 2020-era voices are fine for utility work but not audiobook material; if you actually want natural speech or voice cloning, the ecosystem has moved on - Kokoro and the Qwen3-TTS packs are the ones r/comfyui actually talks about now.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| TTS | TTS | — | |
| text | STRING | — |
Outputs (0)
No outputs