Распознавание эмоций речи

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

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

Итак, в основном мы собираемся сделать следующее:

Предварительные условия

  • Должен быть установлен Python 3.5
  • На протяжении всей статьи мы будем использовать librosa, keras, tensorflow, scikit-learn, numpy, seaborn, matplotlib, pandas. Итак, убедитесь, что вы установили все эти зависимости.

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

Давайте познакомимся с нашим набором данных.

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

Здесь вы найдете 24 актера, произносящих предложения в 8 различных эмоциях (нейтральный, спокойный, счастливый, грустный, сердитый, напуганный, отвращение, удивление). Мы попытаемся классифицировать все различные эмоции, доступные в наборе данных.

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

Чтобы процесс проходил гладко, импортируйте следующие модули:

Извлечение функций

Мы собираемся собрать пять различных функций из каждого аудио и объединить их в вектор. Эти-

  • melspectrogram: вычисление спектрограммы мощности в шкале Mel.
  • mfcc: Кепстральные коэффициенты Mel-частоты
  • chorma-stft: вычисление хроматограммы на основе формы волны или спектрограммы мощности.
  • Spectral_contrast: вычислить спектральный контраст, используя метод, определенный в [1]
  • tonnetz: вычисляет тональные центроиды (tonnetz) по методу [2].

Если вы не знаете обо всем этом, не о чем беспокоиться. Python packagelibrosa сделает за нас всю работу.

Таким образом, каждый аудиофайл будет иметь фиксированный векторный размер 193. Используемые для этого функции взяты из Aaqib Saeed.

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

Следующим шагом будет вызов функций с соответствующими каталогами. Мы собираемся сохранить все наши звуковые функции в переменную «X», а все метки - в переменную «y».

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

Удачной готовки !!!