Karaoke from any song in your music library, powered by neural networks.
Nightingale scans your music folder, separates lead vocals from instrumentals using the UVR Karaoke model (or Demucs), transcribes lyrics with word-level timestamps via WhisperX, and plays it all back with synchronized highlighting, pitch scoring, key/tempo controls, profiles, and dynamic backgrounds.
Ships as a single binary. No manual installation of Python, ffmpeg, or ML models required โ everything is downloaded and bootstrapped automatically on first launch.
๐ค Stem Separation โ isolates lead vocals from instrumentals using the UVR Karaoke model (default) or Demucs, with adjustable guide vocal volume. The karaoke model preserves backing vocals in the instrumental for a more natural sound
๐ Word-Level Lyrics โ automatic transcription with alignment, or fetched from LRCLIB when available
๐ฏ Pitch Scoring โ real-time microphone input with pitch detection, star ratings, and per-song scoreboards
๐๏ธ Key & Tempo Shifts โ adjust song key and tempo after analysis, with cached playback variants for quick retries
๐ค Profiles โ create and switch between player profiles; scores are tracked per profile
๐ฌ Video Files โ drop video files (.mp4, .mkv, etc.) into your music folder; vocals are separated from the audio track and the original video plays as a synchronized background
๐ 7 Background Themes โ 5 GPU shader backgrounds (Plasma, Aurora, Waves, Nebula, Starfield), Pixabay video backgrounds with 5 flavors (Nature, Underwater, Space, City, Countryside), plus automatic source video playback for video files
๐งญ Sidebar + Library Filters โ quick filters, metadata cleanup buckets, artist/album groups, and an Analyze All action for bulk analysis
๐๏ธ Mic Mirroring โ optionally route your live mic into playback for low-latency practice and monitoring
๐ฎ Gamepad Support โ full navigation and control via gamepad (D-pad, sticks, face buttons)
๐บ Adaptive UI Scaling โ scales to any resolution including 4K TVs
๐ฆ Self-Contained โ ffmpeg, uv, Python, PyTorch, and ML packages are downloaded automatically during setup. Video backgrounds are pre-downloaded so the first session is ready to go
๐ Multi-Device, Multi-Channel Support โ connect professional audio interfaces (e.g. Allen & Heath QU-5D) with multiple input microphones and multiple output channels. Route guide vocals to individual in-ear monitors or headphones per singer while keeping instrumentals on the main speakers. Input channel selection UI lets you pick which device and channel each microphone uses
๐ Vocal Pitch Graph โ the original singer's pitch contour is plotted alongside your live microphone input, so you can visualize in real time how close you are to the target melody
๐ Redesigned Song Cards โ explicit "Not Analyzed" / "Play" buttons replace the old click-anywhere behavior; audio/video type badges; thumbnail URLs for unanalyzed songs
๐ Language Confidence Indicator โ a warning icon appears on songs whose auto-detected language confidence is below threshold; you can manually select and switch the language
โ๏ธ Metadata & Lyrics Editing โ edit artist, title, album, and lyrics directly from the song card actions menu
๐ Romanized Lyrics (AI) โ generate romanized (Latin-script) lyrics for non-Latin songs (Japanese โ romaji, Hindi โ roman, etc.) via OpenAI/Gemini. Addresses upstream issue #11
๐ Folder / Tree View โ browse large music libraries organized by their on-disk folder structure with recursive navigation
๐ค AI Metadata Fixer โ batch-process filenames and metadata (artist, title, album) using OpenAI for songs collected from various sources. Includes a sneak-peek audio preview so you can verify corrections before applying
๐ต Song Sneak Peek โ preview a random 15-second clip of any song in the library or playlist view to decide whether to add or skip it
๐ Per-Profile Playlists โ create, manage, and switch between multiple playlists per profile. Add songs from the library or song cards; analyze entire playlists in bulk
โฌ๏ธ Download from URL โ paste a URL in settings to download and import songs directly into your library, so friends and family can quickly add their favorites during a karaoke night
Download the latest release for your platform from the Releases page and run it. On first launch, Nightingale shows setup steps, lets you pick a data folder, then installs the Python environment and ML models automatically.
macOS quarantines files downloaded from the internet. Since Nightingale isn't signed with an Apple Developer ID, Gatekeeper will block it with a message like "app is damaged and can't be opened". To fix this, remove the quarantine attribute after moving the Nightingale.app to Applications:
xattr -cr /Applications/Nightingale.appAudio: .mp3, .flac, .ogg, .wav, .m4a, .aac, .wma. Video: .mp4, .mkv, .avi, .webm, .mov, .m4v.
| Action | Keyboard | Gamepad |
|---|---|---|
| Move | Arrow keys | D-pad / Left stick |
| Confirm / Select | Enter | A (South) |
| Back / Cancel | Escape | B (East) / Start |
| Switch panel | Tab | โ |
| Search songs | Type to filter | โ |
| Action | Keyboard | Gamepad |
|---|---|---|
| Pause / Resume | Space | Start |
| Exit to menu | Escape | B (East) |
| Toggle guide vocals | G | โ |
| Guide volume up/down | + / - | โ |
| Cycle background theme | T | โ |
| Cycle video flavor | F | โ |
| Toggle microphone | M | โ |
| Next microphone | N | โ |
| Toggle mic mirroring | R | โ |
| Toggle fullscreen | F11 | โ |
| Skip Intro / Skip Outro | On-screen buttons | A (South) |
Audio or video file
โ
โผ
โโโโโโโโโโโโโโโโโโโ
โ UVR Karaoke / โ โโโถ vocals.mp3 + instrumental.mp3
โ Demucs โ (extracts audio track from videos)
โโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโ
โ LRCLIB โ โโโถ Fetches synced lyrics if available
โโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโ
โ WhisperX โ โโโถ Transcription + word-level alignment
โ (large-v3) โ
โโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโ
โ Tauri App โ โโโถ Plays instrumental + synced lyrics
โ (Rust + React) โ with pitch scoring, key/tempo controls,
โโโโโโโโโโโโโโโโโโโ mic mirroring, and dynamic backgrounds
(video files use source video when available)
Analysis results are cached using blake3 file hashes. Re-analysis only happens if the source file changes, the user triggers it manually, or you choose to shift key/tempo and create playback variants.
The Python analyzer uses PyTorch and auto-detects the best backend:
| Backend | Device | Notes |
|---|---|---|
| CUDA | NVIDIA GPU | Fastest |
| MPS | Apple Silicon | macOS; WhisperX alignment falls back to CPU |
| CPU | Any | Slowest but always works |
The UVR Karaoke model uses ONNX Runtime and enables CUDA acceleration automatically on NVIDIA GPUs, or CoreML on Apple Silicon.
A song typically takes 2โ5 minutes on GPU, 10โ20 minutes on CPU.
During setup, you can choose where Nightingale stores data (default: ~/.nightingale). Most runtime data is stored in that selected data folder, while config.json and nightingale.log remain in ~/.nightingale.
Typical selected data folder layout:
<selected-data-folder>/
โโโ cache/ # Stems, transcripts, lyrics, shifted variants, covers, playable videos
โโโ songs.db # SQLite song library and analysis metadata
โโโ profiles.json # Player profiles and scores
โโโ videos/ # Cached Pixabay video backgrounds
โโโ sounds/ # Sound effects (celebration)
โโโ vendor/
โ โโโ ffmpeg # Downloaded ffmpeg binary
โ โโโ uv # Downloaded uv binary
โ โโโ python/ # Python 3.10 installed via uv
โ โโโ venv/ # Virtual environment with ML packages
โ โโโ analyzer/ # Extracted analyzer Python scripts
โ โโโ .ready # Marker indicating setup is complete
โโโ models/
โโโ torch/ # Demucs model cache
โโโ huggingface/ # WhisperX model cache
โโโ audio_separator/ # UVR Karaoke model cache
~/.nightingale/config.json stores app settings, including the selected data folder path.
Pixabay video backgrounds use the Pixabay API. The API key is embedded in release builds. For development, create a .env file at the project root:
PIXABAY_API_KEY=your_key_here
| Tool | Version |
|---|---|
| Rust | 1.85+ (edition 2024) |
| Node.js | 20+ |
| pnpm | latest |
| Linux only | libwebkit2gtk-4.1-dev, libssl-dev, libayatana-appindicator3-dev, librsvg2-dev, libxdo-dev, libasound2-dev |
git clone <repo-url> nightingale
cd nightingale
cargo desktop devcargo desktop build| Platform | Target |
|---|---|
| Linux x86_64 | x86_64-unknown-linux-gnu |
| Linux aarch64 | aarch64-unknown-linux-gnu |
| macOS ARM | aarch64-apple-darwin |
| macOS Intel | x86_64-apple-darwin |
| Windows x86_64 | x86_64-pc-windows-msvc |
GPL-3.0-or-later โ see LICENSE.