Extensions/Lyrebird
ComfyUI Extension

Lyrebird

Voice effects and voice changer for ComfyUI: clean up recordings, transform voices (monster, robot, gender, age…) with presets, live preview

By agarzon·Created a day ago·Updated a day ago· 0
agarzon/ComfyUI-Lyrebird
Nodes—
On cloudLocal install
Stars0
Updateda day ago
Readme
<p align="center"> <img src="assets/banner.jpg" alt="ComfyUI-Lyrebird — voice cleanup and voice FX for ComfyUI" width="100%"> </p> <h1 align="center">ComfyUI-Lyrebird</h1> <p align="center"> <strong>Voice cleanup and a voice changer for ComfyUI.</strong><br> Record, clean, then give the voice a personality: monster, robot, radio, elderly… with presets you can blend, tweak and save, and a live loop that plays your changes as you make them. </p> <p align="center"> <a href="https://github.com/agarzon/ComfyUI-Lyrebird/releases"><img alt="Latest release" src="https://img.shields.io/github/v/release/agarzon/ComfyUI-Lyrebird?display_name=tag"></a> <a href="LICENSE"><img alt="License: GPL-3.0" src="https://img.shields.io/badge/License-GPL--3.0-blue.svg"></a> <img alt="Python 3.10+" src="https://img.shields.io/badge/python-3.10%2B-blue"> <a href="https://wallrus.tech"><img alt="Sponsored by Wallrus" src="https://img.shields.io/badge/sponsored%20by-Wallrus-7c3aed"></a> </p>

✨ Features

<p align="center"> <img src="assets/screenshot.png" alt="Voice FX node: the Dragon preset, the Grit stage open, and a live waveform" width="420"> </p>
  • 🎙️ Two nodes — Voice Cleanup (tidy a raw recording) and Voice FX (give it a personality), both plain core AUDIO in and out.
  • 🎭 37 built-in presets in 7 categories — Creatures, Characters, Sci-fi, Spooky, Devices, Places, Fun.
  • 🎛️ Blend two presets — mix a second preset into the current one and keep tweaking; the engine still renders once, so reverbs and pitch shifts never stack.
  • 🎼 Pitch and formant are independent — built on WORLD analysis and synthesis, so gender and age changes sound like a different person, not a chipmunk.
  • 👁️ Every parameter is visible — a friendly name up front, the technical term underneath, for the times you want an exact value.
  • 🔁 Live loop — run the workflow once, then hear every tweak on a looping region within a fraction of a second, through the same engine that renders the final output.
  • 💾 User presets survive node updates — saved presets live in your ComfyUI user directory, never inside the node package.
  • 📤 Import / export — share a preset as a .json file, or bring one in from a friend.

📦 Installation

Requires ComfyUI ≥ 0.4.0

Option A — ComfyUI Manager (recommended)

Open ComfyUI Manager → Custom Nodes Manager, search for Lyrebird, click Install, and restart ComfyUI.

Option B — git clone

cd ComfyUI/custom_nodes
git clone https://github.com/agarzon/ComfyUI-Lyrebird.git
pip install -r ComfyUI-Lyrebird/requirements.txt

Restart ComfyUI.

Note: Lyrebird depends on pyworld-prebuilt, which installs the pyworld module from prebuilt wheels. It can conflict with another node pack that requires upstream pyworld, since both provide the same module.

🎛️ Using Lyrebird

Wire Record Audio (or Load Audio) → Voice Cleanup → Voice FX → Save Audio. Cleanup tidies the raw recording; FX gives it a personality.

A ready-made version lives under Workflow → Browse Templates → comfyui-lyrebird: pick your own recording in Load Audio and run it.

Voice Cleanup

Runs in a fixed order:

| Widget | Range / values | Default | Implementation | |---|---|---|---| | high_pass_hz | 0–200 (0 = off) | 80 | scipy 2nd-order Butterworth high-pass | | hum_removal | off / 50 Hz / 60 Hz | off | scipy iirnotch at the fundamental plus 4 harmonics | | noise_reduction | 0.0–1.0 | 0.5 | noisereduce spectral gating (prop_decrease) | | gate_threshold_db | -80 to -20 (-80 = off) | -80 | pedalboard NoiseGate | | de_ess | 0.0–1.0 | 0.0 | 4–9 kHz band split with a scipy Butterworth band-pass, compressed by a pedalboard Compressor | | normalize_lufs | off / -14 / -16 / -19 / -23 | -16 | pyloudnorm, then a -1 dBFS sample-peak limiter |

Voice FX: presets and blending

Pick a preset from the bar (◀ ▶ to step through, the picker to browse by category), or start from No preset. Every parameter stays visible and editable underneath: eight stages (Voice, Time, Tone, Grit, Modulation, Dynamics, Space, Output); every stage except Output has its own bypass toggle.

  • Blend — mix in a second preset and move the slider; your own tweaks are kept as offsets on top of the blend.
  • Save (💾) always writes a new preset into ★ Mine — built-ins are read-only, so tweaking one only marks it "● modified", and ↺ Reset puts it back. A name that collides with one of your own presets turns Save into an overwrite (with a warning); a name matching a built-in is rejected.
  • Import / export — Import (a .json file) always lands in ★ Mine; Export downloads the current settings.
  • 🎲 nudges a few parameters at random, if you want a starting point.

Live loop

Run the workflow once, then press 🔁 Loop — it plays a region of the cached input on repeat, and every knob you move is heard within a fraction of a second, without re-queuing. Drag on the waveform to move the loop region (up to 30 s); A/B swaps between the original and the processed audio at the same playhead position.

Where your presets live

User presets are saved under <ComfyUI user dir>/lyrebird/presets/ — never inside the node package, so updating Lyrebird never touches them.

🛠️ Development

uv venv -p 3.10 .venv
uv pip install --python .venv/bin/python -e ".[test]"
.venv/bin/pytest -q
node --test tests/test-blend.mjs tests/test-controls.mjs

Smoke testing with Docker

docker compose -f docker/docker-compose.yml up -d --build

ComfyUI will be available at http://localhost:8188 with Lyrebird pre-loaded. Restart the container for Python changes; hard-reload the browser for JavaScript changes.

🐾 The story behind the name

The lyrebird is an Australian bird that can imitate almost any sound it hears — other birds, camera shutters, chainsaws. A voice changer that can become almost anything felt like a fitting namesake.

💙 Sponsored by Wallrus

ComfyUI-Lyrebird is proudly sponsored by Wallrus. If Lyrebird makes your ComfyUI workflow nicer, go say hi. 🐦

📄 License

GPL-3.0 © 2026 Alexander Garzon