Распознавание мелодии с помощью нечеткого поиска
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?сальный средний уровень, который уже потом переводит прямо по ходу дела в микрокод конкретного аппаратного обеспечения с нужными оптимизациями. В самом языке реализовано все лучшее, что есть на нынешний момент в императивных языках.
мелодия сравнение файл левенштейн
1. Постановка задачи
Пусть в качестве входных данных имеется два MIDI-файла. Необходимо реализовать сравнение данных файлов и выдачу, в качестве выходного параметра, соответствующего результата пользователю. Для достижения этой цели в первую очередь необходимо реализовать алгоритм корректного считывания данных из файла, затем произвести сравнение данных из двух MIDI-файлов и выдать результат сравнения.
Приложение должно предусматривать дружественный и интуитивно понятный интерфейс.
Алгоритм работы приложения должен включать следующие этапы:
.Выбор сравниваемых файлов MIDI.
.Считывание данных из MIDI-файла в удобное для сравнения представление (например, массив).
.Определение похожести двух массивов MIDI-файлов и вычисление коэффициента похожести.
.На основе значений коэффициента совершение вывода результата о совпадении данных файлов и сообщении степени похожести.
.Выдача результатов пользователю.
Сама задача в свою очередь состоит только из считывания данных, представления в удобном для работы виде, определения сходства, то есть сравнения, и вычисления числового результата. Причем считывание данных из MIDI-файла и определение похожести двух массивов данных из MIDI-файлов и вычисление коэффициента похожести в свою очередь являются подзадачами.
Для решения первой подзадачи необходимо изучить спецификацию MIDI-файлов, понять, как устроен файл, в какой последовательности хранятся данные, а определение похожести двух массивов и вычисление коэффициента похожести в свою очередь является подзадачей, которую в общем виде можно сформулировать следующим образом:
По заданному слову найти в тексте или словаре размера n все слова, совпадающие с этим словом (или начинающиеся с этого слова) с учетом k возможных различий.
В данной работе, с учетом специфики, рассматривается только частный случай данной задачи:
По заданному слову определить совпадение со словом (или начинающиеся с этого слова) из словаря с учетом k возможных различий.
Такая задача имеет свое название задача нечеткого поиска.
При решении необходимо учесть, что длительность мелодий (длина слов) может быть различной, они могут проигрываться в разных тональностях.
Данные приложение получает от пользователя посредством диалоговых окон, поэтому необходимо учесть и пользовательские ошибки, и их корректную обработку приложением. Пользователь может ввести неверные данные, в этом случае программа должна среагировать и предоставить второй шанс.
2. Анализ задачи
Для считывания данных из MIDI-файла, например, в Matlabе уже написана специальная библиотека (более подробно это рассматривалось в предыдущей курсовой работе), но после считывания получаются избыточные данные, которые в рамках поставленной задачи не представляют ценности, кроме того, Matlab энерго- и ресурсозатратен. Поэтому надежнее написать собственную реализацию, предварительно изучив формат MIDI.
Вначале рассмотрим основные понятия и определения.
MIDI (англ. Musical Instrument Digital Interface - цифровой интерфейс музыкальных инструментов) - стандарт цифровой звукозаписи на формат обмена данными между электронными музыкальными инструментами.
Стандартный MIDI файл (.mid) - в отличие от других форматов это не оцифрованный звук, а наборы команд (проигрываемые ноты, ссылки на проигрываемые инструменты, значения изменяемых параметров звука), которые могут воспроизводиться по-разному в зависимости от устройства воспроизведения. Удобство формата MIDI как формата представления данных позволяет реализовывать устройства, производящие автоматическую аранжировку по заданным аккордам, а также приложения 3D-визуализации звука. Кроме того, такие файлы, как правило, имеют на несколько порядков меньший размер, чем оцифрованный звук сравнимого качества. Данные MIDI-файла хранятся в символьном виде (в виде записей).
Запись - это по своей сути набор взаимосвязанных байтов. В одном MIDI-файле могут сосуществовать несколько различных записей. Каждая запись может иметь свой собственный размер, то есть количество байтов в различных записях может быть различно. Данные, хранящиеся в одной записи, связаны друг с другом определенным образом.
Тогда общий подход к решению задачи сформируется следующим образом:
Считывание содержимого файлов для сравнения в соответствующие массивы байтов.
Проведение процесса сравнения (посредством алгоритма) и вывода результата
Обработка данных, посредством сравнения полученных результатов.
Файл цифрового звука хранит в себе запись звука, файл MIDI хранит в себе запись действий музыканта. Стандартный MIDI файл (SMF и Standard MIDI FIle) - это специально разработанный формат файлов, предназначенный для хранения данных, записываемых и / или исполняемых секвенсором, секвенсор может быть как программой для компьютера, так и аппаратно выполненным модулем. В этом формате хранятся стандартные MIDI сообщения (т.е. статус-байты и соответствующие им байты данных), а также временные метки или маркеры для каждого сообщения (т.е. последовательности байтов, указывающие, какое количество условных единиц