Как ввести аудиоданные в алгоритм глубокого обучения? - PullRequest
2 голосов
/ 10 октября 2019

Я очень новичок в глубоком обучении и собираюсь использовать GAN (Generative Adversarial Network) для распознавания эмоциональной речи. Я знал только изображения, являющиеся входными данными для большинства алгоритмов глубокого обучения, таких как GAN. но мне любопытно, как аудиоданные могут быть входом в него, помимо использования изображений спектрограмм в качестве входа. Кроме того, я был бы признателен, если бы вы могли объяснить это с точки зрения мирян.

Ответы [ 3 ]

0 голосов
/ 10 октября 2019

В дополнение к обсуждению Аюша, для получения информации о проблемах и обходных путях обработки больших объемов данных в различных временных масштабах аудиоданных, я предлагаю этот пост в WaveNet: https://deepmind.com/blog/article/wavenet-generative-model-raw-audio

После этого он звучиткак вы хотите сделать классификацию. В этом случае GAN сам по себе не подходит. Если у вас много данных, вы можете использовать прямой LSTM (или другой тип RNN), который предназначен для моделирования временных рядов, или вы можете взять куски ввода заданного размера и использовать 1-й CNN (аналогично WaveNet). Если у вас есть много немаркированных данных из того же или аналогичного домена и ограниченные обучающие данные, вы можете использовать GAN для обучения созданию новых выборок, а затем использовать дискриминатор из GAN в качестве предварительно обученных весов для классификатора CNN.

0 голосов
/ 25 октября 2019

Поскольку вы пытаетесь выполнить распознавание речи (SER) с использованием глубокого обучения, вы можете использовать рекуррентную архитектуру (LSTM или GRU) или комбинацию CNN и рекуррентной сетевой архитектуры (CRNN) вместо GAN, поскольку GAN являются сложнымии трудно тренироваться.

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

Что касается выбора входа, вы можете использовать либо вход спектрограммы (2D), либо необработанный речевой сигнал (1D) в качестве входа. Для ввода спектрограммы вы должны использовать 2D CNN, тогда как для необработанного речевого сигнала вы можете использовать 1D CNN. Спектрограммы масштаба Мел обычно предпочтительнее линейных спектрограмм, поскольку наши уши слышат частоты в логарифмическом масштабе, а не линейно.

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

http://www.eecs.qmul.ac.uk/~andrea/papers/2019_SPL_ConflictNET_Rajan_Brutti_Cavallaro.pdf

Кроме того, проверьте мой код GitHub для той же бумаги

https://github.com/smartcameras/ConflictNET

иДокумент SER, код которого я воспроизвел на Python

https://github.com/vandana-rajan/1D-Speech-Emotion-Recognition

И, наконец, как уже упоминал Аюш, Librosa - одна из лучших библиотек Python для обработки аудио. У вас есть функции для создания спектрограмм в Librosa.

0 голосов
/ 10 октября 2019

Аудиоданные могут быть представлены в виде пустых массивов, но прежде чем перейти к этому, вы должны понять, что такое аудио на самом деле. Если вы задумаетесь о том, как выглядит звук, это не что иное, как волновой формат данных, в котором амплитуда звука изменяется во времени.

enter image description here

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

Теперь давайте загрузим данные. Мы будем использовать библиотеку под названием librosa, которую можно установить с помощью pip.

data, sampling_rate = librosa.load('audio.wav')

Теперь у вас есть и данные, и частота дискретизации. Теперь мы можем построить график.

librosa.display.waveplot(data, sr=sampling_rate)

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

...