TUI app for transcribing and editing synced song lyrics
Project description
lyrsmith
An AI-powered terminal UI for transcribing and editing time-synced song lyrics in LRC format.
Point it at a directory, load a track, run Whisper to get a rough transcription, then nudge timestamps until they're right. Saves directly to the audio file's tags.
Features
- AI transcription via faster-whisper — runs locally, no cloud
- Waveform display for visual timing reference
- LRC timestamp editing — stamp, nudge (fine/medium/rough), merge, split, delete, undo
- Plain text mode for unsynced lyrics
- Reads and writes lyrics tags on MP3, FLAC, OGG, OPUS
Requirements
- Python 3.13 (3.14 is not yet supported due to a ctranslate2 bug)
- libmpv (audio playback)
- FFmpeg libraries (waveform decoding via PyAV)
On Fedora/RHEL:
dnf install mpv-libs ffmpeg-free
On Debian/Ubuntu:
apt install libmpv-dev ffmpeg
On macOS, use the Homebrew installation method below — it handles all dependencies automatically. GPU-accelerated transcription is not available on macOS; transcription runs on CPU.
NVIDIA GPU — if you want GPU-accelerated transcription, also install libcublas and make sure it is registered with ldconfig:
# Fedora example — package name may vary
dnf install libcublas
echo "/usr/local/cuda-12.0/targets/x86_64-linux/lib" | sudo tee /etc/ld.so.conf.d/cuda.conf
sudo ldconfig
Install
macOS — Homebrew (experimental)
brew tap triluch/lyrsmith
brew install lyrsmith
All dependencies (mpv, ffmpeg, Python 3.13) are installed automatically.
Linux / from source
Using uv:
git clone https://github.com/triluch/lyrsmith
cd lyrsmith
uv tool install . --python 3.13
Or with pipx:
pipx install .
Linux — AppImage
Download the latest lyrsmith-*-x86_64.AppImage from
https://github.com/triluch/lyrsmith/releases, then run:
chmod +x lyrsmith-*-x86_64.AppImage
./lyrsmith-*-x86_64.AppImage
Updating
cd lyrsmith
git pull
uv tool install . --python 3.13 --reinstall
Usage
lyrsmith [DIRECTORY]
If no directory is given, the last-used directory is restored (or the current working directory on first run).
Press F1 inside the app to see all keybindings.
Recommended model: large-v3-turbo (the default) gives good results at reasonable speed. large-v3 is noticeably more accurate for tricky lyrics but slower and needs more RAM. Configure via F2.
Voice Activity Detection (VAD) is disabled by default. If you're getting a lot of repeated lines or hallucinated text in the transcription, try enabling it with a low threshold like 0.00005–0.0001 — this pre-filters the audio before Whisper and can significantly improve results on tracks with instrumental sections or background noise.
And yeah, of course it is slopped out, what did you expect in current times?
Project details
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 lyrsmith-0.3.0.tar.gz.
File metadata
- Download URL: lyrsmith-0.3.0.tar.gz
- Upload date:
- Size: 92.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e68273034ad54b8d1caf9e9374e3ef4af8d4fa6ac7ffd723bd2023a4b1f9f185
|
|
| MD5 |
e159e2426a09ab4e4ce701b26073b8a0
|
|
| BLAKE2b-256 |
87109d45c80590aee70f5ded8bbeec1cba9ef3a7cb96a308257e0ff2f41edc0c
|
Provenance
The following attestation bundles were made for lyrsmith-0.3.0.tar.gz:
Publisher:
release.yml on triluch/lyrsmith
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lyrsmith-0.3.0.tar.gz -
Subject digest:
e68273034ad54b8d1caf9e9374e3ef4af8d4fa6ac7ffd723bd2023a4b1f9f185 - Sigstore transparency entry: 1369428387
- Sigstore integration time:
-
Permalink:
triluch/lyrsmith@b5297909f7d982c52fcbf7af6129e5360f070917 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/triluch
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b5297909f7d982c52fcbf7af6129e5360f070917 -
Trigger Event:
release
-
Statement type:
File details
Details for the file lyrsmith-0.3.0-py3-none-any.whl.
File metadata
- Download URL: lyrsmith-0.3.0-py3-none-any.whl
- Upload date:
- Size: 112.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
256fdfd5abeae0f8c7255b025693d93e54a71b99c760b8f74a273c16c4d84a85
|
|
| MD5 |
231eec5046524c4ff997c630411fcfad
|
|
| BLAKE2b-256 |
4b62ff2abcd0fb553bfb1a388342910f87fa24cfae34665547482196bb4fa773
|
Provenance
The following attestation bundles were made for lyrsmith-0.3.0-py3-none-any.whl:
Publisher:
release.yml on triluch/lyrsmith
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lyrsmith-0.3.0-py3-none-any.whl -
Subject digest:
256fdfd5abeae0f8c7255b025693d93e54a71b99c760b8f74a273c16c4d84a85 - Sigstore transparency entry: 1369428678
- Sigstore integration time:
-
Permalink:
triluch/lyrsmith@b5297909f7d982c52fcbf7af6129e5360f070917 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/triluch
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b5297909f7d982c52fcbf7af6129e5360f070917 -
Trigger Event:
release
-
Statement type: