This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+12 more
ReleasePort's take
Light signalCJK lyric support now includes per‑character forced alignment and romanized readings for Japanese, Chinese, and Korean songs.
Why it matters: Enables precise karaoke syncing for CJK tracks; test updated lyrics in dev environments before deploying v0.6.0.
Summary
AI summaryCJK lyric support adds per‑character forced alignment with romanized readings for Japanese, Chinese, and Korean songs.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
CJK lyric support for Japanese, Chinese, and Korean songs with per-character forced-alignment and romanized readings. CJK lyric support for Japanese, Chinese, and Korean songs with per-character forced-alignment and romanized readings. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Parakeet v3 ASR (experimental) for ~25 European languages, switchable in Settings. Parakeet v3 ASR (experimental) for ~25 European languages, switchable in Settings. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
UltraStar Deluxe songs support (.txt or .usdx bundles) with built-in pitch and lyric data; no analyzer pass needed. UltraStar Deluxe songs support (.txt or .usdx bundles) with built-in pitch and lyric data; no analyzer pass needed. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Persistent analyzer server runs as a long-lived Python process communicating via token-authenticated TCP socket using NDJSON. Persistent analyzer server runs as a long-lived Python process communicating via token-authenticated TCP socket using NDJSON. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Audio-reactive shader backgrounds expanded from 5 to 10 options, reacting in real time to microphone input when enabled. Audio-reactive shader backgrounds expanded from 5 to 10 options, reacting in real time to microphone input when enabled. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
In-app updater for macOS and Windows downloads and installs new releases from inside the app with progress reporting. In-app updater for macOS and Windows downloads and installs new releases from inside the app with progress reporting. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Mic monitor gain slider now a 0–200% adjustable control in Settings, replacing the fixed level slider. Mic monitor gain slider now a 0–200% adjustable control in Settings, replacing the fixed level slider. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Performance | Medium |
GPU models (Whisper, Parakeet, alignment model, stem separator) now loaded one at a time with freeing between stages, lowering peak VRAM usage. GPU models (Whisper, Parakeet, alignment model, stem separator) now loaded one at a time with freeing between stages, lowering peak VRAM usage. Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Bugfix | Medium |
Alignment robustness improved by fixing edge cases in WhisperX alignment path, including better handling of silence-bounded segments and out-of-vocab tokens. Alignment robustness improved by fixing edge cases in WhisperX alignment path, including better handling of silence-bounded segments and out-of-vocab tokens. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Refactor | Low |
Playback state moved to dedicated React contexts (transport, transcript, mic, theme) eliminating prop‑drilling through playback‑inner component. Playback state moved to dedicated React contexts (transport, transcript, mic, theme) eliminating prop‑drilling through playback‑inner component. Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Refactor | Low |
Pitch analysis and reactive shader processing moved to TypeScript client side using raw PCM streamed from Tauri, reducing native code footprint. Pitch analysis and reactive shader processing moved to TypeScript client side using raw PCM streamed from Tauri, reducing native code footprint. Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
Full changelog
Highlights
- CJK lyric support — Japanese, Chinese, and Korean songs now go through a per-character forced-alignment path with romanized readings (Hepburn / pinyin / Revised Romanization) shown above each token. Japanese uses a hiragana-vocab wav2vec2 model fed through fugashi, which sidesteps the dense kanji vocabulary and matches natural speech far better than the default checkpoint.
- Parakeet v3 ASR (experimental) — alternative to Whisper for ~25 European languages. NeMo on CUDA, ONNX Runtime on CPU and Apple Silicon. Switchable from Settings → Analysis. Falls back to Whisper automatically if Parakeet returns no usable words.
- UltraStar Deluxe songs (experimental) — drop USDX bundles (.txt or .usdx plus sibling audio/vocals/instrumental/video) into your library and play them with their built-in pitch and lyric data. No analyzer pass needed; stem separation is skipped entirely when #VOCALS and #INSTRUMENTAL are provided. See docs/usdx.
- Audio-reactive shader backgrounds — the 5-shader lineup is now 10 (Plasma, Waves, Nebula, Starfield, Sonar, Voronoi, Vortex, Metaballs, Spectrum, Oscilloscope) and they all react to your microphone input in real time when the mic is enabled.
- Persistent analyzer server — the Python analyzer is now a long-lived process talking to the app over a token-authenticated loopback TCP socket using NDJSON.
- In-app updater (macOS and Windows) — Nightingale now checks for new releases and can download and install updates from inside the app. A new Update entry lives in the sidebar actions menu, with progress reporting and a one-click relaunch when the install finishes. Linux still ships the menu entry but opens the GitHub Releases page since the updater plugin isn't compiled in for Linux builds.
Improvements
- Mic monitor gain slider — the live mic-mirror volume is now a 0–200% slider in Settings, replacing the previous fixed level.
- Cleaner client architecture — playback state lives in dedicated React contexts (transport, transcript, mic, theme) instead of being prop-drilled through playback-inner. The shader visualizer was also extracted from the old monolithic video-background component.
- Pitch and reactive analysis moved to the client — both run in TypeScript over raw PCM samples streamed from Tauri, dropping a chunk of native code and making them easier to tune.
- Single GPU model at a time — Whisper, Parakeet, the alignment model, and the stem separator are now loaded one at a time and freed between stages, lowering peak VRAM and reducing OOMs on smaller GPUs.
- Alignment robustness — several edge cases in the WhisperX alignment path were fixed, including better handling of silence-bounded segments and tokens that fall outside the model vocab.
Fixes
- Various typo and copy fixes in playback UI strings.
Documentation
- New UltraStar Deluxe docs page covering detection, supported tags, the BPM/GAP timing model, and limitations.
- Expanded Lyrics & Transcription docs with ASR engine selection and a CJK languages section.
- Updated Backgrounds, Configuration, and How It Works pages.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About nightingale
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]