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

В этом блоге я буду определять эмоции по речи с помощью классификатора MLP (многоуровневого перцептрона).

Основные эмоции, которые я считал, - это нейтральные, гнев, счастье, печаль, спокойствие, страх, отвращение и удивление. Для этого я использовал данные RAVDESS, которые очень популярны и содержат в общей сложности 5252 аудиофайла wav 24 профессиональных актеров, озвучивающих два лексически совпадающих утверждения и сбалансированных по гендерному признаку с нейтральным североамериканским акцентом.

Вы можете получить набор данных здесь: https://zenodo.org/record/1188976#.X6_GJWgzY2w

А теперь приступим к реализации! 🤪

Прежде всего, импортируйте важные зависимости… ..

Распознавание речи

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

API распознавания речи менее эффективен для больших фрагментов файлов, поэтому здесь используется обработка ошибок. Если речь не распознается должным образом, будет выведено сообщение «ОШИБКА».

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

Очистка данных

За кулисами очистки аудиофайлов скрывается то, что она в основном удаляет все фоновые шумы путем маскирования.

Маскирование - это удаление ненужных пустых голосов вокруг основного звука.

Выполняется понижающая дискретизация звука, затем на него накладывается маска.

Визуализация наших аудиоданных

Функция построения графиков предназначена для углубленной визуализации всех аудиофайлов и определенных функций для построения графика.

Затем мы создадим функцию для извлечения необходимых характеристик аудиоклипов из наших речевых данных.

НО позвольте мне сначала объяснить вам, почему мы извлекаем функции и что именно? 🤔

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

Теперь мы извлечем необходимые свойства звука, такие как цветность, скорость пересечения нуля, энергия, спектральный поток, MFCC и т. Д.

Для этого эксперимента я рассмотрел три особенности набора аудиоданных: Mel, Chroma и MFCC. Это самые основные и основные характеристики аудиофайлов, влияющие на речь.

MFCC (Mel-Frequency Cepstral Coefficients): Это представление кратковременного p -цветного спектра звука, основанное на линейном косинусном преобразовании логарифмического спектра мощности на нелинейной Шкала частоты mel.Любой звук, издаваемый человеком, определяется формой речевого тракта, включая зубы, язык и т. д.

Огибающая временного спектра мощности аудиосигнала представляет речевой тракт и MFCC, которые в основном представляют собой коэффициенты, которые составляют кепстр Mel-частоты и точно представляют эту огибающую.

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

Цветность: она также известна как "профили классов высоты тона", "особенности цветности", "хромаграмма". к двенадцати различным классам высоты тона и настройке, приближенной к одинаковой темперированной гамме. Он передает гармонические и мелодические характеристики звука. Он состоит из 2 функций:

а) Цветовой вектор: 12-элементное представление спектральной энергии.

б) Отклонение цветности: это стандартное отклонение 12 коэффициентов цветности.

Вот функция, которую я сделал для извлечения функций.

Затем мы разделим наши данные на обучающую и тестовую выборки.

А теперь самое интересное, потому что мы собираемся применить классификатор MLP, но перед этим давайте попробуем сделать краткий обзор MLP и посмотреть, как он работает!

Mlp (многоуровневый перцептрон)

Это основной алгоритм глубокого обучения, который подключается к нейронной сети!

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

Обновленное уравнение веса:

«вес = вес + скорость обучения * (ожидаемый - прогнозируемый) * x».

В MLP может быть более одного линейного слоя (также известного как комбинации нейронов). Если мы рассматриваем простую трехуровневую сеть, первый уровень является входным слоем, последний слой - выходным слоем, а средний слой - скрытым слоем . Мы подаем входные данные во входной слой и получаем выходные данные из выходного слоя. Мы можем увеличить количество скрытых слоев, сколько захотим, чтобы соответственно сделать модель более сложной.

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

Функция активации: Функция активации, также известная как нелинейность, описывает отношения ввода-вывода нелинейным образом, что дает модели возможность быть более гибкой в ​​описании произвольных отношений. Вот несколько популярных функций активации Sigmoid, Relu и TanH.

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

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

Вот и все, но давайте проверим точность!

Заключение

Итак, в нашем эксперименте, описанном выше, нам удалось получить точность 88,70% с помощью нашей модели персептрона.

Ограничения и будущие улучшения

1. Недостатком, очевидно, является количество данных, поскольку требуется больше данных, чтобы обновить параметры нашей модели в лучшем направлении. В этом случае может быть достигнута более высокая точность.

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

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

3-Будущие улучшения могут заключаться в том, что мы сможем интегрировать часть распознавания эмоций лица вместе со звуковыми данными.