Караоке на raspberry pi 3


Use Git or checkout with SVN using the web URL.

Work fast with our official CLI. Learn more.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats


Failed to load latest commit information.


Host a Karaoke party on your Raspberry Pi.

What is KaraokeBerry?

A web-based app that will play Karaoke CDG/MP3 files using the HDMI output and audio output of the Raspberry Pi and allows for remote control through the use of one or more mobile devices.

The sytem is not yet completely built out to work on the Raspberry Pi. All development has been done so far on a Mac running Mountain Lion. It’s currently working using a VLC remote controller that I built but I have to create one for the Raspberry Pi still. This involves probably using PyKaraoke and somehow hooking into it so that it can be controlled remotely similar to how I’m doing it for VLC.

Also, the login system is not complete. The searcher is slow, simply because I’m doing a naive linear O(n) search which is obviously not ideal. I’ll work on that eventually.

There is currently no persistence either. If the system crashes, the state of app is lost. Obviously not ideal.

The idea is that you can take a regular Raspberry Pi running Raspbian and load it up with CDG/MP3 files of your choosing and with this software, host a Karaoke Party where the Pi is connected to your T.V. and your friends can log into the Pi with their mobile devices and browse the songs, add a song to their queue, favorite a song, and eventually get scored on their performances. The host of the karaoke party can log into his/her device as an admin and manages the main queue of performances. He/she can call up the next person, start the song, remove performances from the queue perhaps if someone leaves and manage a few other details.

Currently, all of this works within a users local lan. None of the code calls out to the internet which means the Pi is not only playing the Karaoke tracks but also hosting the server-side component.

So please keep in mind, that with the Pi’s limited hardware resources, you can’t host a party that has 1000’s of singers. but probably a small medium sized group is fine. This is all speculation, I haven’t benchmarked anything.

  • OSX Mountain Lion (currently working)
  • Raspberry Pi (not yet working)

Where are the unit-tests? I don’t use software that doesn’t have unit-tests.

That’s fine by me. =)

  • Python (for the sweet, sweet language)
  • Flask (for light-weight web application that hosts the Karaoke logic)
  • Gevent (for coroutine, green threaded badass-ness)
  • PyKaraoke (for playing Karaoke CDG/MP3 files on the Raspberry Pi)
  • VLC Media Player (for playing Karaoke CDG/MP3 files on the VLC, only tested on Mac OSX 10.7)
  • JQuery Mobile 1.3 (for mobile-web interfaces)
  • Swipe.js (for mobile-web banners)

Everything below here needs to get formatted better)

From fresh install of Raspbian

create a virtualenv (make sure that you are using site-packages otherwise can’t reference pykaraoke) 7. go to Desktop 8. virtualenv KaraokePi 9. cd KaraokePi 10. source bin/activate 11. pip install flask 12. python KaraokeBerry.py (starts the Flask server) 13. consider using redis as a backing store, i see the light about redis being a kind of extension of Python with it’s awesome datastructures

  1. run pykaraoke from a different child process
  2. create whole rest api that’s json based
  3. create admin login so that only one admin can run the app
  4. integrate jquery mobile site with flask server side backend (possibly due it all through rest requests with state simply in javascript local to the page. )
  5. add the pi linux commands to this repository.
  6. create admin interface that looks like windows metro blocks for pause, play, restart, fullscreen toggle, etc.
  1. navigate to localhost:5000/mobile (to see the jquery mobile interface in action)
  2. read KaraokeBerry.py to see all the rest calls supported.

KaraokeBerry actually exists in a previous incarnation as a simple C# .net Windows Forms app that I built for my wife years ago. It basically provided a simple GUI to search her karaoke library of music and with a double-click would launch WinAmp which had a CDG plugin that could play the mp3 music and show the lyrics on the screen.

We actually used it at a few Karaoke partys and I realized how much people love being able to digitally search a large library instead of tediously combing over an out-dated printed book.

All of this was executed on a tiny netbook that was connected to my PA system (from my band days) and the netbook had a VGA out, that I connected to a larger screen so people could sing along.

As time went by and mobile devices became more prevelant I realized that I needed to overhaul this thing and build it in a remote-controlled wireless fashion with minimal hardware. Since this is a one-man show KaraokeBerry is what I came up with. This is my weekend warrior project and I finally found a good excuse to buy a Raspberry Pi and put the pieces together.

I could never take credit for this entire app because it obviously builds on some truly amazing open source software technologies. I want to give a special shout-out to the Python Flask framework and to Gevent which is a mind-blowing tool for building highly responsive and scalable apps.

If you like Karaoke Berry please consider contributing and helping me make this software awesome. I’m open to suggestions and I’m always looking to improve my code and implementation details.

Feel free to fork this bad boy!

-Ralph [deckarep [at] gmail [dot] com]


KaraokeBerry is a Python based web-app that allows you to play Karaoke CDG/MP3 files on your Raspberry Pi and remotely choose songs, manage a queue and host a Karaoke party from your mobile devices without ever touching the Raspberry Pi.


Мой опыт пользования Raspberry Pi

Про микрокомпьютеры семейства Raspberry Pi слышал практически каждый. О том, как можно использовать его в домашней стерео и мультимедиа системе, будет мой небольшой рассказ. Здесь больше личного опыта, нежели исчерпывающей информации. Надеюсь, многим будет интересно.

История началась с желания сделать бесшумный источник для воспроизведения музыки. Стационарный компьютер шумноват ночью, делать отдельный «Silent PC» относительно затратно, да и по габаритам разместить его не везде получится.

В какое-то время решил попробовать Rasberry Pi. Причин тому несколько. Он маленький, «размером с кредитную карту», разместиться может при необходимости в любом уголке, за усилителем или даже за телевизором, так что его и видно не будет. Производительность не самая высокая, но грамотно написанные операционные системы и приложения позволяют без проблем воспроизводить как аудио с высоким битрейтом (DSD256), так и видео. На некоторых «тяжелых» видео могут быть подтормаживания, но такие файлы скорее редкость. Обычно BDremux`ы идут без проблем. Ну и наконец — цена. Изначально у меня появилась модель 3B, которая стоила 35$, а с доставкой обошлась порядка 50-55$.

Вот с чего началось — Rasberry Pi 3 model B. ARM-процессор с 4 ядрами и 1 Гб оперативной памяти.

Оказалось, что всё очень даже хорошо работает. Тогда я остановился на RuneAudio. Но с обновлениями возникли сложности. То ли руки мои кривые, то ли с английским плохо, но бета-версии на заработали. В итоге перешёл на Volumio. Он регулярно обновляется, работает стабильно, некоторые косяки сильно не раздражают. В основном пользуюсь либо интернет-радио, либо проигрыванием файлов с флешки. Управление с браузера в домашней сети, либо можно подключить по HDMI к телевизору и пользоваться USB-мышкой.

В дальнейшем захотелось сделать некоторое законченное устройство. Был куплен нерабочий усилитель Радиотехника У-101. В течение одного-полутора лет он проходил разные модификации, поначалу добавлялось всё, что только можно. Потом убиралось всё лишнее. На данный момент выглядит это так.

Сзади выведен HDMI, RCA-входы и выводы на акустику. Спереди — USB входы, выводы на наушники, RCA-выход, регулировка громкости.

Внутри он выглядит некрасиво, неся память о многочисленных переделках. Было желание сделать внутри красиво, но решил следовать принципу «работает — не трогай». Да и лень присутствует, некоторым образом.

Несмотря на весь кошмар внутри, фона нет. Родной трансформатор питает усилитель на LM1875, напряжение +/- 27 Вольт, соответственно мощность порядке 2 х 25 Ватт выдаёт. Один из немногих аппаратов, где можно выкрутить громкость на полную и не оглохнуть. Индикатор мощности работает. Регулятор громкости поставил ALPS, темброблок отсутствует, ручки оставлены для косметики. Отдельный трансформатор питает цифровую часть чистым линейным питанием. К RaspberryPi по USB подключен ЦАП на AKM AK4490. Там XMOS принимает сигнал до 32/192.

В целом «медиа-центр» получился полностью меня устраивающим. Полочники контролирует уверенно. Не шумит, греется не сильно. Он занял свое место в спальне и был вытеснен оттуда лишь случайным появлением сетевого ресивера ONKYO TX-8050. Последний при схожем функционале выглядит более интересно. Поэтому самоделка в итоге переехала на кухню, где регулярно продолжает выполнять свои функции.

Далее появилось желание послушать музыку и на работе. Там появились усилитель и акустика, вопрос встал в источнике. Купил опять «малинку». А к ней так называемую шляпу — ЦАП подключаемый к 40-контактным разъемам. По идее отсутствие преобразований сигнала для передачи по USB шине ведет к укорочению тракта, устранению ненужных этапов. По шине I2S сигнал идет напрямую в ЦАП. Для начала выбрал дешевую шляпу на PCM5122 от Burr-Brown. Чип разработан специально так, чтобы на выходе в фильтре стояли по одному резистору и одному конденсатору на канал. Для более приятного внешнего вида купил на eBay корпус для итоговой конструкции.

Такое положение дел сохранялось достаточно долго. Постепенно пришел к выводу, что удобнее использовать в качестве начального установщика не NOOBS, а PINN. Для музыки — volumio, а для кино — osmc.

Проблема в том, что kodi — мультимедийный центр, выполняющий всю обработку в систимах типа osmc, libreelec, xbian и т.п. автоматом пересчитывает сигнал к киношным 16 бит/48 кГц. А volumio по умолчанию выводит без изменений, в режиме bitperfect. И чтобы упростить процесс переключения с одной системы на другую лучше всего, на мой взгляд, подходит PINN. Вначале выбираете установку volumio и того-же osmc, а потом при загрузке/перезагрузке пультом от телевизора можно выбрать нужную ОС. Предполагается, что малинка подключена к телевизору, раз уж смотрим кино. В случае чисто аудио-системы можно обойтись установкой одной лишь volumio, как я сделал в первом варианте с радиотехникой.

По поводу выбора конкретной ОС. Про RuneAudio я уже писал. Пользуюсь volumio и доволен. Пробовал moOde, показался мне аналогом того же volumio, без каких-либо преимуществ. При настройке в качестве устройства вывода есть пункт использовать I2S-ЦАП, далее можно выбрать конкретную модель. По звучанию сравнение с вышеупомянутым Onkyo TX-8050 не дало предпочтение какому-либо из оппонентов, небольшие нюансы в звучании. При настройке kodi могут возникнуть проблемы. Если ЦАП подключается по USB – проблем не возникает, в отличие от I2S. В некоторых системах, например libreelec, приходиться вручную прописывать в конфигурационном файле необходимую модель ЦАПа. А вот osmc в настройках имеет длинный перечень подобных «шляп», нужно только выбрать свою.

Далее периодически при просмотре кино появлялась проблема с перегревом процессора. В правом верхнем углу начинает мигать красный значок температуры. «Шляпа» очень близко расположена к процессору, плюс закрытый корпус мешают конвекции. Когда значок перестаёт мигать и начинает постоянно гореть система начинает пропускать отдельные кадры и иногда это становится заметным. В случае с аудио подобных проблем не возникало. Какое-то время я мирился с этим. Но в итоге решился и купил 4-ю модель. На всякий случай взял вариант с 4 Гб оперативной памяти, на всякий случай. Но даже у 3-й больше половины памяти никогда на заполнялось, так что можно было бы и сэкономить.

Отличие Pi 4 от третей модели в более мощном процессоре, большем (на выбор) объеме оперативной памяти, 2 разъемах mini-HDMI с поддержкой 4К, ну и по мелочам: разъем питания USB-C с током от 3А, поддержка wi-fi 5ГГц, USB 3 версии… кому интересно — интернет в помощь.

Для него я купил сразу и корпус с вентилятором и набором радиаторов. По умолчанию вентилятор питается от 5 Вольт, но при этом слышно шумит. Поэтому я подключил его к разъему 3.3 Вольта, так что даже ночью его не слышно, а температура процессора выше 50 градусов не поднималась.

Роль ЦАПа в системе стал играть внешний Pro-Ject DAC Box DS2 ultra. По звуку он как минимум на уровень выше предыдущего на PCM5122. Теперь на работе вопрос с источником как видео, так и аудио можно считать надолго закрытым.

Вот как выглядит всё на данный момент.

После замены платы Pi 3 модели на Pi 4, «тройка» осталась на время не у дел. Новый ЦАП дал мне возможность ощутить всю прелесть формата DSD. Поэтому захотелось поэкспериментировать. Купил опять на eBay «шляпу» с поддержкой DSD, на чипе AK4493. Особенность DSD в том, что цена ошибки в обработке одного бита катастрофически ниже, чем в PCM. Поэтому, учитывая огромный битрейт DSD, в теории даже простенький в обвязке дешевый ЦАП будет давать хороший звук.

Пока что корпуса нет, зато вентиляция достаточная и процессор работает в «штатном» режиме. Временно системка прячется у телевизора, так что её сразу и не видно, только удлинитель USB сбоку. А выглядит эта связка так.

Ну и в заключении — несколько слов о звуке.

Плата с AK4493 меня очень порадовала. В сравнении с Pro-Ject и домашним ASUS XEO ME она, конечно, звезд с неба не хватает, чувствуется определенно упрощение в подаче. Однако для начала, учитывая стоимость менее 10 тысяч, вариант очень рекомендуемый.

Сравнивая с домашними ресиверами Onkyo TX-8050 и Onkyo TX-8250, считаю что уровень не ниже фабричных устройств, или даже несколько выше. До специализированных отдельных ЦАПов не дотягивает, но со встроенными вполне может соревноваться.

Про непосредственно Raspberry Pi мои отзывы самые положительные. Компактная, бесшумная, производительная система, поддерживающая практически все современные цифровые технологии и сервисы. Специализированный сетевой проигрыватель от известного производителя будет красиво выглядеть, в использовании будет удобнее, но и бюджет там будет совсем другой. А подключив «малину» к внешнему ЦАПу, можно получить звук отличного качества.