Skip to main content

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/.mp3 files with a sibling .txt; priority is .wav > .flac > .mp3
  • Non-recursive by default; use --recursive to walk subdirectories
  • Continues on per-track failures; exits with code 1 if any track fails
  • --skip-existing skips tracks whose .lrc already exists
  • --title and --lang are rejected; --artist is allowed
  • When --artist is 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)

Source distribution for autolrc-tools 0.3.2
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)

Table of built distributions (wheels) for autolrc-tools 0.3.2
File Interpreter ABI Platform Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page