Automatically create synchronised lyrics files in ASS and MidiCo LRC formats with word-level timestamps, using Whisper and lyrics from Genius and Spotify
Project description
Lyrics Transcriber 🎶
Automatically create synchronised lyrics files in ASS and MidiCo LRC formats with word-level timestamps, using OpenAI Whisper and lyrics from Genius and Spotify, for convenience in use cases such as karaoke video production.
Features 🌟
- Automatically transcribe lyrics with word-level timestamps.
- Outputs lyrics in ASS and MidiCo LRC formats.
- Can fetch lyrics from with Genius and Spotify.
- Command Line Interface (CLI) for easy usage.
- Can be included and used in other Python projects.
Installation 🛠️
Prerequisites
- Python 3.9 or higher
- [Optional] A Genius API token if you want to fetch lyrics from Genius
pip install lyrics-transcriber
Warning The package published to PyPI was created by manually editing
poetry.lock
to remove triton, as it is technically a sub-dependency from openai-whisper but is currently only supported on Linux (whisper still works fine without it, and I want this package to be usable on any platform)
Usage 🚀
As a standalone CLI
- To transcribe lyrics from an audio file:
lyrics-transcriber /path/to/your/audiofile.mp3
- To specify Genius API token, song artist, and song title for auto-correction:
lyrics-transcriber /path/to/your/audiofile.mp3 --genius_api_token YOUR_API_TOKEN --artist "Artist Name" --title "Song Title"
As a Python package in your project
- Import LyricsTranscriber in your Python script:
from lyrics_transcriber import LyricsTranscriber
- Create an instance and use it:
transcriber = LyricsTranscriber(audio_filepath='path_to_audio.mp3')
result_metadata = transcriber.generate()
result_metadata contains values as such:
result_metadata = {
"whisper_json_filepath": str,
"genius_lyrics": str,
"genius_lyrics_filepath": str,
"midico_lrc_filepath": str,
"singing_percentage": int,
"total_singing_duration": int,
"song_duration": int,
}
Requirements 📋
- Python >= 3.9
- Python Poetry
- Dependencies are listed in pyproject.toml
Local Development 💻
To work on the Lyrics Transcriber project locally, you need Python 3.9 or higher. It's recommended to create a virtual environment using poetry.
- Clone the repo and cd into it.
- Install poetry if you haven’t already.
- Run poetry install to install the dependencies.
- Run poetry shell to activate the virtual environment.
Contributing 🤝
Contributions are very much welcome! Please fork the repository and submit a pull request with your changes, and I'll try to review, merge and publish promptly!
- This project is 100% open-source and free for anyone to use and modify as they wish.
- If the maintenance workload for this repo somehow becomes too much for me I'll ask for volunteers to share maintainership of the repo, though I don't think that is very likely
License 📄
This project is licensed under the MIT License.
Credits 🙏
- This project uses OpenAI Whisper for transcription, which inspired the entire tool!
- Thanks to @linto-ai for the whisper-timestamped project which solved a big chunk for me.
- Thanks to Genius for providing an API which makes fetching lyrics easier!
Contact 💌
For questions or feedback, please raise an issue or reach out to @beveradb (Andrew Beveridge) directly.
Project details
Release history Release notifications | RSS feed
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
Hashes for lyrics_transcriber-0.12.6.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | adfd6c1e871f33bf5fe2da2409b7def53deebf09d90c47d51c9a0840fb81a4de |
|
MD5 | 44148c4882bf2c0d54e7f2c31c7284db |
|
BLAKE2b-256 | 44f711cabe99e3c914c1b7126458843b95d0f73786f320721b399ad845b08e1f |
Hashes for lyrics_transcriber-0.12.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | da859f5b251e405e93faf92158f80d31a08f0315b404e699e0bd0551647d42dd |
|
MD5 | a3d23314fdf377fbdcc66c73e68c1ac5 |
|
BLAKE2b-256 | a0e6c7d530abe1072e5e9695daf59cc609cf97aa6a6c6ddaec0f2a7ba0759001 |