Skip to main content

LyriChroma

中文文档

A powerful tool to convert audio files into videos with auto-generated, synchronized, and highlighted subtitles (Karaoke style).

Features

  • Auto Transcription: Uses faster-whisper for high-accuracy speech-to-text with word-level timestamps.
  • Dynamic Backgrounds: Moving multi-color gradient with selectable palettes (plasma/aurora effects).
  • Karaoke Subtitles: Real-time highlighting of spoken words.
  • Customizable: Adjust font size, color, highlight color, and position.
  • Transcript Editing: Export transcripts to JSON for manual correction, then re-import to generate the perfect video.

Installation

This project is managed with uv.

# Install uv if you haven't (https://github.com/astral-sh/uv)
pip install uv

# Clone and sync dependencies
uv sync

Usage

Basic Usage

Convert audio to video with a black background:

uv run lyrichroma --input audio.mp3 --output video.mp4

Advanced Usage

1. Dynamic Background

Generate a video with a cool moving background:

uv run lyrichroma --input audio.mp3 --output video.mp4 --bg-type dynamic --bg-value aurora

Available palettes: aurora (default), sunset, ocean, cyberpunk, forest.

2. Transcript Editing Workflow

  1. Generate transcript JSON (skip video generation):
    uv run lyrichroma --input audio.mp3 --save-transcript transcript.json
    
  2. Edit transcript.json manually.
  3. Generate video from edited transcript:
    uv run lyrichroma --input audio.mp3 --output video.mp4 --load-transcript transcript.json
    

3. Styling

Customize the subtitle appearance:

uv run lyrichroma \
  --input audio.mp3 \
  --output video.mp4 \
  --font-size 60 \
  --font-color "#FFFFFF" \
  --highlight-color "#FF0000" \
  --text-y 0.8

Arguments

Argument Description Default
--input, -i Input audio file path Required
--output, -o Output video file path Optional
--bg-type color, image, or dynamic color
--bg-value Hex color (#000000), image path, or palette name (aurora, sunset, ocean, cyberpunk, forest) #000000 or aurora
--model-size Whisper model size (tiny, base, large-v2, etc.) base
--save-transcript Path to save JSON transcript None
--load-transcript Path to load JSON transcript None
--font-size Subtitle font size 40
--font-color Text color white
--highlight-color Highlight color for active word yellow
--text-y Vertical position (0.0=top, 1.0=bottom) 0.8

Testing

Run unit tests:

uv run pytest

Advanced Configuration

Pluggable ASR

Lyrichroma supports a pluggable ASR architecture. By default, it uses faster-whisper. You can implement your own ASR provider by subclassing lyrichroma.asr.base.ASRProvider and passing it to the Transcriber.

Development

  1. Install Dependencies: uv sync
  2. Run Tests: uv run pytest
  3. Format & Lint:
    uv run ruff check .
    uv run black .
    
  4. Pre-commit Hooks: Install hooks to automatically check code before committing:
    uv run pre-commit install
    

Metadata

Release files for lyrichroma 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lyrichroma 0.1.0
File Size Uploaded Provenance
lyrichroma-0.1.0.tar.gz 3.9 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for lyrichroma 0.1.0
File Interpreter ABI Platform
lyrichroma-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.9 MB

Release files / lyrichroma-0.1.0.tar.gz

Download URL lyrichroma-0.1.0.tar.gz
Size 3.9 MB
Tags Source
SHA-256 checksum
How to use checksums
6660201cb9ae0c1cf525d1dd41f3fab6e1556ce888f6b84600b6cf66da2b4e67
BLAKE2b-256 checksum
How to use checksums
38b4f7f77295e515d9c6c22d0e520bea10ae3acc3743897351918995406fd2c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / lyrichroma-0.1.0-py3-none-any.whl

Download URL lyrichroma-0.1.0-py3-none-any.whl
Size 11.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7a230725de9860c64bef413b389189b662cf3a1a5ae57cf792c2b16b4a4af7c2
BLAKE2b-256 checksum
How to use checksums
87d4cbfacce2d5696d37ec0266c35109e95327779c091ead588ab3d30c47baa6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for lyrichroma 0.1.0

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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