Данный проект - курсовая работа студентов второго курса ФУПМ (факультета управления и прикладной математики) МФТИ: Бухараева Алима, Прохорова Юрия, Яушева Фаруха и Савелова Михаила. Он состоит из 3 основных обособленных частей:
- Библиотека и API на C++ для обработки аудиозаписей.
- API в виде расширения PHP для обработки аудиозаписей.
- Пользовательский интерфейс в виде веб-приложения. Подробную документацию можно найти в папке Documentation/docs.pdf.
Изначально, у нас была идея написать программу, способную распознавать музыкальные инструменты на аудиозаписи. Причина связана с тем, что эта задача не имеет точных результатов, и мы хотели получить свое собственное частное решение. Затем мы решили расширить функционал нашего приложения, добавив наиболее популярные запросы, и реализовать его как легко доступный пользователю веб-сервис. Таким образом, основные цели проекта:
- Повышение командных навыков.
- Реализация приложение по популярной тематике.
- Применение знаний языка C++.
- Изучение новых инструментов и технологий.
Пользователю предлагается загрузить файл в формате WAV на сервер. После этого он получает некоторую статистику о файле и выбирает, какое действие он желает выполнить с ним или сразу с несколькими файлами. Среди возможных функций: предсказание музыкального инструмента по аудиозаписи, слияние файлов, их обрезка, усиление громкости, ускорение и другие преобразования. Пользователь имеет возможность отправить сообщение о том, угадала ли сеть, а аудиозапись может быть использована далее для дальнейшего обучения нашей или каких-либо других моделей. Наконец, преобразованный файл пользователь может прослушать и загрузить на обратно на свое устройство.
При разработке приложения использовались следующие технологии:
- Язык С++ стандарта 11 для написания серверной составляющей (ядра).
- Набор инструментов для написания расширения PHP на С++.
- Python 3 и библиотеки Keras, NumPy, SciPy для реализации нейронной сети.
- Средства PHP, HTML5, CSS и Javascript для разработки пользовательского интерфейса.
To use the instrument classifier:
- put my_model_one_sec_19.h5, launch.py, audio_file.wav in the same directory
- cd </that_directory>
- python -W ignore launch.py audio_file.wav (or python3 -W ignore launch.py audio_file.wav)