Pull to refresh

Как линуксовый админ управлял детским хором с помощью системы распознавания нот под Ubuntu 16.04. Микрофон и аккорды

JavaData MiningMachine learningDIY
Recovery mode
Что нужно, чтобы лето проходило весело? Нужна музыка! Но если музыка записана нотами на бумаге, а вы — обыкновенный системный администратор, и вам поручили задачу создать детский хор, то в качестве одного из вариантов решения этой проблемы представляю несколько полезных программ. Они написаны на Java и доступны как в репозитарии Ubuntu 16.04, так и на Гитхабе для решения задачи машинного распознавания нот, создания музыкальных партий, выгрузки и редактирования получившегося музыкального продукта в популярные форматы и раздачи файлов (а также и подзатыльников) отдельным исполнителям. Тема, я надеюсь, будет интересна читателям нашего блога.(UPD1. Есть добавление по системе оптического распознавания TESSERACT 5.0.0-alpha для быстрой работы системы на современных процессорах.)

image

image

Представим себе реальную ситуацию детского лагеря. Надо было быстро собрать хор и обучить детей новой песне, но на предусмотренную штатным расписанием должность музыкального руководителя не нашлось желающего. Попросили местного системного администратора. И дело пошло!

Располагая одним ноутбуком с установленной Ubuntu 16.04, админ решил задачу следующим образом.

1. Установка мощного бесплатного редактора нот MuseScore.

Общий вид с открытой детской песней «Моя Россия».

image

Можно открыть и MIDI файл:

image

Работает и с файлами караоке.

image


Если у кого есть MIDI-клавиатура, то и ее можно подцепить к программе для редактирования и ввода нот.

2. Было взято несколько популярных партитур. Примеры — на скриншотах. Песни, разумеется, популярные, поэтому и так уже набили оскомину, хоть хором, хоть соло!

3. Но мы-то в 21 веке живем. Решено было попробовать спеть что-нибудь новенькое. Но выяснилось, что весело подпевая программе, никто не знает нот. Что в таком случае делает линуксовый администратор?

А. Ставит систему распознавания OCR TESSERACT. Например, отсюда: https://github.com/tesseract-ocr/tesseract/wiki. Будьте внимательны, нужно поставить не 4.0, а предыдущую версию — 3.5.
Обязательно проверить установку языков, которые точно используются в музыкальных произведениях и нотах (английский, итальянский, немецкий, французский, русский).
UPD1.
sudo apt-get install libleptonica-dev
https://github.com/DanBloomberg/leptonica
Leptonica 1.74.4
git clone --recursive https://github.com/DanBloomberg/leptonica
cd leptonica

./autobuild
./configure
./make-for-auto

sudo make
sudo make install

Прим. Лептоника хочет быть разделяемой библиотекой.
Tesseract 4.0
git clone --depth 1 https://github.com/tesseract-ocr/tesseract.git tesseract
cd tesseract
./autogen.sh
./configure --enable-debug
LDFLAGS="-L/usr/local/lib" CFLAGS="-I/usr/local/include" make
sudo make install
sudo ldconfig

test Tesseract
$ tesseract imagename outputbase [-l lang] [--psm pagesegmode] [configfiles...]
$ tesseract 1.jpg 1.txt -l chi_sim

Если
$ tesseract -v
вернет
tesseract 5.0.0-alpha
leptonica-1.80.0
libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8
Found AVX
Found SSE
Found OpenMP 201307
Found libcurl/7.47.0 OpenSSL/1.0.2g zlib/1.2.8 libidn/1.32 librtmp/2.3

Значит, вы добились нужного результата!

https://github.com/tesseract-ocr/tessdata/blob/master/eng.traineddata
https://github.com/tesseract-ocr/tessdata/blob/master/rus.traineddata
https://github.com/tesseract-ocr/tessdata/blob/master/fra.traineddata
https://github.com/tesseract-ocr/tessdata/blob/master/deu.traineddata
И еще два действия:
https://github.com/tesseract-ocr/tessdata #These language data files only work with Tesseract 4.0
sudo mv eng.traineddata /usr/share/tesseract-ocr/tessdata
export TESSDATA_PREFIX=/usr/share/tesseract-ocr/tessdata

или
sudo mv /usr/local/share/tessdata /usr/local/share/tessdata.bak
sudo ln -s /usr/share/tesseract-ocr/tessdata /usr/local/share/

Перед запуском системы распознавания проверяем:
  1. Наличие всех требуемых языков.
  2. export TESSDATA_PREFIX=/usr/share/tesseract-ocr/tessdata


Б. Устанавливает потрясающую систему распознавания нот! Единственно, ограничение — 300DPI сканирование, не более 3,5 МБ одна страница в PDF.
Ставить надо отсюда:

$> git clone https://github.com/Audiveris/audiveris.git
cd audiveris
gradlew.bat clean build
./gradlew clean build
./gradlew run
./gradlew run -PcmdLineArgs="your,arguments,here"

Для работы с одним-двумя листом партитур конфигурации по-дефолту хватает, но для оркестровых вещей рекомендую билдить и запускать не менее, чем -Xmx=11G.

Если все правильно установлено, то запуск надо осуществлять из директории, куда отработала команда git clone.

Интерфейс выглядит так:

image

Пользоваться надо так:

1. Открыть файл PDF.

2. Book -> Trancribe book

3. Дождаться распознавания нот.

Начало работы:

image

4. Экспортируем получившийся Music XML 3.0 через Book->Export.

5. Открываем файл в MuseScore и экспортируем из него в формат MP3.

Слушаем и наслаждаемся.

image

UPD1. Оригинал для сравнения.
image
image

6. Если не терпится записывать микрофонные пассажи местных «соловьев» с фальцетной распевкой, то на этот случай тоже есть прикладная микрофонная программа Nootka.
Это хороший вокальный тренажер. Может заставить петь гаммы по нотам, может проверить слух, может помочь настроить инструмент. Графически показывает, насколько точно вы попадаете в ноту, и если попадаете, то он рисует ее на нотоносце. Например, эта же мелодия в моем исполнении.

image

7. Еще одна жизненная ситуация. Нет под рукой гитары, а гитарные соло хочется послушать.
Или накидать аранжировку. Сравнить качество разных аранжировок. Представляю программу
TuxGuitar. Бесплатная, идет в репозитарии Ubuntu.

image

Для работы с нею необходимо экспортировать полученный ранее файл Music XML 3.0 в
формат Guitar Pro, Tux Guitar или PowerTab. К сожалению, в новой версии MuseScore прямой
экспорт был отключен. Привожу пример с ранее сделанным экспортом.
image

UPD2. В комментариях подняли вопрос многологосья.
Уважаемые друзья, привожу еще несколько скриншотов музыкального редактора, связанного с созданием многоголосой (оркестровой) партитуры.

Главное меню -> Файл -> Создать партитуру.
image
В партитуре -> Выбор инструментов оркестра (голосов).
image
Выбор тональности.
image
Полученная готовая пустая многоголосая партитура.
image

Краткое заключение. Заметка написана для людей, которые очень-очень хотят услышать незнакомые ноты, владеют администрированием, но не играют на музыкальных инструментах.
А хор администрировать тоже надо.

Посвящаю эту заметку моим незабвенным преподавателям: Надежде Николаевне Кулепётовой и Валентину Анатольевичу Лапушкину.
Tags:музыкаJavaсделай самраспознавание образовнастройка linux
Hubs: Java Data Mining Machine learning DIY
Total votes 33: ↑31 and ↓2 +29
Views10.2K

Comments 33

Only those users with full accounts are able to leave comments. Log in, please.

Popular right now

Data Scientist / Machine Learning Engineer
from 180,000 ₽ProfitClicksRemote job
Deep Learning engineer (NLP Model)
from 150,000 ₽IvolutionRemote job
Системный администратор Linux
from 150,000 to 250,000 ₽ACTION TECHМоскваRemote job
Разработчик Java/PLSQL
from 60,000 to 180,000 ₽АВК-КоммьюникейшнзМосква
IT-специалист
from 60,000 to 80,000 ₽SensisМосква

Top of the last 24 hours