← 开源
rzru

nightingale

Machine learning powered Karaoke app (with scores!)

ApplicationsContent creationAudio detectionTypeScript
在 GitHub 打开
增长势头
+224 小时新增 Star+0.1%
1.50k
Star
115
Fork
+8
本周
10
贡献者
创建于 2026-03-15 · 更新于 2026-10-15 · 今日第 3846 名
主要开发者
rzrupliniofpaHaloZero
README

Karaoke from any song in your music library, powered by neural networks.

Website · Downloads · Documentation · Changelog · Discord


Nightingale turns music you already have into karaoke. It can separate lead vocals, find or produce word-timed lyrics, and play tracks with synchronized highlighting, pitch scoring, key and tempo controls, multiplayer, and dynamic backgrounds. Use the native desktop app on Linux, macOS, or Windows, or run the same experience as a self-hosted web app.

Highlights

  • Bring your library — scan local audio, video, and UltraStar files, or connect Plex, Jellyfin, or Navidrome. Existing provider and folder playlists appear as read-only navigation.
  • Prepare tracks locally — separate vocals with UVR Karaoke or Demucs, then use LRCLIB, local or pasted LRC, or automatic transcription and alignment for lyrics.
  • Sing your way — follow synchronized lyrics, score microphone pitch, adjust key and tempo, mix guide vocals, monitor the microphone, and compensate for room latency.
  • Run a karaoke night — build a playback queue, keep managing it during Session mode, switch profiles, compare scoreboards, or assign separate microphones to two to four local players.
  • Set the stage — use source video, GPU shaders, Pixabay loops, or custom image, video, and shader backgrounds; reposition and scale lyrics and the pitch graph.
  • Use the screen you have — desktop and self-hosted modes share the same karaoke core, with keyboard, gamepad, touch, and layouts ranging from phones to 4K displays.

Detailed behavior, supported media formats, controls, analyzer options, and current limitations live in the user guide.

Get Nightingale

Mode Start here
Desktop Download the latest release
Self-hosted Linux Installation guide
Docker CPU and CUDA images

Desktop releases support Linux x86_64/aarch64, macOS Apple Silicon/Intel, and Windows x86_64. Self-hosted release binaries support Linux x86_64/aarch64.

First launch prepares an isolated copy of ffmpeg, Python, the analyzer packages, and required ML models. No system Python setup is needed, but the initial download is several gigabytes. GPU acceleration is optional; analysis falls back to CPU when CUDA or Apple Silicon acceleration is unavailable.

See Getting Started for setup, platform-specific notes, updates, and adding music. For failures, check Troubleshooting.

Documentation

Architecture

Desktop and self-hosted delivery share one Rust application core and one React frontend. Transport adapters stay thin so karaoke behavior does not diverge between Tauri and the web server.

flowchart LR
    UI["React UI"] --> Bridge["Typed bridge / client"]
    Bridge --> Tauri["Tauri IPC adapter"]
    Bridge --> Web["HTTP + WebSocket adapter"]
    Tauri --> API["app-api command contract"]
    Web --> API
    API --> Core["app-core"]
    Core --> Sources["Folder / Plex / Jellyfin / Navidrome"]
    Core --> Storage["SQLite library + cache"]
    Core --> Analyzer["Local Python analyzer"]

The analyzer runs as a persistent local process over token-authenticated loopback IPC, avoiding model startup cost for every song. Analysis artifacts are cached by BLAKE3 source hash, so unchanged tracks reuse stems, transcripts, lyrics, and shifted playback variants.

Repository layout

Path Responsibility
app-core/ Shared application behavior, source adapters, persistence, media serving, analyzer orchestration, and analyzer scripts
app-api/ Shared command contract, dispatch, state, events, and error classification
client/src/ React interface, feature modules, typed runtime bridge, playback, and microphone processing
client/src-tauri/ Tauri desktop adapter and native capabilities
client/src-server/ Axum HTTP/WebSocket adapter and embedded web bundle
site/ Astro website and mdBook user guide
docker/, scripts/ Container and bare-metal self-hosted distribution

Development

Prerequisites

Tool Version
Rust 1.94.1, pinned by rust-toolchain.toml
Node.js 22.12 or newer
pnpm 11.2.2

Platform build packages, including Windows ASIO and Linux WebKit requirements, are listed in the building guide.

Run the desktop app

git clone https://github.com/rzru/nightingale.git
cd nightingale
pnpm --dir client install --frozen-lockfile
cargo desktop dev

Create a production bundle for the current platform with:

cargo desktop build

Before submitting application changes, run the repository checks:

pnpm --dir client format
pnpm --dir client quality

Website and guide tooling runs separately from site/; use pnpm --dir site build to validate those changes.

Contributing

Nightingale follows a discussion-first workflow. Before implementing a feature or behavior change, open a GitHub Discussion and wait for it to be approved. Small documentation corrections and obvious bug fixes can go directly to a pull request. Read CONTRIBUTING.md before starting.

Releasing

Tags matching v* trigger the release workflow. It verifies the tag against the desktop manifests, extracts release notes from CHANGELOG.md, and creates a draft containing desktop installers, updater artifacts, and self-hosted server archives. Smoke-test the draft artifacts, then publish the release through GitHub.

git tag v
git push origin v

The workflow and its helper scripts are the canonical source for artifact and signing details.

Support the project

Nightingale is free, open source, and maintained in spare time. Support ongoing development through Patreon or Ko-fi.

License

GPL-3.0-or-later — see LICENSE.

排名相邻
同类项目