
Migrating from Spotify Audio Features: посібник порогів по кожному полю по полю
https://ift.tt/vp9M83l
TL;DR: Spotify закрив
/audio-features2024-11-27. APIFreqBlog Music пропонує готовий варіант наapi.freqblog.com/v1/audio-features/{id}— той самий шлях, та та сама форма відповіді. Числа наші (аналіз сигналу за допомогою librosa + Essentia, не ML-класифікатори Spotify), тож кілька розподілів полів змістилися. Це посібник з поетапного донастроювання з реальними даними розподілу з нашого каталогу близько ~57,000 треків.
Це syndicated-міррор — канонічна версія з повним форматуванням доступна за https://freqblog.com/blog/spotify-audio-features-migration-thresholds/ (де таблиця коректно відображається).
Форма міграції
Ви змінили хоста з api.spotify.com на api.freqblog.com. Ваш існуючий обробник GET /v1/audio-features/{id} все ще розбирає відповідь незмінно, модульні тести пройдуть. Потім ваш downstream if features.danceability > 0.7 рекомендатор починає відображати дивні треки. Ваше правило acousticness > 0.5 спрацьовує практично на everything. Ваш фільтр liveness > 0.8 відхиляє увесь каталог.
Міграція сумісна на рівні формату (shape). Напрямок зміни — на рівні значень. Spotify будував свої Audio Features шляхом навчання ML-класифікаторів на позначеному корпусі; ми обчислюємо свої з сигнал-аналізу. Одні й ті ж імена, різні «звіри».
Таблиця порогів (медіани каталогу понад ~8k треків)
-
bpm/tempo— медіана 118.7 — готовий варіант. Такожbpm_altвиправляє відомий баг Spotify з напівтаймінгом. -
key(0–11 / -1) — готовий варіант. Повертається якkey_int. -
mode(0/1) — готовий варіант. -
energy— медіана 0.73 — злегка зсувилася вгору; пороги підвищити ~0.05–0.1. -
valence— медіана 0.48 — найближчий до розподілу Spotify. Мінімальна повторна настройка. -
danceability— медіана 0.74 — зсунулась вгору. Старий 0.65 ≈ нашому 0.80. -
acousticness— медіана 0.98 — не використовуйте як «є акустично». Розрізняє близько 0.99. -
instrumentalness— медіана 0.23 — проксі форми сигналу, не вокальний класифікатор. -
liveness— медіана 1.00 (насичена) — наразі не діагностична. -
speechiness— медіана 0.45 — зсунулась вгору ~5–10×. Старе 0.66 ≈ наші >0.85. -
loudness— медіана -14 dB — на 3–6 дБ нижче, ніж у Spotify (вікно 30с vs повний трек BS.1770); використовуйте відносно, не абсолютно. -
time_signature— у практиці завжди 4. Розглядайте як інформаційне, а не як фільтр.
Чому acousticness дорівнює 0.98 для всього
Наша формула: 1 - clip(spectral_flatness / 0.15, 0, 1). Низька спектральна «плоскість» означає, що сигнал має сильні тональні/гармонічні піки — що більшість музики має, акустична чи електрична. Приблизно 99% нашого каталогу має оцінку >0.9. Якщо ваш код Spotify говорив acousticness > 0.7 = акустичний трек і спрацьовував на ~20% вашої бібліотеки, той же поріг під FreqBlog спрацюватиме на ~99% від неї. Це поле не є марним сигналом — воно розрізняє тональну музику і шумову підкладку (трек з білим шумом, чисте амбієнт, записи з важким спотворенням) — але його корисний поріг близько 0.99.
Чому liveness насичується
Формула: clip(noise_floor_ratio * 6.0, 0, 1), де noise_floor_ratio — це 5-й перцентильний RMS ділене на 95-й перцентильний RMS. Інтуїція: живі записі мають підвищений рівень шуму. Проблема: сучасна мастеринґована музика має сильну динамику компресії, що зменшує розподіл RMS-перцентилів — і множник ×6 насичує на 1.0 майже миттєво. Поки ми не запустимо кращий детектор, відмовтеся від фільтра liveness.
Що ми робимо правильно
-
BPM + key/mode/key_int — Essentia як зріла DSP; порівнянно з ML Spotify для звичайних випадків. Також
bpm_alt— це задокументоване покращення над відомою помилкою виявлення напівтаймінгу у Spotify (Blinding Lights: Spotify казав 85; сприйняття 171; ми відправляємо 85 уbpmі 171 уbpm_alt). - Camelot + Open Key — першокласні поля, готові до інструментів гармонійного мікшування.
-
Гнучкість ідентифікаторів —
/v1/audio-features/{id}приймає ідентифікатори треків Spotify, ISRC (з або без дефісів),spotify:track:…URI абоopen.spotify.com/track/…URL. Передавайте той, що дає ваш шар даних. - Задовго-до-оброслі запаси — якщо трек відсутній у каталозі, наш бекфіл інжестить його за 30с–2хв і надішле вам електронною поштою, коли буде готовий. API Spotify ніколи цього не мав.
Повна документація (з прикладами вто-)/ формулами по кожному полю) тут:
freqblog.com/blog/spotify-audio-features-migration-thresholds/
Безкоштовний тариф — 1 000 запитів на місяць, без карти. Коментарі / зворотній зв’язок щодо використання — привітні — вказані поля з застереженням (acousticness/liveness тощо) де саме попит клієнтів диктує наступний раунд вдосконалень.
HI-FI News
via DEV Community https://dev.to
12 травня 2026 р. 00:41.
May 12, 2026 at 12:41AM

Залишити відповідь
Щоб відправити коментар вам необхідно авторизуватись.