Давайте разберемся, как работать со звуком, чтобы использовать модели машинного обучения и глубокого обучения. Этот пост основан на исследовании, проведенном в рамках проекта Silvertone.

На данный момент Silvertone доступен через Streamlit.

Также не забудьте проверить репозитории приложения и проекта.

Silvertone был заключительным проектом для ванны 1011 учебного лагеря Le Wagon Rio по науке о данных. Моя команда была сформирована: я; Виктор Саттамини, руководитель группы; Лукас Гама, у которого лучшая модель; Гильерме Баррос, тот, у кого есть навыки работы с интерфейсом.

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

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

возьмите свой кофе, и давайте поговорим об анализе настроений по аудио.

Аудиофайлы представляют собой звуковые волны, преобразованные в информацию, которую интерпретатор поймет и снова преобразует в звуковые волны. Как и наша голова, она проделает аналогичный процесс с физическим аспектом. Что касается базовых моделей, Keras Tensorflow и Scikit-Learn не могут использовать традиционные аудиоформаты, такие как MP3 или WAV.

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

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

import librosa

x, sr = librosa.load(audio_file)

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

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

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

Особенности тонального центроида представляют совершенную пятую, малую терцию и большую терцию в виде двумерных векторов. Таким образом, тональные центроиды будут иметь шесть измерений.

Идеальная квинта — это музыкальный интервал пары нот с соотношением частот. Малая терция и большая терция - это интервалы между нотной гаммой.

Благодаря функциям тонального центроида вы можете сосредоточиться на более важной информации о волне. Вы будете работать с шестимерными векторами, но важно помнить, что время по-прежнему является важной характеристикой. С его помощью мы смогли добиться около 70% точности, что неплохо для случайного леса.

Вы можете извлечь особенности тонального центроида с помощью librosa следующим образом:

tonnetz = librosa.feature.tonnetz(y=x, sr=sr)

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

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

Librosa может предоставить нам спектрограмму в мелкомасштабном масштабе напрямую:

S = librosa.feature.melspectrogram(y=x, sr=sr)

Мел-масштабирование представляет собой логарифмическое преобразование частоты сигнала. Основная идея заключается в том, что люди не одинаково воспринимают расстояния в разных тонах. Выполняя такое преобразование, шкала будет ближе к тому, как люди воспринимают расстояние в шкале основного тона.

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