Хочу программно проанализировать трек и разбить его на зоны, вроде "начало", "конец", "яма", "обычная часть", "самая активная часть". Начал я с того, что отобразил звуковую волну, которая представляет из себя массив чисел от 0 до 1. Чисто визуально эти зоны несложно определить по волне, но вот как это сделать программно?Супер точность не нужна. Мне в основном нужно лишь знать, когда начинаются и заканчиваются самые активные зоны. Хотя более полный анализ был бы лучше.Первое, что пришло в голову, это пройти по всему треку с определённым шагом (5 секунд). Шаг будет выдавать среднее значение + за каждым шагом будет сохранятся глобальное среднее значение текущей зоны до тех пор, пока не будет найдет конец зоны. Конец зоны нужно будет определять с какой-то заданной погрешностью видимо. То есть если был скачок при сравнение средних значений, значит одна зона закончилась и началась другая. Видимо как-то так.
>Чисто визуально эти зоны несложно определить по волне, но вот как это сделать программно?Ты уверен? Нынче в эпоху loudness war форма волны может спокойно выглядеть как большой зеленый прямоугольник.У тебя задача на machine learning из разряда "задизайнь вручную фичи и посмотри что получится". Какие фичи? Ну твое "среднее значение" (на самом деле RMS, потому что среднее значение у нормального трека должно быть равно 0, угадай почему), ритм (гугли rhythm detection algorithms), разные параметры спектра и т. п. Далее размечаешь твои активные зоны у хотя бы полсотни треков нужного тебе жанра и настраиваешь пороги срабатывания твоих алгоритмов. Хз, с наскоку такую задачу вряд ли решишь.
>>746654 (OP)https://en.wikipedia.org/wiki/Cluster_analysis
>>746654 (OP)Ну если ты собираешься ориентироваться только на громкость то у меня есть кое-какие наработки.
>>746744Да, мне по сути только анализ громкости нужен. Нужно понять, где самые активные части трека, чтобы в эти моменты активировать кое-какие штуки.>>746694Это если уж совсем крутой разбор треков делать, а мне нужен примитивный разбор на основе волны/громкости.
>>746734Как применить кластерный анализ в данном случае?
Использовал умственно отсталый подход из ОП-поста. В принципе, нужные зоны выделяются, но и ненужные тоже, хотя их можно будет отсеять уже после.
>>746760Ну короче вот тут https://github.com/stop-scrolling/webm-project/blob/master/screamer_detector/detector.py лежит недоделаный "детектор скримеров". Для определения громкости там используется фильтр для ffmpeg ebur128, вывод парсится.Может пригодится. Правильно посчитать интегральную и кратковременную громкость не так уж просто на самом деле.
>>746654 (OP)>Хочу программно проанализировать трек и разбить его на зоны>Начал я с освоения аутофеляцииНеплохой подход я щитаю