Skip to content

Latest commit

 

History

History
71 lines (46 loc) · 5.45 KB

README.md

File metadata and controls

71 lines (46 loc) · 5.45 KB

StravinskyBot

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, необходимо выполнить следующие действия:

  1. Установить необходимые программы и библиотеки:
sudo apt install python3 python3-pip ffmpeg git -y
  1. Склонировать репозиторий бота:
git clone https://github.com/ZhymabekRoman/StravinskyBot
  1. Установить зависимости бота:
cd StravinskyBot/
pip3 install -r requirements.txt
  1. Добавить переменную PATH в файл ~/.bashrc, чтобы pip мог находить необходимые библиотеки:
echo export PATH=~/.local/bin:$PATH >> ~/.bashrc
  1. Запустить бота:
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.