Нейросеть озвучила беззвучную игру на фортепиано

Нейросеть озвучила беззвучную игру на фортепиано

Американские разработчики создали алгоритм, который наблюдает за беззвучным видео игры на фортепиано и синтезирует восстановленный звук. Статья была представлена на конференции NeurIPS 2020.

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

Разработчики из Вашингтонского университета под руководством Эли Шлицермана (Eli Shlizerman) создали алгоритм для озвучивания игры на фортепиано, который учитывает не только сам факт нажатия клавиш, но и продолжительность. Алгоритм состоит из трех основных частей и они работают следующим образом. Сначала алгоритм Video2Roll получает на вход по пять последовательных кадров из видеозаписи, на которой сверху снята клавиатура и кисти рук музыканта. Этот алгоритм основан на сверточной нейросети ResNet18 и дополнен модулем внимания, позволяющими ему с большей вероятностью замечать нажатые клавиши, которые занимают лишь очень небольшую долю от всего кадра, и обучаемым корреляционным модулем, который позволяет ему обучаться наиболее частым комбинациям нажатий клавиш.

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

Для исправления этого недостатка «сырые» данные с алгоритма Video2Roll передаются на генеративно-состязательную нейросеть Roll2Midi, которая отсекает клавиши, не участвующие в формировании звука. Обычно в задачах по машинному обучению разработчики берут для обучения алгоритма реальные данные и формируют из них обучающую выборку. Для фильтрования MIDI-представления мелодии реальными данными могли бы служить MIDI-последовательности, записанные во время игры на синтезаторе. Авторы решили не ограничивать себя этим подтипом фортепиано и вместо этого сами создали псевдореальные MIDI-последовательности из аудиозаписей игры на фортепиано при помощи алгоритма, разработанного другими исследователями в 2017 году.
После того как данные мелодии отфильтрованы, происходит последний этап — превращение их в звук. Для этого разработчики воспользовались двумя алгоритмами: известной программой FluidSynth и нейросевым генератором звука PerfNet, обученном на собранных ими данных.
Разработчики проверили эффективность алгоритмов при помощи простого теста: они вопроизводили синтезированный звук, распознавали его с помощью Sound Hound и замеряли долю корректных распознаваний композиций. Самые высокие результаты получила связка из фильтрующего алгоритма Roll2Midi и синтезатора FluidSynth — 73,9 процента корректно распознанных композиций. При этом авторы отмечают, что, несмотря на сильные артефакты, звук с нейросетевого синтезатор PerfNet получается более «эмоциональным».

В 2018 году группа исследователей под руководством Эли Шлицермана создала другой алгоритм для работы с музыкальными композициями: она научила нейросеть предсказывать движения рук музыкантов по аудиозаписи.

Иллюстрация к статье: Яндекс.Картинки
Подписывайтесь на наш Telegram, чтобы быть в курсе важных новостей медицины

Оставить комментарий

Вы можете использовать HTML тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>