УДК 004

РЕАЛИЗАЦИЯ ПРИЛОЖЕНИЯ АВТОМАТИЧЕСКОГО РАСПОЗНАВАНИЯ ЭМОЦИЙ ЧЕЛОВЕКА ПО ГОЛОСУ

№44,

Технические науки

Барышев Денис Анатольевич
Зубанков Алексей Сергеевич


Научный руководитель: Розалиев В.Л.


Ключевые слова: НЕЙРОННЫЕ СЕТИ; LSTM; РЕКУРРЕНТНЫЕ НЕЙРОСЕТИ; РАСПОЗНАВАНИЕ ЭМОЦИЙ; РАСПОЗНАВАНИЕ РЕЧИ; NEURAL NETWORKS; LSTM; RECURRENT NEURAL NETWORKS; EMOTION RECOGNITION; SPEECH RECOGNITION.


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

Распознавание эмоций человека по его голосу является актуальной и развиваемой темой. Speech Emotion Recognition (SER) может применяться в таких областях как маркетинг, медицина, безопасность, образование. Для реализации автоматического распознавания используются нейронные сети, так как это является наиболее удобным и точным вариантом решения задачи.

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

1. Определить количество распознаваемых эмоций. Следует отметить, что по разным источником выделяют от 6 до более чем 100 эмоций. Однако в аналоговых программах очень часто определяют только 1-3 эмоции, например, только злость, или позитив/негатив. Это обусловлено тем, что для определения эмоций используются многоклассовые классификаторы, где каждый класс – это одна эмоция. Чем больше классов мы подадим в модель нейронной сети, тем ниже будет точность. Поэтому было принято решение выбрать в качестве перечня распознаваемых эмоций градацию Пола Экмана [1], где есть 7 базовых эмоций: радость, грусть, удивление, злость, отвращение, презрение и страх. Также мы добавили еще одну эмоцию – нейтралитет для тех случаев, когда пользователь говорит спокойно, либо невозможно определить явно выраженную эмоцию.

2. Определить признаки по которым мы могли бы определять эмоции. Человек определяет эмоции в речи подсознательно, не задумываясь. Теперь необходимо объяснить машине какие именно критерии необходимо учитывать при распознавании эмоций. Для этого были выбраны 5 критериев:

— Шкала Mel — это перцептивная шкала тонов, которые слушатели оценивают как равные по расстоянию друг от друга.
— MFCC — это представление кратковременного спектра мощности звука, основанного на некотором преобразовании в масштабе Mel [2].
— Цветность (Хромаграмма)— это представление звука в соответствии с цветами.
— Тональный центроид (tonnetz) — это решетчатая диаграмма, представляющая тональное пространство.
— Спектральный контраст — это мера энергии частоты в каждой временной метке.

Для выделения этих признаков была использована библиотека Librosa языка Python [3].

3. Выбрать модель нейронной сети для выполнения основной части задачи. Известно, что с классификацией последовательностей наиболее хорошо справляются рекуррентные нейронные сети [4]. Также рассматривались такие модели как CNN, градиентный бустинг, многослойный персептрон и рандомный лес, но результаты всех остальных моделей оказались хуже: Accuracy для LSTM был равен 91,56%, для CNN – 89,19%, Random Forest – 78,54%, Gradient Boosting – 84,76%, MLP – 83,58%. Все модели тестировались на одинаковом датасете. Учитывая, что CNN также показала довольно неплохой результат и такие модели используются для задач классификации, выбор пал именно на рекуррентную модель из-за более точной классификации последовательностей.

4. Собрать датасет для обучения модели нейронной сети. В качестве датасетов используются открытые датасеты TESS и RAVDESS, а также собранный вручную датасет на русском языке суммарно с 354 аудиозаписями голосов актеров, озвучивающих 8 эмоций (7 по Полу Экману и спокойствие).

Для решения задачи было реализовано десктопное приложение, интерфейс пользователя которого показан на рисунке 1.


Рис. 1 Визуальный пользовательский интерфейс программы.

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

Программа работает в двух режимах. Можно загрузить файл вручную в формате mp3, либо считать аудиозапись с микрофона в реальном времени.

Диаграмма использования представлена на рисунке 2.


Рис. 2 Диаграмма использования программы.

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


Список литературы

  1. Базовые эмоции [Электронный ресурс]. — Режим доступа: https://www.b17.ru/article/303159/ (дата обращения: 19.06.2023).
  2. MFCC implementation and tutorial [Электронный ресурс]. — Режим доступа: https://www.kaggle.com/code/ilyamich/mfcc-implementation-and-tutorial (дата обращения: 11.06.2023).
  3. Librosa documentation [Электронный ресурс]. — Режим доступа: https://librosa.org/doc/latest/index.html (дата обращения: 01.04.2023).
  4. ИСКУССТВЕННЫЕ НЕЙРОННЫЕ СЕТИ И ИХ ПРИЛОЖЕНИЯ [Электронный ресурс]. — Режим доступа: https://kpfu.ru/staff_files/F1493580427/NejronGafGal.pdf (дата обращения: 01.04.2023).