Name | karaoke-prep JSON |
Version |
0.30.3
JSON |
| download |
home_page | https://github.com/karaokenerds/karaoke-prep |
Summary | Prepare for karaoke video creation, by downloading audio and lyrics for a specified song or playlist from youtube and separating audio stems. After syncing, finalise the video with a title screen! |
upload_time | 2024-12-26 05:06:40 |
maintainer | None |
docs_url | None |
author | Andrew Beveridge |
requires_python | <3.13,>=3.10 |
license | MIT |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Karaoke Prep 🎶
[![PyPI version](https://badge.fury.io/py/karaoke-prep.svg)](https://badge.fury.io/py/karaoke-prep)
Prepare for karaoke video creation, by downloading audio from YouTube and lyrics from Genius for a given song.
This was created to make it easier for me to prepare the source audio, lyrics and instrumental audio so I can then do the actual karaoke creation in focus mode without internet.
## Features
- Audio Fetching: Automatically downloads audio in WAV format for the YouTube URL provided (or searches for the song/artist name and fetches the top result).
- Lyrics Fetching: Automatically fetches song lyrics from Genius.com using [LyricsGenius](https://github.com/johnwmillr/LyricsGenius).
- Audio Separation: Separates the downloaded audio into instrumental and vocal tracks, using [audio-separator](https://github.com/karaokenerds/python-audio-separator/).
- Multiple Audio Models: Runs audio separation with 2 different models (by default, `UVR_MDXNET_KARA_2` and `UVR-MDX-NET-Inst_HQ_3`) to give you options for the backing track.
- Easy Configuration: Control the tool's behavior using command-line arguments.
- Organized Outputs: Creates structured output directories for easy access to generated tracks and lyrics.
- Internet First: Completes operations which require internet first, in case user is preparing last-minute before a period of being offline!
- Flexible Input: provide just a YouTube URL, just an artist and title, or both.
- Playlist Processing: Capable of processing an entire YouTube playlist, extracting audio and lyrics for each track.
- Easy Finalisation: After manually performing your sync (e.g. using [MidiCo](https://www.midicokaraoke.com)), run `karaoke-finalise` to remux and add your title screen!
## Installation 🛠️
You'll need Python version 3.9, 3.10 or 3.11 (newer versions aren't supported by PyTorch or ONNX Runtime yet).
### Windows Prerequisites
- [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)
- [FFmpeg](https://ffmpeg.org/download.html)
You can install Karaoke Prep using pip:
`pip install karaoke-prep`
You'll then also need to install a version of `audio-separator` for your hardware:
- Mac with Apple Silicon: `pip install audio-separator[silicon]`
- Linux/Windows with CUDA GPU: `pip install audio-separator[gpu]`
- Anything else: `pip install audio-separator[cpu]`
#### Install PyTorch with CUDA support
If you're trying to use CUDA for GPU acceleration, you'll also need to ensure the version of PyTorch you have installed is compatible with the CUDA version you have installed.
While PyTorch should get installed as a dependency of `karaoke-prep` anyway, you may need to install PyTorch for your CUDA version by running the installation command provided by the official install wizard: https://pytorch.org/get-started/locally/
#### UnicodeEncodeError
If you encounter this error: `UnicodeEncodeError: 'charmap' codec can't encode character`
Try setting the Python I/O encoding in your environment: `export PYTHONIOENCODING=utf-8`
#### Command-line newbie?
If you aren't sure what `pip` is or how to use the command line, here are some YouTube tutorials which will probably help:
- Install Python on Windows: https://www.youtube.com/watch?v=YKSpANU8jPE
- Command Line basics Windows: https://www.youtube.com/watch?v=MBBWVgE0ewk
- Install Python on Mac: https://www.youtube.com/watch?v=3-sPfR4JEQ8
- Command Line basics Mac: https://www.youtube.com/watch?v=FfT8OfMpARM
## Karaoke production guide using karaoke-prep and MidiCo
- Get a Genius API Access Token ([docs](https://docs.genius.com/)) and set it as an environment variable named `GENIUS_API_TOKEN`
- Run `karaoke-prep <Artist> <Title>` to fetch and prep the files above
- Wait for it to output at least the WAV file and lyrics (you can leave it running in the background while you sync)
- Open the WAV file in MidiCo: `(YouTube xxxxxxxxxxx).wav`
- Copy/paste the lyrics into MidiCo: `(Lyrics Processed).txt`
- Perform the lyrics sync (here's a [video](https://www.youtube.com/watch?v=63-Fk3mfZ7Q) showing me doing it) in MidiCo
- Render the video to 4k using the MidiCo "Export Movie" feature, saving it as `Artist - Title (Karaoke).mov` in the same folder
- Run `karaoke-finalise` to remux the instrumental audio and join the title clip to the start
- Upload the resulting `Artist - Title (Final Karaoke).mp4` video to YouTube!
Here's my [tutorial video with verbal explanation](https://www.youtube.com/watch?v=ZsROHgqAVHs) of the whole process, and here's a [normal speed demo](https://www.youtube.com/watch?v=63-Fk3mfZ7Q) of me doing it (8 minutes total for a single track).
## Usage 🚀
### Command Line Interface (CLI)
You can use Karaoke Prep via the command line:
```sh
usage: karaoke-prep [-h] [-v] [--log_level LOG_LEVEL] [--model_name MODEL_NAME] [--model_file_dir MODEL_FILE_DIR] [--output_dir OUTPUT_DIR] [--use_cuda] [--use_coreml]
[--denoise DENOISE] [--normalize NORMALIZE] [--create_track_subfolders]
[artist] [title] [url]
Fetch audio and lyrics for a specified song, to prepare karaoke video creation.
positional arguments:
args [YouTube video or playlist URL] [Artist] [Title] of song to prep. If URL is provided, Artist and Title are optional but increase chance of fetching the correct lyrics. If Artist and Title are provided with no URL, the top YouTube search result will be fetched.
options:
-h, --help show this help message and exit
-v, --version show program's version number and exit
--log_level LOG_LEVEL Optional: logging level, e.g. info, debug, warning (default: info). Example: --log_level=debug
--model_name MODEL_NAME Optional: model name to be used for separation (default: UVR_MDXNET_KARA_2). Example: --model_name=UVR-MDX-NET-Inst_HQ_3
--model_file_dir MODEL_FILE_DIR Optional: model files directory (default: /tmp/audio-separator-models/). Example: --model_file_dir=/app/models
--output_dir OUTPUT_DIR Optional: directory to write output files (default: <current dir>). Example: --output_dir=/app/karaoke
--use_cuda Optional: use Nvidia GPU with CUDA for separation (default: False). Example: --use_cuda=true
--use_coreml Optional: use Apple Silicon GPU with CoreML for separation (default: False). Example: --use_coreml=true
--denoise DENOISE Optional: enable or disable denoising during separation (default: True). Example: --denoise=False
--normalize NORMALIZE Optional: enable or disable normalization during separation (default: True). Example: --normalize=False
--no_track_subfolders Optional: do NOT create a named subfolder for each track. Example: --no_track_subfolders
--intro_background_color INTRO_BACKGROUND_COLOR Optional: Background color for intro video (default: black). Example: --intro_background_color=#123456
--intro_background_image INTRO_BACKGROUND_IMAGE Optional: Path to background image for intro video. Overrides background color if provided. Example: --intro_background_image=path/to/image.jpg
--intro_font INTRO_FONT Optional: Font file for intro video (default: Avenir-Next-Bold). Example: --intro_font=AvenirNext-Bold.ttf
--intro_artist_color INTRO_ARTIST_COLOR Optional: Font color for intro video artist text (default: #ff7acc). Example: --intro_artist_color=#123456
--intro_title_color INTRO_TITLE_COLOR Optional: Font color for intro video title text (default: #ffdf6b). Example: --intro_title_color=#123456
```
### ⭐ YouTube URL with Artist and Title
For the most consistent results, provide a specific YouTube URL along with the artist and title like so:
```
karaoke-prep "https://www.youtube.com/watch?v=YOUR_VIDEO_ID" "The Fray" "Never Say Never"
```
### Artist and Title Only
If you don't have a specific YouTube URL, just provide the artist and title. Karaoke Prep will search for and download the top YouTube result.
```
karaoke-prep "The Fray" "Never Say Never"
```
### Only YouTube URL
This will process the video at the given URL, *guessing the artist and title from the YouTube title*.
⚠️ Be aware the downloaded lyrics may be incorrect if the video title doesn't match the standard "Artist - Title" format.
```
karaoke-prep "https://www.youtube.com/watch?v=YOUR_VIDEO_ID"
```
### YouTube Playlist URL
To process a playlist, just provide the playlist URL. The script will process every video in the playlist.
⚠️ Be aware the downloaded _lyrics_ for each track may be incorrect if the video titles don't match the standard "Artist - Title" format.
```
karaoke-prep "https://www.youtube.com/playlist?list=YOUR_PLAYLIST_ID"
```
## Files produced by karaoke-prep and what to do with them
After running `karaoke-prep` you should have the following 11 files, grouped into folder(s) for each track:
- `Artist - Title (YouTube xxxxxxxxxxx).webm`
- Original unmodified video, fetched from YouTube in the highest quality available (may not always be WebM)
- You probably don't need this unless you're creating a custom request
- `Artist - Title (YouTube xxxxxxxxxxx).png`
- A still image taken from 30 seconds into the video, in case that's useful for a custom background
- You probably don't need this unless you're creating a custom request
- `Artist - Title (YouTube xxxxxxxxxxx).wav`
- Unmodified audio from the YouTube video, converted to WAV format for compatibility
- You should open this in MidiCo to begin syncing lyrics to make your karaoke video.
- `Artist - Title (Lyrics).txt`
- Unmodified lyrics fetched from genius.com based on the artist/title provided
- Depending on the song, may have lines which are too long for one karaoke screen
- `Artist - Title (Lyrics Processed).txt`
- Lyrics from genius, split into lines no longer than 40 characters
- You should open this and copy/paste the text into the MidiCo lyrics editor
- `Artist - Title (Vocals UVR-MDX-NET-Inst_HQ_3).mp3`
- Vocal track from the audio, separated using the UVR Inst_HQ_3 model.
- You probably don't need this unless you're trying to tweak the backing track
- `Artist - Title (Vocals UVR_MDXNET_KARA_2).mp3`
- Vocal track from the audio, separated using the UVR KARA_2 model.
- You probably don't need this unless you're trying to tweak the backing track
- `Artist - Title (Instrumental UVR-MDX-NET-Inst_HQ_3).mp3`
- Instrumental track from the audio, separated using the UVR Inst_HQ_3 model.
- This is typically a safe bet for the instrumental track but will not include any backing vocals.
- `Artist - Title (Instrumental UVR_MDXNET_KARA_2).mp3`
- Instrumental track from the audio, separated using the UVR KARA_2 model.
- This is the default choice for the finalisation step below as it usually does a good job of keeping backing vocals. However for some songs it includes far too much or is kinda glitchy, so you should check it before finalising and make a judgement call about using this vs. the Inst_HQ_3 one.
- `Artist - Title (Title).png`
- Title screen static image; if you specify your own background image, font, color etc. this should give you a convenient way to add a title screen to the start of your video.
- `Artist - Title (Title).mov`
- 5 second video clip version of the title screen image, ready to be joined by the finalisation step.
## Finalisation 🎥
After completing your manual sync process and rendering your `Artist - Title (Karaoke).mov` file (still using the original audio!) into the same folder, you can now run `karaoke-finalise`.
This will output some additional files:
- `Artist - Title (Karaoke).mov`
- Karaoke video without title screen, remuxed to use the instrumental audio
- `Artist - Title (With Vocals).mov`
- Karaoke video without title screen, using the original audio (useful for practicing!)
- `Artist - Title (Final Karaoke).mp4`
- Final karaoke video with 5 second title screen intro, instrumental audio and converted to MP4 for compatibility and reduced file size. Upload this to YouTube!
## Requirements 📋
Python >= 3.9
Libraries: onnx, onnxruntime, numpy, soundfile, librosa, torch, wget, six
## Developing Locally
This project uses Poetry for dependency management and packaging. Follow these steps to setup a local development environment:
### Prerequisites
- Make sure you have Python 3.9 or newer installed on your machine.
- Install Poetry by following the installation guide here.
### Clone the Repository
Clone the repository to your local machine:
```
git clone https://github.com/YOUR_USERNAME/karaoke-prep.git
cd karaoke-prep
```
Replace YOUR_USERNAME with your GitHub username if you've forked the repository, or use the main repository URL if you have the permissions.
### Install Dependencies
Run the following command to install the project dependencies:
```
poetry install
```
### Activate the Virtual Environment
To activate the virtual environment, use the following command:
```
poetry shell
```
### Running the Command-Line Interface Locally
You can run the CLI command directly within the virtual environment. For example:
```
karaoke-prep 1
```
### Deactivate the Virtual Environment
Once you are done with your development work, you can exit the virtual environment by simply typing:
```
exit
```
### Building the Package
To build the package for distribution, use the following command:
```
poetry build
```
This will generate the distribution packages in the dist directory - but for now only @beveradb will be able to publish to PyPI.
## 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](LICENSE).
- **Please Note:** If you choose to integrate this project into some other project using the default model or any other model trained as part of the [UVR](https://github.com/Anjok07/ultimatevocalremovergui) project, please honor the MIT license by providing credit to UVR and its developers!
## Credits 🙏
- [Anjok07](https://github.com/Anjok07) - Author of [Ultimate Vocal Remover GUI](https://github.com/Anjok07/ultimatevocalremovergui), which was essential for the creation of [audio-separator](https://github.com/karaokenerds/python-audio-separator/)! Thank you!
## Contact 💌
For questions or feedback, please raise an issue or reach out to @beveradb ([Andrew Beveridge](mailto:andrew@beveridge.uk)) directly.
Raw data
{
"_id": null,
"home_page": "https://github.com/karaokenerds/karaoke-prep",
"name": "karaoke-prep",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.10",
"maintainer_email": null,
"keywords": null,
"author": "Andrew Beveridge",
"author_email": "andrew@beveridge.uk",
"download_url": "https://files.pythonhosted.org/packages/4c/c1/b97d5d9d0acbd4daafcb22fc1e6d129e3d568cabec2a27221e84636ff57c/karaoke_prep-0.30.3.tar.gz",
"platform": null,
"description": "# Karaoke Prep \ud83c\udfb6\n\n[![PyPI version](https://badge.fury.io/py/karaoke-prep.svg)](https://badge.fury.io/py/karaoke-prep)\n\nPrepare for karaoke video creation, by downloading audio from YouTube and lyrics from Genius for a given song.\n\nThis was created to make it easier for me to prepare the source audio, lyrics and instrumental audio so I can then do the actual karaoke creation in focus mode without internet.\n\n## Features\n\n- Audio Fetching: Automatically downloads audio in WAV format for the YouTube URL provided (or searches for the song/artist name and fetches the top result).\n- Lyrics Fetching: Automatically fetches song lyrics from Genius.com using [LyricsGenius](https://github.com/johnwmillr/LyricsGenius).\n- Audio Separation: Separates the downloaded audio into instrumental and vocal tracks, using [audio-separator](https://github.com/karaokenerds/python-audio-separator/).\n- Multiple Audio Models: Runs audio separation with 2 different models (by default, `UVR_MDXNET_KARA_2` and `UVR-MDX-NET-Inst_HQ_3`) to give you options for the backing track.\n- Easy Configuration: Control the tool's behavior using command-line arguments.\n- Organized Outputs: Creates structured output directories for easy access to generated tracks and lyrics.\n- Internet First: Completes operations which require internet first, in case user is preparing last-minute before a period of being offline!\n- Flexible Input: provide just a YouTube URL, just an artist and title, or both.\n- Playlist Processing: Capable of processing an entire YouTube playlist, extracting audio and lyrics for each track.\n- Easy Finalisation: After manually performing your sync (e.g. using [MidiCo](https://www.midicokaraoke.com)), run `karaoke-finalise` to remux and add your title screen!\n\n## Installation \ud83d\udee0\ufe0f\n\nYou'll need Python version 3.9, 3.10 or 3.11 (newer versions aren't supported by PyTorch or ONNX Runtime yet).\n\n### Windows Prerequisites\n- [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)\n- [FFmpeg](https://ffmpeg.org/download.html)\n\nYou can install Karaoke Prep using pip:\n\n`pip install karaoke-prep`\n\nYou'll then also need to install a version of `audio-separator` for your hardware:\n\n- Mac with Apple Silicon: `pip install audio-separator[silicon]`\n- Linux/Windows with CUDA GPU: `pip install audio-separator[gpu]`\n- Anything else: `pip install audio-separator[cpu]`\n\n#### Install PyTorch with CUDA support\n\nIf you're trying to use CUDA for GPU acceleration, you'll also need to ensure the version of PyTorch you have installed is compatible with the CUDA version you have installed.\n\nWhile PyTorch should get installed as a dependency of `karaoke-prep` anyway, you may need to install PyTorch for your CUDA version by running the installation command provided by the official install wizard: https://pytorch.org/get-started/locally/ \n\n#### UnicodeEncodeError\n\nIf you encounter this error: `UnicodeEncodeError: 'charmap' codec can't encode character`\n\nTry setting the Python I/O encoding in your environment: `export PYTHONIOENCODING=utf-8`\n\n#### Command-line newbie?\n\nIf you aren't sure what `pip` is or how to use the command line, here are some YouTube tutorials which will probably help:\n\n- Install Python on Windows: https://www.youtube.com/watch?v=YKSpANU8jPE\n- Command Line basics Windows: https://www.youtube.com/watch?v=MBBWVgE0ewk\n- Install Python on Mac: https://www.youtube.com/watch?v=3-sPfR4JEQ8\n- Command Line basics Mac: https://www.youtube.com/watch?v=FfT8OfMpARM\n\n## Karaoke production guide using karaoke-prep and MidiCo\n\n- Get a Genius API Access Token ([docs](https://docs.genius.com/)) and set it as an environment variable named `GENIUS_API_TOKEN`\n- Run `karaoke-prep <Artist> <Title>` to fetch and prep the files above\n- Wait for it to output at least the WAV file and lyrics (you can leave it running in the background while you sync)\n- Open the WAV file in MidiCo: `(YouTube xxxxxxxxxxx).wav`\n- Copy/paste the lyrics into MidiCo: `(Lyrics Processed).txt`\n- Perform the lyrics sync (here's a [video](https://www.youtube.com/watch?v=63-Fk3mfZ7Q) showing me doing it) in MidiCo\n- Render the video to 4k using the MidiCo \"Export Movie\" feature, saving it as `Artist - Title (Karaoke).mov` in the same folder\n- Run `karaoke-finalise` to remux the instrumental audio and join the title clip to the start\n- Upload the resulting `Artist - Title (Final Karaoke).mp4` video to YouTube!\n\nHere's my [tutorial video with verbal explanation](https://www.youtube.com/watch?v=ZsROHgqAVHs) of the whole process, and here's a [normal speed demo](https://www.youtube.com/watch?v=63-Fk3mfZ7Q) of me doing it (8 minutes total for a single track).\n\n\n## Usage \ud83d\ude80\n\n### Command Line Interface (CLI)\n\nYou can use Karaoke Prep via the command line:\n\n```sh\nusage: karaoke-prep [-h] [-v] [--log_level LOG_LEVEL] [--model_name MODEL_NAME] [--model_file_dir MODEL_FILE_DIR] [--output_dir OUTPUT_DIR] [--use_cuda] [--use_coreml]\n [--denoise DENOISE] [--normalize NORMALIZE] [--create_track_subfolders]\n [artist] [title] [url]\n\nFetch audio and lyrics for a specified song, to prepare karaoke video creation.\n\npositional arguments:\n args [YouTube video or playlist URL] [Artist] [Title] of song to prep. If URL is provided, Artist and Title are optional but increase chance of fetching the correct lyrics. If Artist and Title are provided with no URL, the top YouTube search result will be fetched.\n\noptions:\n -h, --help show this help message and exit\n -v, --version show program's version number and exit\n --log_level LOG_LEVEL Optional: logging level, e.g. info, debug, warning (default: info). Example: --log_level=debug\n --model_name MODEL_NAME Optional: model name to be used for separation (default: UVR_MDXNET_KARA_2). Example: --model_name=UVR-MDX-NET-Inst_HQ_3\n --model_file_dir MODEL_FILE_DIR Optional: model files directory (default: /tmp/audio-separator-models/). Example: --model_file_dir=/app/models\n --output_dir OUTPUT_DIR Optional: directory to write output files (default: <current dir>). Example: --output_dir=/app/karaoke\n --use_cuda Optional: use Nvidia GPU with CUDA for separation (default: False). Example: --use_cuda=true\n --use_coreml Optional: use Apple Silicon GPU with CoreML for separation (default: False). Example: --use_coreml=true\n --denoise DENOISE Optional: enable or disable denoising during separation (default: True). Example: --denoise=False\n --normalize NORMALIZE Optional: enable or disable normalization during separation (default: True). Example: --normalize=False\n --no_track_subfolders Optional: do NOT create a named subfolder for each track. Example: --no_track_subfolders\n --intro_background_color INTRO_BACKGROUND_COLOR Optional: Background color for intro video (default: black). Example: --intro_background_color=#123456\n --intro_background_image INTRO_BACKGROUND_IMAGE Optional: Path to background image for intro video. Overrides background color if provided. Example: --intro_background_image=path/to/image.jpg\n --intro_font INTRO_FONT Optional: Font file for intro video (default: Avenir-Next-Bold). Example: --intro_font=AvenirNext-Bold.ttf\n --intro_artist_color INTRO_ARTIST_COLOR Optional: Font color for intro video artist text (default: #ff7acc). Example: --intro_artist_color=#123456\n --intro_title_color INTRO_TITLE_COLOR Optional: Font color for intro video title text (default: #ffdf6b). Example: --intro_title_color=#123456\n ```\n\n\n### \u2b50 YouTube URL with Artist and Title\n\nFor the most consistent results, provide a specific YouTube URL along with the artist and title like so:\n\n```\nkaraoke-prep \"https://www.youtube.com/watch?v=YOUR_VIDEO_ID\" \"The Fray\" \"Never Say Never\"\n```\n\n### Artist and Title Only\n\nIf you don't have a specific YouTube URL, just provide the artist and title. Karaoke Prep will search for and download the top YouTube result.\n\n```\nkaraoke-prep \"The Fray\" \"Never Say Never\"\n```\n\n### Only YouTube URL\n\nThis will process the video at the given URL, *guessing the artist and title from the YouTube title*.\n\u26a0\ufe0f Be aware the downloaded lyrics may be incorrect if the video title doesn't match the standard \"Artist - Title\" format.\n\n```\nkaraoke-prep \"https://www.youtube.com/watch?v=YOUR_VIDEO_ID\"\n```\n\n### YouTube Playlist URL\n\nTo process a playlist, just provide the playlist URL. The script will process every video in the playlist.\n\u26a0\ufe0f Be aware the downloaded _lyrics_ for each track may be incorrect if the video titles don't match the standard \"Artist - Title\" format.\n\n```\nkaraoke-prep \"https://www.youtube.com/playlist?list=YOUR_PLAYLIST_ID\"\n```\n\n## Files produced by karaoke-prep and what to do with them\n\nAfter running `karaoke-prep` you should have the following 11 files, grouped into folder(s) for each track:\n\n- `Artist - Title (YouTube xxxxxxxxxxx).webm`\n - Original unmodified video, fetched from YouTube in the highest quality available (may not always be WebM)\n - You probably don't need this unless you're creating a custom request\n- `Artist - Title (YouTube xxxxxxxxxxx).png`\n - A still image taken from 30 seconds into the video, in case that's useful for a custom background\n - You probably don't need this unless you're creating a custom request\n- `Artist - Title (YouTube xxxxxxxxxxx).wav`\n - Unmodified audio from the YouTube video, converted to WAV format for compatibility\n - You should open this in MidiCo to begin syncing lyrics to make your karaoke video.\n- `Artist - Title (Lyrics).txt`\n - Unmodified lyrics fetched from genius.com based on the artist/title provided\n - Depending on the song, may have lines which are too long for one karaoke screen\n- `Artist - Title (Lyrics Processed).txt`\n - Lyrics from genius, split into lines no longer than 40 characters\n - You should open this and copy/paste the text into the MidiCo lyrics editor\n- `Artist - Title (Vocals UVR-MDX-NET-Inst_HQ_3).mp3`\n - Vocal track from the audio, separated using the UVR Inst_HQ_3 model.\n - You probably don't need this unless you're trying to tweak the backing track\n- `Artist - Title (Vocals UVR_MDXNET_KARA_2).mp3`\n - Vocal track from the audio, separated using the UVR KARA_2 model.\n - You probably don't need this unless you're trying to tweak the backing track\n- `Artist - Title (Instrumental UVR-MDX-NET-Inst_HQ_3).mp3`\n - Instrumental track from the audio, separated using the UVR Inst_HQ_3 model.\n - This is typically a safe bet for the instrumental track but will not include any backing vocals.\n- `Artist - Title (Instrumental UVR_MDXNET_KARA_2).mp3`\n - Instrumental track from the audio, separated using the UVR KARA_2 model.\n - This is the default choice for the finalisation step below as it usually does a good job of keeping backing vocals. However for some songs it includes far too much or is kinda glitchy, so you should check it before finalising and make a judgement call about using this vs. the Inst_HQ_3 one.\n- `Artist - Title (Title).png`\n - Title screen static image; if you specify your own background image, font, color etc. this should give you a convenient way to add a title screen to the start of your video.\n- `Artist - Title (Title).mov`\n - 5 second video clip version of the title screen image, ready to be joined by the finalisation step.\n\n\n## Finalisation \ud83c\udfa5\n\nAfter completing your manual sync process and rendering your `Artist - Title (Karaoke).mov` file (still using the original audio!) into the same folder, you can now run `karaoke-finalise`.\n\nThis will output some additional files:\n- `Artist - Title (Karaoke).mov`\n - Karaoke video without title screen, remuxed to use the instrumental audio\n- `Artist - Title (With Vocals).mov`\n - Karaoke video without title screen, using the original audio (useful for practicing!)\n- `Artist - Title (Final Karaoke).mp4`\n - Final karaoke video with 5 second title screen intro, instrumental audio and converted to MP4 for compatibility and reduced file size. Upload this to YouTube!\n\n\n## Requirements \ud83d\udccb\n\nPython >= 3.9\n\nLibraries: onnx, onnxruntime, numpy, soundfile, librosa, torch, wget, six\n\n## Developing Locally\n\nThis project uses Poetry for dependency management and packaging. Follow these steps to setup a local development environment:\n\n### Prerequisites\n\n- Make sure you have Python 3.9 or newer installed on your machine.\n- Install Poetry by following the installation guide here.\n\n### Clone the Repository\n\nClone the repository to your local machine:\n\n```\ngit clone https://github.com/YOUR_USERNAME/karaoke-prep.git\ncd karaoke-prep\n```\n\nReplace YOUR_USERNAME with your GitHub username if you've forked the repository, or use the main repository URL if you have the permissions.\n\n### Install Dependencies\n\nRun the following command to install the project dependencies:\n\n```\npoetry install\n```\n\n### Activate the Virtual Environment\n\nTo activate the virtual environment, use the following command:\n\n```\npoetry shell\n```\n\n### Running the Command-Line Interface Locally\n\nYou can run the CLI command directly within the virtual environment. For example:\n\n```\nkaraoke-prep 1\n```\n\n### Deactivate the Virtual Environment\n\nOnce you are done with your development work, you can exit the virtual environment by simply typing:\n\n```\nexit\n```\n\n### Building the Package\n\nTo build the package for distribution, use the following command:\n\n```\npoetry build\n```\n\nThis will generate the distribution packages in the dist directory - but for now only @beveradb will be able to publish to PyPI.\n\n## Contributing \ud83e\udd1d\n\nContributions 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!\n\n- This project is 100% open-source and free for anyone to use and modify as they wish. \n- 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\n\n## License \ud83d\udcc4\n\nThis project is licensed under the MIT [License](LICENSE).\n\n- **Please Note:** If you choose to integrate this project into some other project using the default model or any other model trained as part of the [UVR](https://github.com/Anjok07/ultimatevocalremovergui) project, please honor the MIT license by providing credit to UVR and its developers!\n\n## Credits \ud83d\ude4f\n\n- [Anjok07](https://github.com/Anjok07) - Author of [Ultimate Vocal Remover GUI](https://github.com/Anjok07/ultimatevocalremovergui), which was essential for the creation of [audio-separator](https://github.com/karaokenerds/python-audio-separator/)! Thank you!\n\n## Contact \ud83d\udc8c\n\nFor questions or feedback, please raise an issue or reach out to @beveradb ([Andrew Beveridge](mailto:andrew@beveridge.uk)) directly.\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Prepare for karaoke video creation, by downloading audio and lyrics for a specified song or playlist from youtube and separating audio stems. After syncing, finalise the video with a title screen!",
"version": "0.30.3",
"project_urls": {
"Documentation": "https://github.com/karaokenerds/karaoke-prep/blob/main/README.md",
"Homepage": "https://github.com/karaokenerds/karaoke-prep",
"Repository": "https://github.com/karaokenerds/karaoke-prep"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2278a13a4412100494c641bc3e53b40f4f598302ef4cdf16d0ea239e5fc8a7d1",
"md5": "60360a8d77185832a3afc38b028cca92",
"sha256": "f18ca1ab50b3a2d91966ba386f93e22803fbbef8fb0a60e1e2aaa6967c07407c"
},
"downloads": -1,
"filename": "karaoke_prep-0.30.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "60360a8d77185832a3afc38b028cca92",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13,>=3.10",
"size": 258000,
"upload_time": "2024-12-26T05:06:38",
"upload_time_iso_8601": "2024-12-26T05:06:38.514746Z",
"url": "https://files.pythonhosted.org/packages/22/78/a13a4412100494c641bc3e53b40f4f598302ef4cdf16d0ea239e5fc8a7d1/karaoke_prep-0.30.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4cc1b97d5d9d0acbd4daafcb22fc1e6d129e3d568cabec2a27221e84636ff57c",
"md5": "82bef2e456cba0fce589aba97ce8bcc8",
"sha256": "819c12fbe3614871b0d723f8a5acf5d284d5ab3fce8d5eb6dd126cadebab6981"
},
"downloads": -1,
"filename": "karaoke_prep-0.30.3.tar.gz",
"has_sig": false,
"md5_digest": "82bef2e456cba0fce589aba97ce8bcc8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.10",
"size": 259656,
"upload_time": "2024-12-26T05:06:40",
"upload_time_iso_8601": "2024-12-26T05:06:40.990960Z",
"url": "https://files.pythonhosted.org/packages/4c/c1/b97d5d9d0acbd4daafcb22fc1e6d129e3d568cabec2a27221e84636ff57c/karaoke_prep-0.30.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-26 05:06:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "karaokenerds",
"github_project": "karaoke-prep",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "karaoke-prep"
}