Погружаясь глубже во времени.
Введение
Хотя в глубоком обучении часто используются процессы в частотной области, есть еще много важных функций, которые можно использовать во временной области, которые имеют отношение ко многим методам машинного обучения. Проще говоря, эти особенности можно выделить и проанализировать, чтобы понять свойства формы волны. При извлечении признаков во временной области мы обычно изучаем амплитуду каждой выборки. То, как мы манипулируем амплитудой, дает нам определенные сведения о рассматриваемом сигнале.
Статьи по Теме:
- Изучение звука: формы волны
- Учимся на аудио: преобразования Фурье
- Изучение звука: спектрограммы
- Изучение звука: шкала Мела, спектрограммы Мела и частотные кепстральные коэффициенты Мела
- Изучение звука: высота звука и хроматограммы
Прежде чем начать, я хотел бы установить некоторые обозначения:
В этих примерах я подробно расскажу, что это за функция, как ее формально определить, и покажу, как извлечь функции в Python. В предыдущих примерах мы рассматривали определенные звуки инструментов. Однако в этом примере мы рассмотрим случайные 7-секундные фрагменты песен разных жанров (в частности, R&B, Rap и Rock), так как мы сможем лучше увидеть свойства этих функций.
В целях защиты авторских прав я не смогу поделиться рассматриваемыми песнями, однако я поделюсь выходными графиками, а также жанром песен. Это позволит нам изучить нюансы между жанрами.
Как всегда, репозиторий всего кода можно найти в репозитории Learning from Audio GitHub.
Примечание: все рисунки принадлежат автору.
Огибающая амплитуды
Огибающая амплитуды (AE) предназначена для извлечения максимальной амплитуды в каждом кадре и объединения их всех вместе. Важно помнить, что амплитуда представляет собой громкость (или громкость) сигнала. Сначала мы разбиваем сигнал на составляющие окна и находим максимальную амплитуду в каждом окне. Оттуда мы строим график максимальной амплитуды в каждом окне по времени.
Мы можем использовать AE для обнаружения начала или обнаружения начала звука. В различных приложениях для обработки речи это может быть кто-то говорящий или внешний шум, тогда как в поиске музыкальной информации (MIR) это может быть начало ноты или инструмента.
Основным недостатком AE является то, что он не так устойчив к выбросам, как среднеквадратическая энергия, которую мы скоро изучим.
Вот как мы можем формализовать эту концепцию:
При поиске определенного метода в Python, который мог бы выполнить эту задачу, я не смог его найти. Поэтому мы определим его с нуля, так как это будет довольно просто сделать. Другие методы извлечения функций, которые мы рассмотрим, уже определены в librosa
, поэтому мы будем использовать эти функции после их формального определения.
Важно отметить, что при настройке в этом for
цикле мы не обозначаем hop length
. Это означает, что когда мы создаем верхнюю и нижнюю границы, окна НЕ перекрываются, делая hop length
и frame length
одинаковыми.
Теперь, чтобы визуализировать и сравнить AE между жанрами:
Среднеквадратичная энергия
Как упоминалось ранее, среднеквадратичная энергия (RMS) очень похожа на AE. Однако, в отличие от обнаружения начала, он пытается определить громкость, которую можно использовать для обнаружения событий. Кроме того, он гораздо более устойчив к выбросам, а это означает, что если мы сегментируем звук, мы можем гораздо более надежно обнаруживать новые события (например, новый инструмент, кто-то говорит и т. Д.).
Формальное определение RMS Energy:
Если вы знакомы с концепцией среднеквадратического значения, это не будет для вас чем-то новым. Однако, если это не так, не волнуйтесь.
Когда мы просматриваем нашу форму волны, мы возводим в квадрат амплитуды внутри окна и суммируем их. Как только это будет сделано, мы разделим его на длину кадра, извлечем квадратный корень и получим среднеквадратичную энергию этого окна.
Чтобы извлечь RMS, мы можем просто использовать librosa.feature.rms
. Теперь визуализируем это:
Как мы видим отличия от RMS и AE, RMS не колеблется так сильно, как AE. Это свойство делает среднеквадратичное значение амплитуды более устойчивым к выбросам.
Скорость перехода через ноль
Zero-Crossing Rate (ZCR) направлен на изучение скорости, с которой амплитуда сигнала меняет знак в каждом кадре. По сравнению с двумя предыдущими функциями, эту довольно просто извлечь.
Формальное определение ZCR следующее:
Для MIR эта функция актуальна для определения звука перкуссии, поскольку они часто имеют колеблющиеся сигналы, которые ZCR может довольно хорошо обнаружить, а также определение высоты тона. Однако эта функция обычно используется в качестве функции распознавания речи для обнаружения голосовой активности.
Используя librosa
, мы можем извлечь ZCR, используя librosa.feature.zero_crossing_rate
.
Вывод
К настоящему времени вы должны иметь представление о том, как работает извлечение временных характеристик, как их можно использовать в различных аудио-приложениях и как самостоятельно разработать методы извлечения функций. Используя амплитуду в определенных окнах, мы открываем множество возможностей для понимания различных приложений MIR и ASR. Спасибо, что прочитали, и если у вас есть вопросы, не стесняйтесь их задавать!