Youtube-based Karaoke machine for Raspberry Pi, OSX, Windows, and Linux
Project description
PiKaraoke
PiKaraoke is a "KTV"-style karaoke song search and queueing system. It connects to your TV, and shows a QR code for computers and smartphones to connect to a web interface. From there, multiple users can seamlessly search your local track library, queue up songs, add an endless selection of new karaoke tracks from YouTube, and more. Works on Raspberry Pi, OSX, Windows, and Linux!
Pikaraoke is independently developed and maintained. If you want to support this project with a little monetary tip, it's much appreciated:
Table of Contents
Features
| Feature | Description |
|---|---|
| Web Interface | Multiple users can queue tracks from their smartphones |
| Player/Splash Screen | Connection QR code and song queue metadata |
| Searching/Browsing | Search and rowse a local song library |
| Adding New Songs | Add new songs from Youtube |
| mp3 + cdg Support | CDG file support, supports compressed .zip bundles |
| Playback Controls | Pause, Skip, Restart, and volume control |
| Queue Management | Manage the song queue and change the order |
| Key Change / Pitch Shifting | Adjust the pitch of songs |
| File Management | Advanced editing of downloaded file names |
| Admin Mode | Lock down features with admin mode |
| Headless Mode | Run a dedicated pikaraoke server and stream to remote browser |
Supported Devices / OS / Platforms
- Raspberry Pi
- Requires a Raspberry Pi Model 3 or higher
- Bookworm Desktop OS required for standalone/headed mode
- For Pi 3: overclocking is recommended for smoother playback
- OSX
- Windows
- Linux
Native installation
Requirements
- Python 3.10 or greater (You can check your current version by running
python --version): Python downloads - FFmpeg: FFmpeg downloads
- Chrome browser (recommended, though Safari and Firefox will work with the
--complete-transcode-before-playoption) - A js runtime installed to your PATH (such as Node, Deno, Bun, QuickJS), this is a requirement as of yt-dlp 2025.11.12 otherwise some downloads may not work: https://github.com/yt-dlp/yt-dlp/wiki/EJS . Deno is probably easiest: https://deno.com/
Specific install instructions for Raspberry Pi OS / Linux distros with apt:
sudo apt-get install ffmpeg -y
sudo apt-get install chromium-browser -y
sudo apt-get install chromium-chromedriver -y
sudo curl -fsSL https://deno.land/x/install/install.sh | sh
Chromium/Chromdriver is optional if you're running with the --headless option.
Windows
You may want to try the install script by @lvmasterrj: https://github.com/lvmasterrj/win-pikaraoke-installer
Install pikaraoke via pip
Globally or within a virtual env:
# Install pikaraoke from PyPi
pip install pikaraoke
Note: Some OS install pip as pip3. if you did not use a venv, you may need to add the --break-system-packages parameter to ignore the warning and install pikaraoke and its dependencies globally. You may experience package conflicts if you have other python programs installed.
Run
Pikaraoke is now installed in the $PATH with the command line interface pikaraoke. Start by calling the pikaraoke command.
pikaraoke
This will start pikaraoke in headed mode, and open Chrome browser with the splash screen. You can then connect to the QR code via your mobile device and start downloading and queueing songs.
Virtual env users: note that if you close your terminal between launches, you'll need to reactivate your venv before running pikaraoke.
Upgrading
To upgrade to the latest version of pikaraoke, run:
pip install pikaraoke --upgrade
More Options
See the help command pikaraoke --help for available options.
Docker instructions
For Docker users, you can get going with one command. The deployed images includes everything you need to run in headless mode:
docker run vicwomg/pikaraoke:latest
For more information, see official Dockerhub repo
Screenshots
Developing pikaraoke
The Pikaraoke project utilizes Poetry for dependency management and local development.
- Install poetry: Poetry
- Git clone this repo
From the pikaraoke directory:
# install dependencies
poetry install
# Run pikaraoke from the local codebase
poetry run pikaraoke
If you don't want to install poetry, you can alternately install pikaraoke directly from the source code root:
pip install .
See the Pikaraoke development guide for more details.
Troubleshooting and guides
See the TROUBLESHOOTING wiki for help with issues.
There are also some great guides on the wiki to running pikaraoke in all manner of bizarre places including Android, Chromecast, and embedded TVs!
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pikaraoke-1.14.1.tar.gz.
File metadata
- Download URL: pikaraoke-1.14.1.tar.gz
- Upload date:
- Size: 7.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f68c5e5bbd35e73aed2c9b6cc8e2f7aada6810da31286643d48566b3d3e02e7
|
|
| MD5 |
6a77aff4875892bc46678cf829f006b5
|
|
| BLAKE2b-256 |
59dcfbea1616da2392c69595622040c149869cd06950249be5fc21aaffa607a6
|
Provenance
The following attestation bundles were made for pikaraoke-1.14.1.tar.gz:
Publisher:
release-please.yml on vicwomg/pikaraoke
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pikaraoke-1.14.1.tar.gz -
Subject digest:
3f68c5e5bbd35e73aed2c9b6cc8e2f7aada6810da31286643d48566b3d3e02e7 - Sigstore transparency entry: 728825695
- Sigstore integration time:
-
Permalink:
vicwomg/pikaraoke@9e8e6a953d3127bb16b8b9778c818f5ef07dcd18 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/vicwomg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-please.yml@9e8e6a953d3127bb16b8b9778c818f5ef07dcd18 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pikaraoke-1.14.1-py3-none-any.whl.
File metadata
- Download URL: pikaraoke-1.14.1-py3-none-any.whl
- Upload date:
- Size: 7.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27c692efb0bb8712f25524c789c4629bb9fbce5b507de999fce82910044caade
|
|
| MD5 |
4c36c10a2e599bccebd04da68821cd78
|
|
| BLAKE2b-256 |
36b33af0c8fbfe735a4c47be752a2a448b63a14905fb7ae889e3462c821353c4
|
Provenance
The following attestation bundles were made for pikaraoke-1.14.1-py3-none-any.whl:
Publisher:
release-please.yml on vicwomg/pikaraoke
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pikaraoke-1.14.1-py3-none-any.whl -
Subject digest:
27c692efb0bb8712f25524c789c4629bb9fbce5b507de999fce82910044caade - Sigstore transparency entry: 728825699
- Sigstore integration time:
-
Permalink:
vicwomg/pikaraoke@9e8e6a953d3127bb16b8b9778c818f5ef07dcd18 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/vicwomg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-please.yml@9e8e6a953d3127bb16b8b9778c818f5ef07dcd18 -
Trigger Event:
push
-
Statement type: