StravinskyBot - open-source Telegram бот для распознавания мелодий. Он работает без подключения к интернету, используя локальную базу наподобие Shazam.
StravinskyBot - это бесплатный Telegram бот с открытым исходным кодом, разработанный для распознавания мелодий. Бот основан на системе распознавания аудио Landmark, которая не имеет централизованной базы данных отпечатков звуков. Вместо этого пользователь сам добавляет аудиозаписи и указывает их название.
StravinskyBot предназначен для помощи студентам музыкальных учреждений в подготовке к музыкальным викторинам. В таких викторинах студентам часто требуется распознавать мелодии известных произведений композиторов. Shazam и другие приложения для распознавания музыки не всегда могут справиться с этой задачей.
StravinskyBot позволяет студентам загружать аудиозаписи, которые будут использоваться на викторине. Во время викторины студенты могут отправить аудиозапись боту, и он даст название произведения. Это поможет студентам проверить свои знания и подготовиться к викторине более эффективно.
Работа над StravinskyBot была начата в 2019 году как первый серьезный проект автора. С тех пор код бота был значительно переработан, но некоторые части кода все еще требуют доработки.
На данный поддерживаются два бэкенда для распознавания мелодий: audfprint и SoundFingerprinting. Для совместимой работы используется кастомные фиксы поверх оригинальных реализации, для достижения максимального удобство интеграции.
Особенности audfprint:
- Написан на Python 3, отсюда работает он медленнее чем SoundFingerprinting, но вполне приемлемый для использования.
- Более точно определяет искаженные аудио записи
- Реализация адаптированная для бота: https://github.com/ZhymabekRoman/audfprint-enhanced
Особенности SoundFingerprinting:
- Написан на C#, отсюда работает он быстрее чем audfprint.
- Точность работы вполнее приемлема для распознавания мелодий.
- Реализация адаптированная для бота. Нужно скомпилировать перед использованием: https://github.com/ZhymabekRoman/AudioFingerprinting.Demo
Для того чтобы выставить нужный бэкенд для работы с ботом, нужно отредактировать .env
. Туда же вписать Telegram токен бота. Нужно положить нужный бэкенд в папку bot/library/audfprint
либо bot/library/SoundFingerprinting
соотыетсвенно.
Чтобы установить StravinskyBot, необходимо выполнить следующие действия:
- Установить необходимые программы и библиотеки:
sudo apt install python3 python3-pip ffmpeg git -y
- Склонировать репозиторий бота:
git clone https://github.com/ZhymabekRoman/StravinskyBot
- Установить зависимости бота:
cd StravinskyBot/
pip3 install -r requirements.txt
- Добавить переменную PATH в файл
~/.bashrc
, чтобы pip мог находить необходимые библиотеки:
echo export PATH=~/.local/bin:$PATH >> ~/.bashrc
- Запустить бота:
python3 -m bot
- aiogram: https://github.com/aiogram/aiogram: простой и полностью асинхронный фреймворк для Telegram Bot API, написанный на Python 3.7 с использованием asyncio и aiohttp.
- ffmpeg: https://ffmpeg.org/: мощная программа для работы с аудио и видео. Используется для преобразования и работы с аудио-хешами.
- ffmpeg-normalize: https://github.com/slhck/ffmpeg-normalize: это утилита для пакетной нормализации аудио с использованием ffmpeg.