SeekTune: Строим открытый аналог Shazam на Go

29 июл 2025

Репозиторий давно не обновлялся

Последнее обновление было 9 месяцев назад.

5,596
617
31
9 месяцев

Представьте: вы слышите песню в кафе, но не можете вспомнить ни название, ни исполнителя. Знакомо? Обычно в таких случаях мы хватаемся за Shazam. Но что если сделать свой собственный музыкальный идентификатор? Именно этим и занялся разработчик Chigozirim Igweamaka в проекте SeekTune.

Что такое SeekTune?

SeekTune — это open-source реализация алгоритма распознавания музыки, похожего на тот, что использует Shazam. Проект написан на Go и предлагает:

  • Распознавание песен по аудиофрагментам
  • Интеграцию с Spotify и YouTube API
  • Возможность загружать треки из Spotify
  • Гибкие варианты хранения данных (SQLite или MongoDB)

Screenshot SeekTune

Как это работает?

Алгоритм использует технику аудиофингерпринтинга:

  1. Преобразует аудиосигнал в спектрограмму
  2. Выделяет уникальные "отпечатки" — характерные комбинации частот
  3. Сравнивает их с базой известных треков
  4. Находит наиболее близкое совпадение

Любопытно, что система отлично справляется с распознаванием оригинальных файлов, но пока не всегда точно определяет песни по записям с микрофона — над этим автор продолжает работать.

Реклама

Ключевые возможности

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?

  1. Образование: Отличный проект для изучения обработки аудиосигналов
  2. Медиаархивы: Автоматическая каталогизация музыкальных коллекций
  3. Стартапы: Базис для сервиса распознавания музыки
  4. Персональное использование: Свой Shazam без ограничений

Ограничения

Проект все еще в развитии и имеет некоторые ограничения:

  • Поддерживает только WAV-формат
  • Лучше работает с оригинальными файлами, чем с записями
  • Требует настройки API-ключей Spotify

Вывод: стоит ли пробовать?

SeekTune — отличный проект для:

  • Go-разработчиков, интересующихся обработкой аудио
  • Любителей разбирать сложные алгоритмы на понятные части
  • Тех, кто хочет создать свой музыкальный идентификатор

Если вы давно хотели заглянуть "под капот" технологии Shazam — это идеальная возможность. Проект активно развивается (уже 4.8k звезд на GitHub) и ждет ваших pull request'ов!

Ссылки:

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.