Skip to main content

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

lyrsmith screenshot

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 (experimental):

brew install mpv

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

From source using uv:

git clone https://github.com/triluch/lyrsmith
cd lyrsmith
uv tool install . --python 3.13

Or with pipx:

pipx install .

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.000050.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

lyrsmith-0.1.0.tar.gz (87.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lyrsmith-0.1.0-py3-none-any.whl (106.6 kB view details)

Uploaded Python 3

File details

Details for the file lyrsmith-0.1.0.tar.gz.

File metadata

  • Download URL: lyrsmith-0.1.0.tar.gz
  • Upload date:
  • Size: 87.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lyrsmith-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0bd8f78b54df20f0df7b02c7cd73124d189ed396d2db983e23deca1b5d0f6051
MD5 4ae08989846cdf6dca2cc3678a929e74
BLAKE2b-256 d9f314c82999e9afdb1778885bb5adc1d97cd97003473f9f2dd0d5d6a2bb8448

See more details on using hashes here.

Provenance

The following attestation bundles were made for lyrsmith-0.1.0.tar.gz:

Publisher: release.yml on triluch/lyrsmith

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lyrsmith-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: lyrsmith-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 106.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lyrsmith-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 24ac72a5a5e3a5ea4f98a7c1143115a6d19bfcf3a81afc22bed358aaeef53e3d
MD5 0fd616c517a0319191fffc1767f01b1b
BLAKE2b-256 08d1b74cef8aa1b56e5c382af01b856743d152b9259a1a743d0327cc9f954e0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for lyrsmith-0.1.0-py3-none-any.whl:

Publisher: release.yml on triluch/lyrsmith

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page