Определение BPM аудио
Оцените темп (BPM, ударов в минуту) аудиофайла с помощью анализа энергии в сочетании с автокорреляцией. Принимает форматы, которые ваш браузер умеет декодировать самостоятельно (WAV, MP3, OGG, M4A — в зависимости от браузера).
Как это работает
Инструмент декодирует аудио, сводит его в один моноканал, а затем вычисляет огибающую энергии (RMS) на небольших окнах около 20 миллисекунд на протяжении всей композиции. Из этой огибающей затем выводится функция обнаружения атак («onsets») — остаются только приросты энергии. К этой функции применяется автокорреляция, чтобы найти временной интервал, который повторяется наиболее регулярно; этот интервал, пересчитанный в удары в минуту, и даёт оценку темпа.
Насколько эта оценка надёжна?
Она не абсолютно точна: это упрощённая алгоритмическая оценка, а не детектор студийного уровня, какие применяются в профессиональном музыкальном производстве. Точность сильно зависит от музыкального стиля: обычно она хороша для музыки с чёткой и ровной перкуссией (электроника, поп, рок) и менее надёжна для композиций без явного ритма (классика, эмбиент, вокал а капелла).
Почему результат иногда оказывается вдвое быстрее или медленнее?
Это классическое явление при определении темпа: алгоритм может «зацепиться» за удвоенный или половинный темп по сравнению с реально ощущаемым (например, определить 140 BPM, тогда как композиция воспринимается как 70 BPM), поскольку ритмическая энергия часто так же сильна на дроблениях доли. Поэтому вторичные кандидаты (вдвое больше/вдвое меньше) показаны рядом с основным результатом.
Почему анализируются только первые 60 секунд?
Чтобы работать быстро и не подвешивать браузер на длинных файлах, анализ ограничен первой минутой записи — этого более чем достаточно, чтобы оценить в целом стабильный темп.
Обработка 100% локально: декодирование (Web Audio API) и расчёт темпа выполняются целиком в вашем браузере — ваш аудиофайл никогда не отправляется на сервер.