Skip to content

Бесплатный Telegram бот, который поможет вам узнать, какая песня играет. Он работает без подключения к интернету, используя локальную базу наподобие Shazam.

License

Notifications You must be signed in to change notification settings

ZhymabekRoman/StravinskyBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Бесплатный Telegram бот, который поможет вам узнать, какая песня играет. Он работает без подключения к интернету, используя локальную базу наподобие Shazam.

Resources

License

Stars

Watchers

Forks

Languages