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

Одна из наиболее важных областей исследований в настоящее время связана с прогнозированием, анализом и оценкой человеческих эмоций. Люди передают широкий спектр эмоций, которые можно проанализировать, чтобы лучше понять своих клиентов, общаясь с ними во многих отраслях. Целью этого проекта Speech Emotion Recognition является определение эмоциональных компонентов речи из аудиовхода.

Некоторые из препятствий, возникающих на протяжении всего проекта,

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

Рабочий процесс проекта

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

Описание набора данных

Набор данных, защищенный для этого проекта, состоит из комбинации четырех наборов аудиоданных, таких как CREMA, RAVDESS, SAVEE и TESS, на английском языке. Размер набора данных составляет 1,6 гигабайта и состоит из различных эмоций, таких как страх, гнев, нейтральность, отвращение, печаль, счастье и удивление.

Описание аудиофайла

Каждый аудиофайл имеет формат .wav, и каждый звук длится в среднем 2–3 секунды. Эмоция аудиофайла указана в имени файла с индикатором для каждой эмоции следующим образом:

Crema:
SAD — грусть; АНГ — сердитый; ДИС — отвращение; ФЭА — страх; СЧА — счастливый; NEU — нейтральный.
Равдесс:
01 = нейтральный, 02 = спокойный, 03 = счастливый, 04 = грустный, 05 = сердитый, 06 = напуганный, 07 = отвращение, 08 = удивленный
Сохранение:
'a'='гнев'',''d'= отвращение'' , ''f'='страх'', ''h'='счастье'', ''n' = 'нейтральный'', ''sa' = 'печаль'', ''su' = 'удивление'' .
Тесс:
SAD — грусть; АНГ — сердитый; ДИС — отвращение; ФЭА — страх; СЧА — счастливый; НЭУ — нейтральный.

Ниже показано распределение эмоций в каждом наборе данных и в общем комбинированном наборе данных.

Предварительная обработка данных

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

Извлечение признаков

Звуковые функции, такие как MFCC, RMS, ZCR и Tonnetz, используются в этом проекте в качестве основных функций для дальнейшего анализа и прогнозирования эмоций по звуку.

Кепстральные коэффициенты Mel-Frequency (MFCC)
Кепстральные коэффициенты Mel-Frequency представляют собой краткосрочный спектр мощности звука, тонального пространства. Различные визуальные представления Тоннетца могут использоваться для демонстрации традиционных гармонических отношений.
на основе некоторого преобразования в шкале Мел. Он обычно используется при распознавании речи, поскольку голоса людей обычно находятся в определенном диапазоне частот и отличаются друг от друга. (Источник: Википедия, Либроса)

Среднеквадратичное значение (RMS)
Среднеквадратичное значение здесь относится к общей величине сигнала, которую с точки зрения непрофессионала можно интерпретировать как параметр громкости или энергии аудиофайла. (Источник: Википедия, Либроса)

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

Tonnetz
Tonnetz (по-немецки сеть тонов) — это концептуальная решетчатая диаграмма, представляющая тональное пространство, впервые описанная Леонардом Эйлером в 1739 году. (Источник: Википедия , Либроса)

Поскольку проект написан на Python, пакет Librosa помогает извлечь эти функции из аудиоданных.

Модели классификации

Поскольку данные функций и эмоции каждого аудиофайла теперь готовы, модели машинного обучения можно моделировать, обучать и проверять, выбирая соответствующие модели, обучая 70% данных, а остальные 30% — для тестирования или проверки. Ниже приведены несколько моделей, выбранных для классификации аудиофайлов по соответствующим категориям эмоций. Модели машинного обучения используются в базовых и настроенных условиях для обучения и прогнозирования.

Машина опорных векторов

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

from sklearn.svm import SVC

SVC()

SVC(kernel= 'poly', random_state=1, C=0.025, gamma='auto')

Многоуровневый классификатор персептрона

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

from sklearn.neural_network import MLPClassifier

MLPClassifier()

MLPClassifier(alpha=0.001, batch_size=256, hidden_layer_sizes=(512,), learning_rate='adaptive', 
                         
                         max_iter=500, solver = 'lbfgs', activation='logistic')

Классификатор K-соседей

Алгоритм k-ближайшего соседа, также известный как KNN или k-NN, представляет собой непараметрический классификатор с контролируемым обучением, который использует близость для классификации или прогнозирования группировки отдельных точек данных. Хотя его можно использовать как для задач регрессии, так и для задач классификации, обычно он используется в качестве алгоритма классификации, основанного на предположении, что похожие точки могут быть найдены рядом друг с другом.

from sklearn.neighbors import KNeighborsClassifier

KNeighborsClassifier()

KNeighborsClassifier(n_neighbors=6, weights = 'distance', algorithm='ball_tree', leaf_size=50, n_jobs=2)

Классификатор дерева решений

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

Обучение дереву решений использует стратегию «разделяй и властвуй», проводя жадный поиск для определения оптимальных точек разделения в дереве. Затем этот процесс разделения повторяется рекурсивно сверху вниз до тех пор, пока все или большинство записей не будут отнесены к определенным меткам классов. Классифицируются ли все точки данных как однородные наборы, во многом зависит от сложности дерева решений. Меньшие деревья легче достигают чистых листовых узлов.

from sklearn.tree import DecisionTreeClassifier

DecisionTreeClassifier()

DecisionTreeClassifier(criterion='log_loss', splitter='random', class_weight='balanced')

Логистическая регрессия

Логистическая регрессия — это популярный алгоритм, используемый для решения задач классификации. Алгоритм называется «Логистическая регрессия», потому что его базовая технология очень похожа на линейную регрессию. Термин «логистика» взят из логит-функции, которая используется в этом процессе классификации.

from sklearn.linear_model import LogisticRegression

LogisticRegression()

LogisticRegression(penalty='elasticnet', C=0.05, class_weight='balanced', solver='saga', max_iter=500, l1_ratio=0.1)

Свернутая модель нейронной сети

Сверточная нейронная сеть (CNN) — это класс искусственных нейронных сетей, которые стали доминирующими в различных задачах компьютерного зрения и вызывают интерес в самых разных областях. CNN предназначена для автоматического и адаптивного изучения пространственных иерархий объектов посредством обратного распространения с использованием нескольких строительных блоков, таких как сверточные слои, объединяющие слои и полностью связанные слои.

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

Архитектура базовой модели CNN состоит из 512 нейронов во входном слое, двух промежуточных полносвязных слоев по 256 нейронов в каждом и выходного слоя с 512 нейронами, размер ядра назначается от 5 шагов до 2, заполнение такое же, как и раньше. функция активации, а выходные данные каждого слоя нормализуются с использованием методологии пакетной нормализации.

cnn_model=tf.keras.Sequential([
    
    L.Conv1D(512,kernel_size=5, strides=1,padding='same', activation='relu',input_shape=(X_train.shape[1],1)),
    L.BatchNormalization(),
    L.MaxPool1D(pool_size=5,strides=2,padding='same'),
    
    L.Conv1D(256,kernel_size=5,strides=1,padding='same',activation='relu'),
    L.BatchNormalization(),
    L.MaxPool1D(pool_size=5,strides=2,padding='same'),
    
    L.Conv1D(256,kernel_size=3,strides=1,padding='same',activation='relu'),
    L.BatchNormalization(),
    L.MaxPool1D(pool_size=3,strides=2,padding='same'),
    
    L.Flatten(),
    L.Dense(512,activation='relu'),
    L.BatchNormalization(),
    L.Dense(7,activation='softmax')
])

Настроенная модель CNN состоит из дополнительного полносвязного промежуточного слоя с 256 нейронами с функцией активации gelu.

cnn_model_tuned=tf.keras.Sequential([
    
    L.Conv1D(512,kernel_size=5, strides=1,padding='same', activation='gelu',input_shape=(X_train.shape[1],1)),
    L.BatchNormalization(),
    L.MaxPool1D(pool_size=5,strides=2,padding='same'),
    
    L.Conv1D(256,kernel_size=5,strides=1,padding='same',activation='gelu'),
    L.BatchNormalization(),
    L.MaxPool1D(pool_size=5,strides=2,padding='same'),
    
    L.Conv1D(256,kernel_size=3,strides=1,padding='same',activation='gelu'),
    L.BatchNormalization(),
    L.MaxPool1D(pool_size=3,strides=2,padding='same'),
    
    L.Conv1D(256,kernel_size=3,strides=1,padding='same',activation='gelu'),
    L.BatchNormalization(),
    L.MaxPool1D(pool_size=3,strides=2,padding='same'),
    
    L.Flatten(),
    L.Dense(512,activation='gelu'),
    L.BatchNormalization(),
    L.Dense(7,activation='softmax')
])

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

cnn_model.compile(optimizer='adam',loss='categorical_crossentropy',metrics='accuracy')

cnn_model_tuned.compile(optimizer='adamax',loss='categorical_crossentropy',metrics='accuracy')

Эффективность и показатели

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

"Матрица путаницы показывает, как ваша модель классификации
путается, когда она делает прогнозы". (источник: MachineLearningMastery)

Таким образом, мы можем назначить строку события как «положительную», а строку без события как «отрицательную». Затем мы можем присвоить столбцу прогнозов событий значение «true», а столбцу отсутствия события — значение «false».

Это дает нам:

  • «истинно положительный» для правильно предсказанных значений событий.
  • «ложное срабатывание» для неверно предсказанных значений событий.
  • «истинно отрицательное» для правильно предсказанных значений отсутствия событий.
  • «ложноотрицательный» для неверно предсказанных значений отсутствия событий.

Из матрицы путаницы можно вывести точность, точность, отзыв, оценку F1 и т. д. и использовать их в сравнении с различными моделями для понимания их производительности.

  1. Точность (все правильно / все) = TP + TN / TP + TN + FP + FN
  2. Проигрыш (все неверно / все) = FP + FN / TP + TN + FP + FN
  3. Точность (истинные положительные результаты / прогнозируемые положительные результаты) = TP / TP + FP
  4. Чувствительность, также известная как отзыв (настоящие положительные результаты / все фактические положительные результаты) = TP / TP + FN
  5. Специфичность (настоящие отрицательные результаты / все действительные отрицательные результаты) = TN / TN + FP
  6. Оценка F1 (среднее гармоническое точности и отзыва) = 2*(отзыв * точность) / (отзыв + точность)

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

Другой важной метрикой производительности является отчет о классификации: Отчет о классификации используется для измерения качества прогнозов алгоритма классификации. Сколько предсказаний верно, а сколько ложно? В частности, истинные положительные результаты, ложные положительные результаты, истинные отрицательные результаты и ложные отрицательные результаты используются для прогнозирования показателей отчета о классификации. (Автор: Mutukrisnan, источник: Отчет о классификации)

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

Отчеты о классификации дают подробное представление о категориальных метриках, которые в дальнейшем используются для прогнозов в реальном мире. Из приведенных выше показателей мы ясно видим, что базовая модель для SVC работает лучше, чем настроенная модель, в то время как остальные настроенные модели MLP, KNN, дерево решений, логистическая регрессия и CNN превосходят базовые модели. Это связано с тем, что параметры настроенных моделей обновляются в соответствии с требованиями проекта, а также помогают нам понять, какой параметр играет важную роль в оценке производительности моделей.

Ниже приведены результаты сравнения базовой и настроенной моделей.

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

Таблица точности различных моделей выглядит следующим образом:

Аудио Увеличение

При работе с реальными данными звук может быть подвержен шуму, низкому звуку, нечеткому содержанию в звуке и т. д. Основная цель этого расширения звука — сделать системы распознавания речи более эффективными с точки зрения вычислений (Shengyun Wei et др., 2020).

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

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

Растягивание. При использовании этого метода время аудиоклипа растягивается без изменения высоты тона аудиофайла.

Питч. Метод тональности изменяет высоту звука аудиофайла без изменения темпа.

Сдвиг. Сдвиг звука смещает звук влево/вправо на случайную секунду.

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

Заключение

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

Скриншоты интерфейсной веб-страницы,

Из приведенного выше анализа мы можем сделать следующие утверждения.

  1. Обнаружение эмоций по звуку, а не по речи, критически полезно, когда один и тот же звуковой контент выражается в разных эмоциях.
  2. Характеристики звука в основном зависят от тона, ритма, высоты тона, частоты, амплитуды, скорости звука и т. д.
  3. Расширенные функции аудио, такие как MFCC, RMS, ZCR и Tonnetz, предоставляют уникальные данные об аудио и помогают моделям машинного обучения использовать преимущества аудиофайла и предсказывать эмоции.
  4. Различные методы обработки звука также могут использоваться для обучения модели, что делает звук более четким и громким, а также улучшает временные параметры, такие как смещение, растяжение и т. д.
  5. Модели машинного обучения, используемые для этого проекта, смоделированы в двух версиях: одна, базовые модели, и две, модели с настройкой параметров. Базовые модели в некоторых случаях превзошли настроенные модели, в то время как настроенные модели прочно закрепились в моделях нейронных сетей.
  6. Благодаря анализу производительности моделей для реальных сценариев в прогнозах рекомендуются показатели точности выше 80%.

Дальнейшие улучшения

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

  1. В анализе используется только аудио на английском языке.
  2. Модели используются с несколькими методами увеличения, но добавление дополнительных методов может помочь в получении точных результатов.
  3. Смешанные эмоции невозможно предсказать.
  4. Средняя длина аудиофайлов составляет 2 секунды, разная длина может изменить значения характеристик и нарушить работу моделей.
  5. В анализе используются только четыре функции из пакета Librosa, также могут быть использованы другие функции, которые могут дать уникальную картину звука, которую невозможно получить с помощью четырех функций MFCC, ZCR, RMS и Tonnetz.

Используемые языки и технологии

python, Flask, HTML5, CSS3, JavaScript

Гитхаб

https://github.com/saran987/Speech-Emotion-Recognition-with-Audio

Аудио набор данных

https://www.kaggle.com/code/lkergalipatak/speech-emotion-recognition-with-cnn/data

Научно-исследовательские работы

https://paperswithcode.com/task/speech-emotion-recognition

Рекомендации

· Shengyun Wei et al 2020 J. физ.: конф. Сер. 1453 012085DOI 10.1088/1742–6596/1453/1/012085

Материалы открытого доступа Journal of Physics: Серия конференций (iop.org)

· М. С. Ликита, С. Р. Гупта, К. Хасита и А. У. Раджу, «Распознавание человеческих эмоций на основе речи с использованием MFCC», Международная конференция по беспроводной связи, обработке сигналов и сетям (WiSPNET), 2017 г., стр. 2257–2260, doi: 10.1109/WiSPNET.2017.8300161.

· Парех, Р. (2012). Распознавание изолированных слов с использованием функций на основе LPC, MFCC, ZCR и STE с классификаторами нейронных сетей (IJMER 2012). Междунар. Журнал современных инженерных исследований (IJMER).

2012_ijmer-with-cover-page-v2.pdf (d1wqtxts1xzle7.cloudfront.net)

· МакФи Б., Раффель К., Лян Д., Эллис Д. П., Маквикар М., Баттенберг Э. и Ньето О. (2015 г., июль). librosa: анализ аудио и музыкальных сигналов в python. В Материалы 14-й научной конференции о питонах (том 8, стр. 18–25).

librosa-with-cover-page-v2.pdf (d1wqtxts1xzle7.cloudfront.net)

· Маккей, К., Фуджинага, И., и Депаль, П. (2005, сентябрь). jAudio: библиотека извлечения функций. В Материалы международной конференции по музыкальному информационному поиску (Том 11, №15, стр. 600–3).

2103-with-cover-page-v2.pdf (d1wqtxts1xzle7.cloudfront.net)

· Роулинсон Х., Сигал Н. и Фиала Дж. (2015 г., январь). Meyda: библиотека извлечения аудиофункций для веб-аудио API. В Первой веб-аудиоконференции (WAC). Париж, о..

meyda-audio-feature-libre.pdf (d1wqtxts1xzle7.cloudfront.net)

· Тирувенгатанадхан, Р. (2018). Распознавание речи с помощью SVM. International Research Journal of Engineering and Technology (IRJET), 5(9), 918–921.

IRJET-V5I9169-with-cover-page-v2.pdf (d1wqtxts1xzle7.cloudfront.net)

· Даштипур, К., Гогате, М., Адиль, А., Лариджани, Х., и Хуссейн, А. (2021). Анализ настроений персидских обзоров фильмов с использованием глубокого обучения. Энтропия, 23(5), 596.

Энтропия | Бесплатный полнотекстовый | Анализ тональности обзоров персидских фильмов с использованием глубокого обучения (mdpi.com)

· Карсолия, С. (2012). Приблизительное количество нейронов скрытого слоя в архитектуре BPNN с несколькими скрытыми слоями. International Journal of Engineering Trends and Technology, 3(6), 714–717.

Scikit-learn: Machine Learning in Python, Pedregosa et al., JMLR 12, стр. 2825–2830, 2011 г.

· Вишну, Х., Афиф, М., и Рулдевьяни, Ю. (2020). Анализ мнений об удовлетворенности клиентов цифровыми платежами в Индонезии: сравнительное исследование с использованием KNN и Naïve Bayes. В Journal of Physics: Conference Series (Том 1444, №1, стр. 012034). Публикация IOP.

Материалы открытого доступа Journal of Physics: Серия конференций (iop.org)

· Долатшах, М., Хадиан, А., и Минаи-Бидголи, Б. (2015). Ball*-tree: эффективное пространственное индексирование для ограниченного поиска ближайшего соседа в метрических пространствах. препринт arXiv arXiv:1511.00628.

[1511.00628] Ball*-tree: эффективное пространственное индексирование для ограниченного поиска ближайшего соседа в метрических пространствах (arxiv.org)

· Y. Manzali, M. Chahhou и M. El Mohajir, «Нечистые деревья решений для оптимизации потерь Auc и Log», Международная конференция по беспроводным технологиям, встроенным и интеллектуальным системам (WITS), 2017 г., стр. 1– 6, doi: 10.1109/WITS.2017.7934675.

Нечистые деревья решений для оптимизации потерь Auc и журналов | Публикация конференции IEEE | Исследование IEEE

· Прабхат А. и Хуллар В. (2017 г., январь). Классификация настроений на больших данных с использованием Наивного Байеса и логистической регрессии. В Международной конференции по компьютерным коммуникациям и информатике (ICCCI) 2017 г. (стр. 1–5). IEEE.

Классификация настроений на больших данных с использованием наивного байесовского метода и логистической регрессии | Публикация конференции IEEE | Исследование IEEE

· Вальдманн, П., Месарош, Г., Гредлер, Б., Фюрст, К., и Сёлькнер, Дж. (2013). Оценка лассо и эластичной сетки в полногеномных ассоциативных исследованиях. Границы генетики, 4, 270.

Границы | Оценка лассо и эластичной сетки в полногеномных ассоциативных исследованиях (frontiersin.org)

· Шин, Б., Ли, Т., и Чой, Дж. Д. (2016). Lexicon интегрировал модели CNN с вниманием к анализу настроений. препринт arXiv arXiv:1610.06272.

[1610.06272] Lexicon Integrated CNN Models with Attention for Sentiment Analysis (arxiv.org)

· Цзян, Т., и Ченг, Дж. (2019, август). Распознавание целей на основе CNN с функциями активации LeakyReLU и PReLU. В Международной конференции по зондированию, диагностике, прогностике и контролю (SDPC) 2019 г. (стр. 718–722). IEEE.

Распознавание целей на основе CNN с функциями активации LeakyReLU и PReLU | Публикация конференции IEEE | Исследование IEEE

· Нгуен, А., Фам, К., Нго, Д., Нго, Т., и Фам, Л. (2021, август). Анализ современных функций активации для контролируемой глубокой нейронной сети. На Международной конференции по системным наукам и инженерии (ICSSE) 2021 г. (стр. 215–220). IEEE.

Анализ современных функций активации контролируемой глубокой нейронной сети | Публикация конференции IEEE | Исследование IEEE

· Ву, П., Сунь, Дж., Чанг, X., Чжан, В., Аркуччи, Р., Го, Ю., и Пейн, К.С. (2020). Управляемая данными модель пониженного порядка с временной сверточной нейронной сетью. Компьютерные методы в прикладной механике и технике, 360, 112766.