SeekTune: Строим открытый аналог Shazam на Go
Репозиторий давно не обновлялся
Последнее обновление было 9 месяцев назад.
Представьте: вы слышите песню в кафе, но не можете вспомнить ни название, ни исполнителя. Знакомо? Обычно в таких случаях мы хватаемся за Shazam. Но что если сделать свой собственный музыкальный идентификатор? Именно этим и занялся разработчик Chigozirim Igweamaka в проекте SeekTune.
Что такое SeekTune?
SeekTune — это open-source реализация алгоритма распознавания музыки, похожего на тот, что использует Shazam. Проект написан на Go и предлагает:
- Распознавание песен по аудиофрагментам
- Интеграцию с Spotify и YouTube API
- Возможность загружать треки из Spotify
- Гибкие варианты хранения данных (SQLite или MongoDB)

Как это работает?
Алгоритм использует технику аудиофингерпринтинга:
- Преобразует аудиосигнал в спектрограмму
- Выделяет уникальные "отпечатки" — характерные комбинации частот
- Сравнивает их с базой известных треков
- Находит наиболее близкое совпадение
Любопытно, что система отлично справляется с распознаванием оригинальных файлов, но пока не всегда точно определяет песни по записям с микрофона — над этим автор продолжает работать.
Ключевые возможности
1. Распознавание музыки
go run *.go find путь_к_wav_файлу
Проект выдает список возможных совпадений с оценкой вероятности — как видно из примера, для оригинальных файлов точность практически идеальная:
Top 20 matches:
- Voilà by André Rieu, score: 5390686.00
- I Am a Child of God by One Voice Children's Choir, score: 2539.00
2. Загрузка треков из Spotify
go run *.go download https://open.spotify.com/track/...
Система не только скачивает трек, но и автоматически добавляет его "отпечатки" в базу для будущего распознавания.
3. Гибкое хранение данных
По умолчанию SeekTune использует SQLite, но легко переключается на MongoDB через переменные окружения:
DB_TYPE=mongo
DB_HOST=localhost
DB_PORT=27017
Техническая сторона
Проект сочетает несколько технологий:
- Backend: Чистый Go (без фреймворков)
- Frontend: React (опционально)
- Аудиообработка: FFmpeg
- Базы данных: SQLite/MongoDB
- API: Spotify, YouTube
Для быстрого старта есть Docker-конфигурация:
docker-compose up --build
Практическое применение
Где может пригодиться SeekTune?
- Образование: Отличный проект для изучения обработки аудиосигналов
- Медиаархивы: Автоматическая каталогизация музыкальных коллекций
- Стартапы: Базис для сервиса распознавания музыки
- Персональное использование: Свой Shazam без ограничений
Ограничения
Проект все еще в развитии и имеет некоторые ограничения:
- Поддерживает только WAV-формат
- Лучше работает с оригинальными файлами, чем с записями
- Требует настройки API-ключей Spotify
Вывод: стоит ли пробовать?
SeekTune — отличный проект для:
- Go-разработчиков, интересующихся обработкой аудио
- Любителей разбирать сложные алгоритмы на понятные части
- Тех, кто хочет создать свой музыкальный идентификатор
Если вы давно хотели заглянуть "под капот" технологии Shazam — это идеальная возможность. Проект активно развивается (уже 4.8k звезд на GitHub) и ждет ваших pull request'ов!
Ссылки:
