Terminal synced lyrics toolkit with CLI tools and a Textual TUI
Project description
lrc-tools
_ ____ ___ _____ _
| | |___ \ / _ \ |_ _|_ _ ___| |_
| | __) | | | | | |/ _` |/ _ \ __|
| |___ / __/| |_| | | | (_| | __/ |_
|_____|_____| \___/ |_|\__,_|\___|\__|
Terminal synced lyrics toolkit — fetch, process, and visualize .lrc lyrics from your terminal.
What is this?
Three operations from the terminal:
- Fetch synced lyrics from LRCLIB for your music library
- Process
.lrcinto word-level.wlrcwith phrase splitting and onset detection - Visualize lyrics in real time while music is playing (MPRIS / mpv / ffplay)
New? Run lrc-tools, pick your music folder, fetch → process → enjoy.
Quick install
pip install --user lrc-tools
# Or with extras:
pip install --user "lrc-tools[full]" # +mutagen +syncedlyrics +textual
Or download a binary from Releases.
System requirements: Python 3.12+, ffmpeg/ffprobe, playerctl (Linux only).
Commands
| Command | What it does |
|---|---|
lrc-tools / lt |
Interactive TUI (or simple menu if Textual is missing) |
lrc-fetch |
Batch download .lrc lyrics from LRCLIB |
lrc-processor |
Split phrases, convert .lrc → .wlrc |
lrc-vis |
Real-time lyric visualizer in the terminal |
CLI examples
# Fetch lyrics for all songs in ~/Music
lrc-fetch --audio-dir ~/Music --output-dir ~/.local/share/lrc-tools/lyrics/raw
# Process to word-level with custom split settings
lrc-processor --lrc-dir ./raw --audio-dir ./music --output-dir ./out --wlrc \
--max-phrase-duration 3.0 --max-words 10
# Visualize with auto-match from media player
lrc-vis --lrc-dir ~/.local/share/lrc-tools/lyrics/processed --wlrc
# Validate an LRC file
python3 -c "from lrc_tools.parser import validate_lrc; print(validate_lrc('file.lrc'))"
# Export LRC to SRT subtitles
python3 -c "from lrc_tools.exporters import export_srt; export_srt('file.lrc', 'file.srt')"
See --help on any command for full options.
Default paths
| What | Path |
|---|---|
| Raw lyrics | ~/.local/share/lrc-tools/lyrics/raw |
| Processed lyrics | ~/.local/share/lrc-tools/lyrics/processed |
| Config | ~/.config/lrc-tools/config.yaml |
On macOS: ~/Library/Application Support/ and ~/Library/Preferences/.
On Windows: %LOCALAPPDATA% and %APPDATA%.
Workflow
Audio files ──→ lrc-fetch ──→ .lrc (raw) ──→ lrc-processor ──→ .wlrc ──→ lrc-vis
Or from the TUI: lrc-tools → Configure paths → Fetch → Process → Visualize.
Features
| Feature | Status |
|---|---|
| Fetch lyrics from LRCLIB | ✅ |
| syncedlyrics fallback provider | ✅ |
| Phrase splitting (commas, duration, word count) | ✅ |
| Word-level WLRC format | ✅ |
| Onset detection via librosa | ✅ |
| Real-time visualizer (playerctl / mpv / ffplay) | ✅ |
| Textual TUI | ✅ |
| CLI with rich progress bars and colors | ✅ |
| Cross-platform (Linux / macOS / Windows) | ✅ |
| LRC validation and repair | ✅ |
| Timestamp offset (shift all timestamps) | ✅ |
| Merge / split LRC files | ✅ |
| Export to SRT subtitles | ✅ |
| Export/import JSON | ✅ |
| Dry-run mode | ✅ |
| Auto-backup before overwrite | ✅ |
| PyInstaller binaries | ✅ |
| Custom ASCII fonts | ✅ |
Docs
Development
git clone https://github.com/RicknotDev/lrc-tools
cd lrc-tools
pip install -e ".[full]"
python -m unittest discover -s tests
See CONTRIBUTING.md.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lrc_tools-0.3.0.tar.gz.
File metadata
- Download URL: lrc_tools-0.3.0.tar.gz
- Upload date:
- Size: 53.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d3dba790b4b7d80dc36d3663bb77377c37778f00176e6d6c9cff3685b8b4911
|
|
| MD5 |
fedcebf65a9ffe9cb8d02dbf2c0a28ce
|
|
| BLAKE2b-256 |
464c31a42fa8c300924bbbb6b2ac9ccd055c55260102208b8ba03fbdf32ea74e
|
File details
Details for the file lrc_tools-0.3.0-py3-none-any.whl.
File metadata
- Download URL: lrc_tools-0.3.0-py3-none-any.whl
- Upload date:
- Size: 58.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7206749fa4a4d2d8fddde49e9a2e8c011bff7bd101cd51d8e7f9227c7f6a2657
|
|
| MD5 |
59c5ec48147dca34bcb8463c7dc0a144
|
|
| BLAKE2b-256 |
24d39f2d04adcea7d650b31db79fda853e93ac6bff00e76ff627976ea82e2320
|