AutoLRC
Generates line-level .lrc, .srt, and .vtt files from an audio file and a reference lyrics .txt.
Setup
Requires Python 3.12 and ffmpeg on PATH.
python3.12 -m venv .venv
. .venv/bin/activate
pip install --upgrade pip
# GPU (CUDA 12.8)
pip install torch --index-url https://download.pytorch.org/whl/cu128
pip install -e .[gpu,dev]
# CPU
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install -e .[cpu,dev]
Verify the install:
autolrc doctor
Single File
autolrc align --audio song.wav --lyrics song.txt
Accepts .wav, .flac, or .mp3. Outputs song.lrc, song.srt, and song.vtt alongside the audio.
Key options:
| Option | Effect |
|---|---|
--title, --artist |
Write [ti], [ar] tags to the LRC |
--lang <code> |
Override language (default: auto-detected) |
--enhanced-lrc |
Karaoke-style LRC with inline word-level timestamps |
--skip-existing |
Skip the run if song.lrc already exists |
--separator-boost |
Separate vocals before aligning (improves noisy tracks) |
--save-vocals |
Keep the separated stem as song.vocals.wav |
--json-report |
Write a song.json quality report |
--model |
Whisper model size: base, small, medium (default), large-v3 |
--device |
auto (default), cuda, or cpu |
--to-flac, --to-alac |
Also write a lossless sibling (song.flac / song.m4a) — ~50% the size of WAV |
--to-aac, --to-mp3 |
Also write a lossy sibling (song.aac @ 256k / song.mp3 @ V0) |
The [la] tag is written automatically from the detected language; --lang overrides it.
If alignment finishes with average_confidence < 0.5, inspect the output and consider rerunning with --separator-boost.
Examples:
# With metadata tags
autolrc align --audio song.wav --lyrics song.txt --title "Song Name" --artist "Artist"
# Karaoke-style LRC with word timestamps
autolrc align --audio song.wav --lyrics song.txt --enhanced-lrc
# With vocal separation and quality report
autolrc align --audio song.wav --lyrics song.txt --separator-boost --save-vocals --json-report
# Also emit a lossless FLAC sibling (and an MP3) next to the WAV
autolrc align --audio song.wav --lyrics song.txt --to-flac --to-mp3
The --to-* flags work in batch mode too. They are rejected when the source audio is .mp3 (lossy → lossless re-encoding adds no value). When the source already matches the target format (e.g. song.flac --to-flac), that conversion is skipped to avoid overwriting the source.
Batch Mode
Pass a directory to --audio to process all matching pairs at once:
autolrc align --audio ./my-songs/
autolrc align --audio ./my-songs/ --recursive --skip-existing
autolrc align --audio ./my-songs/ --artist "Artist" --enhanced-lrc --json-report
Rules:
- Matches same-stem
.wav/.flac/.mp3files with a sibling.txt; priority is.wav > .flac > .mp3 - Non-recursive by default; use
--recursiveto walk subdirectories - Continues on per-track failures; exits with code
1if any track fails --skip-existingskips tracks whose.lrcalready exists--titleand--langare rejected;--artistis allowed- When
--artistis given, each LRC gets[ar:<artist>]and[ti:<file-stem>]
Per-track outputs: song.lrc, song.srt, song.vtt, and optionally song.json, song.vocals.wav
Other Commands
autolrc inspect --lyrics song.txt # Preview normalized lyric lines
autolrc doctor # Show runtime diagnostics
autolrc cache clear # Remove the local cache directory
Metadata
Release files for autolrc-tools 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| autolrc_tools-0.3.2.tar.gz | 38.5 kB | Without provenance | Details for autolrc_tools-0.3.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| autolrc_tools-0.3.2-py3-none-any.whl | Python 3 | none | any | Details for autolrc_tools-0.3.2-py3-none-any.whl |
Total release size: 67.2 kB
Release files / autolrc_tools-0.3.2.tar.gz
| Download URL | autolrc_tools-0.3.2.tar.gz |
|---|---|
| Size | 38.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
956c1b983a871ba4c6ad6dedc5238fa0fde3433f09b504c48f719d5ca645185e
|
|
BLAKE2b-256 checksum How to use checksums |
6bf8f93d5d0ddfc11fb773e4efac0c76f217ea41013f3cc5b37bba4ac41fbe2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Release files / autolrc_tools-0.3.2-py3-none-any.whl
| Download URL | autolrc_tools-0.3.2-py3-none-any.whl |
|---|---|
| Size | 28.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1a54c2a64434517ac317e98bd156abfc0a4eb82824ee0d2386598dc10f026a11
|
|
BLAKE2b-256 checksum How to use checksums |
d9f003c1682d3580d003b754e4940164948348a1c8ce5d7cd89b90e3f88e31a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Security for autolrc-tools 0.3.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.