CTCLRC is a Windows & Linux desktop application that produces synced LRC lyric files for your local music library, in three ways that combine into one pipeline:
- Download existing synced lyrics from online sources
- Generate timings with CTC Forced Alignment from plain lyrics
- Verify / edit timings in the Lyric Viewer, then optionally publish to LRCLIB
The lyrics text is treated as the ground truth, and the application estimates timestamps for each lyric line.
Android users should use CTCLRC-droid.
For standalone lyrics downloader, use LRCdownloader.
Use the packaged Windows application:
- Build the executable according to your setup. (Hardware, OS)
- Launch the application.
- Add tracks:
Add Audio…,Add Directory(recursive optional), or drag & drop files/folders. - Check settings / params according to your preferences. (languages, download sources, etc.)
- Hit
Generateto initiate autoamtic workflow. By default, Download from online sources runs first, tehn reamining plain lyrics will be ran through CTC model for alignment. - Once generated, use the
Lyric Viewer / Editorbutton to check if the timings are correct. If not, you can edit the timing manually by editing timestamps (doube click) or useTap-syncmode to re-tap timings line by line while the song plays. - Once done, you can save edited lyrics, embed them into the audio file, and optionally publish them on LRCLIB to help others.
- The generated
.lrcfile is saved in the same folder as the audio file (or the chosen output directory).
| Component | Minimum |
|---|---|
| OS | Windows 10 (64-bit) |
| CPU | Intel Core i5-8600 / AMD Ryzen 5 2600 |
| Memory | 8 GB RAM |
| Storage | 2 GB available SSD space |
| GPU | Not required (CPU mode) |
| Component | Recommended |
|---|---|
| OS | Windows 10/11 (64-bit) |
| CPU | Intel Core i5-12400 / AMD Ryzen 5 5600 or better |
| Memory | 16+ GB RAM |
| Storage | NVMe SSD / Is there such thing as too much storage? |
| GPU | Nvidia or AMD GPU with Torch / 6GB+ VRAM |
- CPU-only inference is fully supported, though slower than GPU inference.
- In GPU mode, the generation will be significantly faster. For GPU mode to work, you need to install appropriate Torch versions. (CUDA/ROCm)
- The first launch downloads the alignment model (approximately 1–2 GB depending on the model format) unless it is bundled with the application.
- Longer audio files require proportionally more processing time.
- More complex tracks (especially autotunes, vocal chops) may benefit from separation with somehting like UVR then using vocal only for the processing.
Run the following command from the project root directory:
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
-
Select appropriate options at Pytorch Website to get correct installation commands.
-
Install Pytorch in the venv (run
.venv\scripts\activateto enter venv)Once installed and confirmed torch and CUDA device is visible, you can manually build your executable.
-
For AMD ROCm + Pytorch support, refer to official instructions from AMD, since Torch on ROCm is not officially distributed at Pytorch.org.
-
Install ROCm + Pytorch in the venv (run
.venv\scripts\activateto enter venv)ROCm Docs - Install PyTorch for ROCm ROCm Docs - PyTorch via PIP installation
Once installed and confirmed torch and CUDA device is visible, you can manually build your executable.
If you have a local copy of the ctc-forced-aligner ZIP package:
.\.venv\Scripts\python.exe -m pip install path\to\ctc-forced-aligner-main.zip
.\.venv\Scripts\python.exe -m PyInstaller --clean --noconfirm CTCLRC.spec
- It may take 15+ minutes if you include torch, just go make a coffee or tea or what have you.
Output:
dist\CTCLRC\CTCLRC.exe
Builds use the directory (One-Dir) PyInstaller specification:
.\.venv\Scripts\python.exe -m PyInstaller --clean --noconfirm CTCLRC.spec
Output:
dist\CTCLRC\CTCLRC.exe
The output is a folder: CTCLRC.exe plus its support files. The directory
build starts much faster than a single-file build (no multi-GB unpack to a
temp dir on every launch) and is used together with the startup splash screen.
Move the whole dist\CTCLRC folder together and run CTCLRC.exe from inside it.
The application uses the following components:
ctc-forced-alignerMahmoudAshraf/mms-300m-1130-forced-aligner
If the model is not bundled, the application automatically downloads it from Hugging Face during the first run and reuses the local cache afterward.
To create a fully offline executable, place the downloaded model in the following location before building:
models/mms-300m-1130-forced-aligner/
If the models/ directory exists, CTCLRC.spec automatically bundles it into the application.
The application also checks for the following directory next to the executable at runtime:
models/mms-300m-1130-forced-aligner/
huggingface-cli download MahmoudAshraf/mms-300m-1130-forced-aligner --local-dir models\mms-300m-1130-forced-aligner
.\.venv\Scripts\python.exe test_cleaning.py
.\.venv\Scripts\python.exe test_downloader_merge.py
.\.venv\Scripts\python.exe test_features.py # includes a heavy alignment test; needs the model
When distributing the source code, do not include the following:
.venvbuilddist- Generated
.lrcfiles - Model files
- Copyrighted audio files
Run:
.\make_source_zip.ps1
This creates:
CTCLRC-source.zip
- LRCLIB: https://lrclib.net/docs
- Syncedlyrics (NetEase, Musixmatch, Megalobiz, Lrclib, Genius): https://github.com/moehmeni/syncedlyrics
- Spotify Lyrics API (opt-in, self-hosted instance +
SP_DCcookie. may violate Spotify TOS, use at own risk): https://github.com/akashrchandran/spotify-lyrics-api - SongSync (Inspiration for LRCdownloader): https://github.com/Lambada10/SongSync