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.10.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69fa3f6c28559ca7bd39dabdc607f014eeae577b3c0bc4825491b9c35b9d48bc |
|
MD5 | d9e3035980cb098a287671791f606387 |
|
BLAKE2b-256 | e35dfdd09cfda6bcd0d622f54ed6b76ce07ca505f218c91d369fdc2aec7303ae |
Hashes for lyrics_transcriber-0.10.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6069b3a380403496c0591c74b6925e1751df67ab645b02b31dc885e5a1551e3f |
|
MD5 | 6ec020f2410c8b632fa5f860a114fb3c |
|
BLAKE2b-256 | 7c15da76fc1f2f8cea1dba4d2f57a981b24195d148dafa8a63f8aa229cff4e0b |