Погружаясь глубже во времени.

Введение

Хотя в глубоком обучении часто используются процессы в частотной области, есть еще много важных функций, которые можно использовать во временной области, которые имеют отношение ко многим методам машинного обучения. Проще говоря, эти особенности можно выделить и проанализировать, чтобы понять свойства формы волны. При извлечении признаков во временной области мы обычно изучаем амплитуду каждой выборки. То, как мы манипулируем амплитудой, дает нам определенные сведения о рассматриваемом сигнале.

Статьи по Теме:

Прежде чем начать, я хотел бы установить некоторые обозначения:

В этих примерах я подробно расскажу, что это за функция, как ее формально определить, и покажу, как извлечь функции в 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. Спасибо, что прочитали, и если у вас есть вопросы, не стесняйтесь их задавать!