Как распознать ноту по звуку

Приложение для смартфона, декодирующее напетую мелодию в ноты.

Исследователи из KTH(Kungliga Tekniska Hogskolan) – Королевского технологического института в Швеции, разработали приложение для смартфонов, которое преобразует простую мелодию в ноты. Приложение ScoreCleaner, которое уже доступно по всему миру, обеспечивает простой и эффективный способ записи мелодии из вашей головы, и декодирование ее в письменную нотную форму. Самое интересное, что ScoreCleaner является абсолютно простым в использовании, что в очередной раз подтверждает поговорку — «все гениальное — просто».

Ваш голос — музыкальный инструмент

Простота в сочетании с доступностью, дает приложению обширную сферу использования — от душевой кабины до звукозаписывающей студии. При этом пользователю не нужно иметь музыкального образования, или же уметь играть на каком-либо музыкальном инструменте, пользователю, даже не нужно знать как читаются ноты, или знать основы создания музыки. Чтобы использовать приложение, вам всего лишь нужно напеть мелодию в микрофон своего смартфона и уже через несколько мгновений на дисплеи появиться результат в виде нотной последовательности, с соблюдением темпа и размера произведения. Это просто находка для любого музыканта.

После записи, мелодия может быть воспроизведена тембром пианино в формате MIDI или тембром оригинального звучания. После чего запись можно отправить по e-mail, или опубликовать в социальную сеть, что дает возможность объединяться музыкантам, для совместного творчества. Пользователи так же могут зарегистрироваться в ScoreCleaner Cloud, что дает доступ к бесплатному, неограниченному хранилищу для сохранения мелодий, которые в дальнейшем, будут синхронизироваться с настольной версией программного обеспечения.

Технология, которая легла в основу разработки приложения, основана на исследованиях Andersa Friberga, доцента кафедры речи, музыки и слуха института KTH(Kungliga Tekniska Hogskolan). Проведенные им исследования помогли проанализировать, как люди интерпретируют музыку и звуки, и на основе этих данных создать инновационный продукт.

Конечно, у приложения есть некоторые ограничения возможностей, одно из самых основных — это создание только монофонических мелодий (одновременно записывается одна нота), из этого следует, что о гармониках не идет и речи.

Полный охват!

Компания ScoreCleaner Notes, на основе мобильного приложения разработала полную версию для настольного компьютера, известную как ScoreCleaner Desktop Notes. Она работает по тому же принципу что и мобильная версия, а из дополнительных возможностей предоставляется подключение MIDI синтезатора, для создания более сложных композиций.

Чтобы увидеть приложение в действии, посмотрите это видео:

Источник

Notes recognition

Описание проекта

Recognition of music sheet and transcribing it into MIDI

Подход к распознаванию нот

После определённого количества безуспешных попыток написания проекта с нуля и проверки разных подходов, наткнулся на следующую статью: В ней описан подход к распознаванию нот с помощью связки Convolutional и Recurrent сетей. Этот подход используется, в частности, для распознавания текста. Поэтому я решил взять одну из реализаций Optical Character Recognition и обучить сеть на базе нот.

Была выбрана эта tensorflow модель. Научная статья, объясняющая принцип её работы.

Датасет

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

Характеристики датасета

94,984 случайных монофонических последовательностей, состоящих из 52 символов: музыкальных нот от С4 до Е5, 4 длительности (половина, четверь, восьмая, шестнадцатая), 4 паузы тех же длительностей, символы размеров (3/4, 4/4, 6/8), знаки альтерации (диез, бемоль, бекар), скрипичный ключ, тактовая черта.

Поскольку датасет составлен из сгенерированных изображений, распознавание не будет адекватно работать с фотографиями. Также, с нотами, чья структура отличается от характеристик датасета.

Датасет был обработан, чтобы соответстовать требованиям сети для обучения (созданы лейблы, изображения уменьшены и т.д.). 95% — обучающая выборка 5% — тестовая.

Обучение

Сеть обучалась в течение около 8 часов на NVIDIA Tesla K80. 16 эпох.

Сложности

1. Сейчас модель может распознавать небольшие последовательности. Ей нельзя скормить весь лист с нотами. Однако, эта проблема решаема. Я пытался сделать сегментацию листа (вычленение тактов) силами OpenCV и добился определённых результатов. Но код очень по-разному работает для изображений разного качества. Поэтому, в долгосрочной перспективе, тут нужно тренировать отдельный слой сети. Для этого нужны данные с разметкой тактов, систем и прочих высокоуровневых элементов системы нотного листа.

2. Не успел сделать конвертацию в MIDI. К сожалению, вопрос в лоб не решить. Думал просто конвертировать обратно в Lilypond но сделать это оказалось не так легко из-за того, что программа сама проставляет знаки альтерации в зависимости от тональности и ещё пары тонкостей. Возможно, тут лучше подойдёт OpenXML, на изучение формата которого, однако, у меня не хватило времени. Если успею и всё получится, реализую в ближайшие дни. Следите за гитхабом.

3. Также не хватило времени на «выкат в продакшен» версии для удобного тестирования без каких-либо установок. Поэтому, чтобы поиграться с распознаванием, нужно поставить https://github.com/emedvedev/attention-ocr и запустить функцию тестирования, это опишу ниже.

4. Также не успел, как следует протестить и собрать статистику. Единичный прогон по тестовой выборке показал результат в 99,5%.

Как запустить

aocr test —visualize ПУТЬ/К/notesTest.tfrecords —log-path ./log/log.log —max-width 1000 —max-height 61 —max-prediction 36 —full-ascii —model-dir ПУТЬ/К/checkpoints

Небольшое примечание. Распакованные checkpoints.zip содержат папку checkpointsDL — путь нужно указывать к ней.

Наблюдаем за процессом. А потом смотрим на результат в папке log. Там будут находиться папки для каждой картинки, для которой было проведено распознавание. В каждой папке файл word.txt где первая строка — предсказанный результат, вторая — ground-truth Также в папке находится гифка, показывающая процесс работы нейросети.

Для перевода результата в читаемый формат (переименование папок и файлов), кидаем питоновский скрипт в папку out и запускаем.

Быстрая установка и запуск на Линуксе

sudo pip install aocr
pip install tensorflow

git clone https://github.com/Dene33/notes-recognition
cd notes-recognition
unzip checkpoints.zip -d checkpoints

aocr test —visualize notesTest.tfrecords —max-width 1000 —max-height 61 —max-prediction 36 —full-ascii —model-dir ./checkpoints/checkpointsDL

Тест на своём датасете

Чтобы протестировать на своих картинках, создаём папку с картинками. Максимальная высота картинок — 60, ширина — 1000. Создаём текстовый файл (например labels.txt) с лейблами такого формата:

где ./datasets/images/hello.jpg — путь до картинки, hello — её лейбл. Какому символу какая нота соответствует можно посмотреть тут, где 1 столбец — лейблы, 2 — соответствующая нота или знак.

Затем, чтобы создать tfrecord из картинок выполняем:

aocr test —visualize ПУТЬ/К/testing.tfrecords —log-path ./log/log.log —max-width 1000 —max-height 61 —max-prediction 36 —full-ascii —model-dir ПУТЬ/К/checkpoints

Примеры картинок из обучаемой выборки и соответствующих лейблов:

MRRRROT:3+)R*

MRRN;RK+3R»QR Denis Cera, code

Комментарии

А не сравнивали качество с традиционными программами распознавания нот без нейросетей? https://en.wikipedia.org/wiki/Optical_music_recognition

Традиционные подходы работают более-менее, но 1. требовательны к качеству входного изображения — нужны отсканированные листы. 2. Не работают/работают плохо с рукописными нотами. Ну и конечно же, 3. большая часть подобного софта — проприетарные продукты. Нейронные же сети можно обучить распознавать ноты и на обычных фотографиях с телефона (был бы датасет подходящий).

В обратную сторону музыку в ноты переводить тоже можно? Не в рамках этого проекта, а вообще в принципе. Импровизируешь, потом читаешь.

Насколько я знаю, распознавание звука — более тривиальная задача, решаемая без использования нейронных сетей. Особенно, если говорить о монофонических мелодиях. С полифоническими уже сложнее, но тоже реально, особенно если играет один инструмент. Что касается записей с большим количеством инструментов — тут нейронные сети уже могли бы найти применение, да. Не уверен, что есть какие-то прям хорошие реализации для подобного, но могу ошибаться.

По поводу символов — было бы круто, если бы проект в будущем научился распознавать ноты для барабанщиков. Прикол в том, что если есть слух, то прослушать и повторить проще, чем разбирать ноты и считать длительности)
А на будущее, можно было бы еще подумать насчет интеграции с каким-нибудь существующим музыкальным ПО, тот же guitar pro, например.
Или вообще уйти в другую сторону и по нотам генерировать какую-нибудь игру, типа tap-tap:)

Распознавание нот для барабанщиков во многом даже легче реализовать (за счёт меньшего количества нотационных символов). Всё дело сводится лишь к размеченному дата сету, сама сеть работает отлично.

То, что слушать и повторять легче, чем копаться в нотах — это прям то, из-за чего я решил взяться за этот проект. Я пою в хоре и иногда хочется просто прослушать, как звучит партия. 🙂 Надеюсь, со временем получится довести проект до уровня «сфотографировал партию, прослушал».

Гитар про умеет импортировать MIDI файлы. Тут главное найти наиболее удобный способ для работы с выходными данными, да. Сейчас они генерируются в MIDI посредством питоновской библиотеки mido.

Источник

Программы для преобразования песни в ноты

Здесь представлены пять лучших программ для автоматической расшифровки музыки и преобразования песни в ноты

Здесь представлены пять лучших программ для автоматической расшифровки музыки.

The Transcribe! – это программное обеспечение помогает пользователям расшифровывать записанную музыку. Это помощник для людей, которые хотят обработать музыкальное произведение из записи, чтобы сыграть его самостоятельно или написать.

Эта программа не выполняет транскрипцию для пользователя, но это специализированная программа проигрывателя, улучшенная для транскрипции.

Ознакомьтесь с его лучшими функциями ниже:

  • Может использоваться для практики игры.
  • Мгновенно изменяет высоту тона и скорость, позволяя сохранять и вызывать любое количество именованных петель.
  • Вы сможете практиковаться во всех тональностях, а также сможете ускоряться и замедляться.
  • Может использоваться для транскрипции речи.
  • Если вы работаете с видеофайлом, эта программа также может отображать видео.
  • Не работает с файлами MIDI, но имеет дело с файлами данных аудиосэмплов.
  • В разделе справки программного обеспечения есть несколько советов по практике игры, и вам также следует проверить это.

Даже если программа воспроизводит и записывает аудиофайлы, это не значит, что это аудиоредактор.

NCH ​​TwelveKeys – это музыкальная программа, предназначенная для помощи музыкантам при расшифровке музыкальных записей. Инструмент работает со многими инструментами, играющими одновременно

Вот некоторые из наиболее заметных особенностей этого замечательного инструмента:

  • Слушайте музыкальные записи и смотрите ноты в реальном времени
  • Клавиатура пианино с поддержкой тембров помогает распознавать ноты
  • Замедление музыки без изменения высоты звука
  • Циклические участки записей
  • Графики монотонных и полифонических записей
  • Настраиваемые параметры для максимально четких графиков
  • Встроенный риппер для извлечения звука прямо с компакт-дисков
  • Поддерживает ножные педали для работы без помощи рук
  • Быстрая и простая работа
    Эта программа идеально подходит для музыкантов, пытающихся научиться играть музыкальное произведение без нотной записи или для помощи в записи других композиций и импровизаций.

Akoff Music Composer – один из лучших инструментов для автоматической расшифровки музыки. Эта программа использует сложный процесс автоматической транскрипции музыки.

Чтобы создать MIDI-последовательность для мелодии, записанной в аудиоформате, музыкант должен определить скорость, высоту и длительность каждой проигрываемой ноты.

Пользователь должен записать эти параметры в последовательность MIDI-событий.

Akoff Music Composer обычно транскрибирует полифоническую музыку одним инструментом или голосом.

Ознакомьтесь с основными функциями этого программного обеспечения:

  • Возможность отслеживать определенный темп во время записи или воспроизведения
  • Анализирует звуковые сигналы
  • Возможность определять динамику и частоту нот
  • Переводит всю информацию в MIDI-события и создает стандартную MIDI-последовательность.
  • Возможность редактирования нот

AnthemScore – Это программное обеспечение, которое автоматически создает ноты из аудиофайлов, включая WAV, MP3 и другие.

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

Ознакомьтесь с основными функциями AnthemScore:

  • Создает ноты в формате MusicXML, позволяя просматривать и редактировать их с помощью любого стандартного музыкального программного обеспечения.
  • Возможность просматривать график частоты / времени, играть на виртуальной клавиатуре, замедлять темп, а также сохранять ноты в другой тональности.
  • Ноты всех инструментов объединятся в одну часть.
  • Быстрая обработка песни.
  • Опция Staffs, позволяющая переместить все ноты на скрипичный или басовый ключ без изменения их высоты тона.
  • Параметры настройки высоты тона изменяют высоту тона всех нот вверх или вниз на фиксированное количество октав и полутонов.

AudioScore Ultimate – это полнофункциональная версия программного обеспечения, известного как AudioScore Lite, которое входит в состав Sibelius.

Используя это программное обеспечение, вы сможете преобразовывать записанный звук, живые выступления с микрофона или MIDI в ноты.

Источник

Оцените статью