Самое лучшее в данных то, что они могут поступать откуда угодно и из любого источника, а когда дело доходит до машинного обучения, аудио может играть очень важную роль.

Мы будем использовать библиотеку librosa, чтобы на практике понять, как работает извлечение признаков для аудиосигналов.

Аудио в науке о данныхможно использовать по-разному, например, с точки зрения понимания того, как песни или музыку можно классифицировать как средство, создающее легкое настроение, чтобы заставить вас пойти на вечеринку, или с точки зрения классификации жанра музыки или вас. может заставить siriпонимать, как говорить более бегло и естественно. Так что нет сомнений, что у нас есть много возможностей и исследований, которые нужно провести с точки зрения использования Audio Signal для Data Science. Но как извлечь данные из аудио Давайте посмотрим на несколько удивительных и действительно крутых способов. И да, я включил проект в конец этой статьи, так что наслаждайтесь.

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

Частота выборки. Частота выборки означает количество выборок звука, записываемых каждую секунду. Измеряется в выборках в секунду или в герцах. Обычно звуковые сигналы обычно дискретизируются с частотой 44,1 кГц, 48 кГц, 88,2 кГц или 96 кГц.

БПФ. «Быстрое преобразование Фурье» (БПФ) — важный метод измерения в области аудио- и акустических измерений. Он преобразует сигнал в отдельные спектральные компоненты и, таким образом, предоставляет информацию о частоте сигнала.

Кепстр против спектра: Когда сигнал анализируется во временной области, они называются спектром, или вы можете сказать, что сигнал находится в спектральной области. но когда сигнал анализируется в частотной области и амплитуда такого сигнала берется для анализа сигнала, тогда говорят, что они находятся в кепстральной области.

Как извлечь функции из аудиосигнала?

  1. МФЦК
  2. Скорость пересечения нуля
  3. Спектральный центроид
  4. Спектральный рулон
  5. Хромаграмма

MFCC (мел-частотный кепстр)

MFCC дает очень хорошую сводку аудио, поэтому во многих случаях мы извлекаем MFCC для обучения моделей глубокого обучения или машинного обучения. В аудиотехнике кепстр мел-частоты (MFC) — это представление краткосрочного спектра мощности звука, основанное на линейном косинусном преобразовании логарифмической мощности. спектр по нелинейной меловой шкале частот. Я знаю, что это кажется сложным, но это не так. Кепстральные коэффициенты Mel-частоты (MFCC) — это коэффициенты, которые в совокупности составляют MFC, полученные из кепстра, упомянутого выше. .

Разница между кепстром и мел-частотным кепстром заключается в том, что в MFC полосы частот равномерно разнесены по мел-шкале, что более точно соответствует реакции слуховой системы человека, чем полосы частот с линейным интервалом, используемые в нормальном спектре. Это искажение частоты может обеспечить лучшее представление звука, например, при сжатии звука, что потенциально может уменьшить полосу пропускания передачи и требования к хранению аудиосигналов.

Чтобы извлечь Mfcc, вы можете использовать этот код в python, используя библиотеку librosa.

import librosa
signal, sample_rate = librosa.load(Audio_file_path)
librosa.feature.mfcc(y=signal, sr=sample_rate)
# you can also use other parameter n_mfcc which means no of mfcc by default its 20 etc.

Скорость пересечения нуля

Мы используем скорость пересечения нуля для понимания звука, и это может быть очень полезной функцией в звуке для понимания динамики звуковых сигналов. Скорость пересечения нуля (ZCR) – это скорость, с которой сигнал изменяется с положительного на нулевой и затем на отрицательный или с отрицательного на нулевой и на положительный. Он указывает, сколько раз сигнал пересекает горизонтальную ось.

# Code for extracting Zero Crossing Rate Using Librosa
import librosa
signal, sr = librosa.load(Audio_file_path)
librosa.feature.zero_crossing_rate(signal)
# output will be a array([[0.044, 0.074, ..., 0.488, 0.355]])

Спектральный центроид

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

Чтобы извлечь спектральный центроид, вы можете использовать приведенный ниже код, используя librosa.

Из простого файла aduo:

signal, sr = librosa.load(Audio_file_path)
cent = librosa.feature.spectral_centroid(y=signal, sr=sr)

Из ввода спектрограммы:

S, phase = librosa.magphase(librosa.stft(y=y))
librosa.feature.spectral_centroid(S=S)

Используя переменные центральные частоты бина:

signal, sr = librosa.load(librosa.util.example_audio_file())
if_gram, D = librosa.ifgram(signal)
librosa.feature.spectral_centroid(S=np.abs(D), freq=if_gram)

Спектральный спад

Это также важная особенность, которая может помочь определить некоторые конкретные уникальные частоты, в которых содержится полная энергия. Частота спада определяется как частота, ниже которой содержится некоторый процент (отсечка) от общей энергии спектра. Частоту спада можно использовать для различения гармонических (ниже спада) и шумных звуков (выше спада). Он определяется для каждого кадра как центральная частота для элемента спектрограммы, так что по крайней мере roll_percent энергии спектра в этом кадре содержится в этом элементе и элементах ниже. Это можно использовать, например, для аппроксимации максимальной или минимальной частоты, установив значение roll_percent близкое к 1 (или 0).

Чтобы получить спектральную частоту спада с помощью кода, запишите приведенный ниже код.

Из ввода временных рядов

signal, sr = librosa.load(Audio_file_path)
rolloff = librosa.feature.spectral_rolloff(y=signal, sr=sr, roll_percent=0.99)
rolloff_min = librosa.feature.spectral_rolloff(y=signal, sr=sr, roll_percent=0.01)

Из ввода спектрограммы

y, sr = librosa.load(librosa.ex('trumpet'))
S, phase = librosa.magphase(librosa.stft(y))
librosa.feature.spectral_rolloff(S=S, sr=sr)

Хромаграмма

Хромаграмма определяется как вся спектральная звуковая информация, отображенная на одну октаву. Каждая октава делится на 12 интервалов, представляющих каждый полутон. Для расчета хромаграммы мы используем Librosa Chroma_stft, он вычисляет хромаграмму на основе формы сигнала или спектрограммы мощности.

Чтобы извлечь функции цветности с помощью librosa, используйте следующий код.

signal, sr = librosa.load(audio_file_path, duration=15)
librosa.feature.chroma_stft(y=signal, sr=sr)

И это несколько способов, которыми вы можете извлечь функции из аудиосигнала и использовать их для обучения моделей машинного обучения или глубокого обучения. Когда дело доходит до извлечения таких функций, вы также должны подумать о правильном выборе параметров. Для лучшего понимания вам следует ознакомиться с документацией librosa.

Для лучшего понимания вы можете ознакомиться с моими полностью развернутыми проектами на Github, вы также можете посетить официальную документацию librosa, используя эту ссылку.

если вам понравилась эта статьяСвяжитесь со мной в linkedinилиПодпишитесь на меня чтобы прочитать больше таких статей на разные темы, такие как python, наука о данных, JavaScript, машинное обучение и глубокое обучение.