Skip to main content

Youtube-based Karaoke machine for Raspberry Pi, OSX, Windows, and Linux

Project description

PiKaraoke

Conventional Commits

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:

Buy Me A Coffee

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 Edge, Safari and Firefox will work with the --headless option)
  • 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 -y
sudo apt-get install chromium-driver -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

pikaraoke-nowplaying pikaraoke-queue pikaraoke-browse pikaraoke-search1 pikaraoke-search2
pikaraoke-tv2

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pikaraoke-1.15.3.tar.gz (8.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pikaraoke-1.15.3-py3-none-any.whl (8.1 MB view details)

Uploaded Python 3

File details

Details for the file pikaraoke-1.15.3.tar.gz.

File metadata

  • Download URL: pikaraoke-1.15.3.tar.gz
  • Upload date:
  • Size: 8.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pikaraoke-1.15.3.tar.gz
Algorithm Hash digest
SHA256 a9a4d9f651f6866a21667fb11e167e25c13377b391b2175e72a8349e49fafe8f
MD5 7d4b755dbe0eba58d009583b17bb36d7
BLAKE2b-256 dd94ddf34a3c3fc27f2d43e5b04eac94502cb61840011093b77006bd23c4752c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pikaraoke-1.15.3.tar.gz:

Publisher: release-please.yml on vicwomg/pikaraoke

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pikaraoke-1.15.3-py3-none-any.whl.

File metadata

  • Download URL: pikaraoke-1.15.3-py3-none-any.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pikaraoke-1.15.3-py3-none-any.whl
Algorithm Hash digest
SHA256 26a1169fc328629b16fa6ea19c734602a308748668b4e17ae114932d919a9b26
MD5 a616b3c8ceb2c6c29db26630e6518880
BLAKE2b-256 723b30ce8d75f61d49f19757109ce2f608597a48a5e92dee1de7d49b13dd7faf

See more details on using hashes here.

Provenance

The following attestation bundles were made for pikaraoke-1.15.3-py3-none-any.whl:

Publisher: release-please.yml on vicwomg/pikaraoke

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page