Распознавание эмоций по голосу python

Распознавание эмоций в записях телефонных разговоров

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

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

В 2017 году был основан японский стартап Empath. Он создал платформу Web Empath, основанную на алгоритмах, обученных на десятках тысяч голосовых образцов японской медицинской технологической компании Smartmedical. Недостатком платформы является то, что она анализирует только голос и не пытается распознать речь.

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

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

В составе программного продукта Smart Logger II компании ЦРТ есть модуль речевой аналитики QM Analyzer, позволяющий в автоматическом режиме отслеживать события на телефонной линии, речевую активность дикторов, распознавать речь и анализировать эмоции. Для анализа эмоционального состояния QM Analyzer измеряет физические характеристики речевого сигнала: амплитуда, частотные и временные параметры, ищет ключевые слова и выражения, характеризующие отношение говорящего к теме [2]. При анализе голоса первые несколько секунд система накапливает данные и оценивает, какой тон разговора был нормальным, и далее, отталкиваясь от него, фиксирует изменения тона в положительную или отрицательную сторону [3].

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

Компания Neurodata Lab разрабатывает решения, которые охватывают широкий спектр направлений в области исследований эмоций и их распознавания по аудио и видео, в том числе технологии по разделению голосов, послойного анализа и идентификации голоса в аудиопотоке, комплексного трекинга движений тела и рук, а также детекции и распознавания ключевых точек и движений мышц лица в видеопотоке в режиме реального времени. В качестве одного из своих первых проектов команда Neurodata Lab собрала русскоязычную мультимодальную базу данных RAMAS — комплексный набор данных об испытываемых эмоциях, включающий параллельную запись 12 каналов: аудио, видео, окулографию, носимые датчики движения и другие — о каждой из ситуаций межличностного взаимодействия. В создании базы данных приняли участие актеры, воссоздающие различные ситуации повседневного общения [4].

На основе RAMAS с помощью нейросетевой технологии компания Neurodata Lab создала решение для контакт-центров, позволяющее распознавать эмоции в голосе клиентов и рассчитывать индекс удовлетворенности обслуживанием непосредственно во время разговора с оператором. При этом анализ осуществляется как на голосовом уровне, так и на семантическом, при переводе речи в текст. Система также учитывает дополнительные параметры: количество пауз в речи оператора, изменение громкости голоса и общее время разговора.

Читайте также:  Девушка слезы радости мем

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

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

Источник

Распознавание эмоций по голосу python

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

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

Проект состоит из двух частей:

  1. Первая часть содержит в код подготовки данных и обучения сети, а так же код распознавания эмоций по изозображению с вебкамеры в режиме реального времени (этот репозиторий)
  2. Вторая часть — веб приложение, которое предоставяет возможность определения лиц и эмоций на загруженном изображении. (https://github.com/FiseD/web_emotion_recognition)

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

В моем проекте используется датасет FER-2013 и несколько других значительно меньших по размеру датасетов. FER-2013 содержит в себе

36к картинок размером 48х48 в градация серого, которые содержат одну из 7 эмоций описаных мной в части About Project. Но много изображений содержат лицо повернутое боком, закрытое руками и тд. На мой взгляд данные на которые обучается сеть должны быть как можно более чистыми, поэтому на этапе обработки данных перед тренировкой сети я отчищаю датасет от изображений на которых не может быть найдено лицо. В результат данной операции остается

11k изображений. Есть возможность добавления дополнительных изображений в тренировочкую и проверочную выборки, куда я добавил данные из датасетов CK+, Jaffe, . что в итоге дало мне датасет размером 15к.

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

Структура моей сети и всех ее гиперпараметров была подобрана в результате большого кол-ва экспериментов. Начальный вид моей сети и ее результаты:

Конечный вид и ее результаты:

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

Чаще всего если эмоций определена не правильно, но правильный вариант стоит на втором месте по вероятности

Точкой входа в приложение является файл app.py python app.py train — тренировка сети python app train —extra — тренировка сети с ипользованием дополнительных данных(убедитесь что создана категория extra-images) python app start (device — номер вашего устройства вебкамеры в системе)

Читайте также:  Что сильнее эмоции или разум

Для остановки приложения нажмити комбинацию CTRL + C. После этого запуститься Dash приложение с визуализацией полученных данных за весь период использования.

Источник

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

Дата публикации Jun 1, 2019

Распознавание человеческих эмоций всегда было увлекательной задачей для исследователей данных. В последнее время я работаю над экспериментальным проектом распознавания речи (SER), чтобы изучить его потенциал. Я выбрал самый отмеченный репозиторий SER изGitHubбыть основой моего проекта.

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

Основные препятствия:

  • Эмоции субъективны, люди будут интерпретировать это по-разному. Трудно определить понятие эмоций.
  • Аннотирование аудио записи является сложной задачей. Должны ли мы обозначить одно слово, предложение или целый разговор? Сколько эмоций мы должны определить, чтобы распознать?
  • Сбор данных является сложным. Есть много аудиоданных, которые можно получить из фильмов или новостей. Тем не менее, они оба предвзяты, поскольку новостные репортажи должны быть нейтральными, а эмоции актеров подражать Трудно найти нейтральную аудиозапись без предвзятости.
  • Маркировка данных требует больших человеческих и временных затрат. В отличие от рисования ограничительной рамки на изображении, он требует, чтобы обученный персонал прослушал всю аудиозапись, проанализировал ее и дал аннотацию. Результат аннотации должен оцениваться несколькими лицами из-за его субъективности.

Описание Проекта:

Использование Convolutional Neural Network для распознавания эмоций при записи звука. И владелец хранилища не предоставляет никаких бумажных ссылок.

Описание данных:

Это два набора данных, которые изначально использовались в репозитории RAVDESS и SAVEE, и я использовал RAVDESS только в моей модели. В RAVDESS есть два типа данных: речь и песня.

  • 12 актеров и 12 актрис записали речь и версию песни соответственно.
  • Актер № 18 не имеет данных о версии песни.
  • эмоция Disgust , Neutral а также Surprised не включены в данные о версии песни.

Общий класс:

Вот диаграмма распределения классов эмоций.

Функция извлечения:

Когда мы выполняем задачи распознавания речи, MFCC — это самая современная функция, так как она была изобретена в 1980-х годах.

Эта форма определяет, какой звук выходит. Если мы можем точно определить форму, это должно дать нам точное представление офонемапроизводятся. Форма голосового тракта проявляется в огибающей кратковременного спектра мощности, и задача MFCC состоит в том, чтобы точно представить эту огибающую. — Отмечено от:Учебник MFCC

Мы будем использовать MFCC, чтобы быть нашей функцией ввода. Если вы хотите глубокое пониманиекоэффициенты MFCCвот отличныйруководстводля тебя.Загрузка аудиоданных и преобразование их в формат MFCC может быть легко сделано с помощью пакета Python librosa ,

Архитектура модели по умолчанию:

Автор разработал модель CNN с Keras и построил из 7 слоев — 6 слоев Conv1D, за которыми следует плотный слой.

Автор прокомментировал слой № 4 и № 5 в последней записной книжке (обновление от 18 сентября 2018 г.), и файл весов модели не соответствует предоставленной сети, поэтому я не могу загрузить предоставленный вес и воспроизвести его результатТочность тестирования 72%.

Модель только обучалась с batch_size=16 700 эпох без расписания обучения и т. д.

Его функция потери categorical_crossentropy и метрика оценки — точность.

Мой эксперимент

Исследовательский анализ данных:

В наборе данных RADVESS каждый актер должен выполнить 8 эмоций, произнося и напевая два предложения и два раза для каждого. В результате каждый актер будет вызывать 4 образца для каждой эмоции, кроме нейтральной, отвращения и удивления, поскольку для этих эмоций нет данных о пении. Каждая звуковая волна длится около 4 секунд, первая и последняя секунды, скорее всего, отключены.

Стандартные предложения:

1. Дети разговаривают у двери.
2. Собаки сидят у двери.

Наблюдение:

Читайте также:  Обида гнев чувств вины все это

После того, как я выбрал 1 актера и 1 набор данных актрисы и выслушал их все. Я обнаружил, что мужчины и женщины выражают свои эмоции по-разному. Вот некоторые выводы:

  • МалеСердитыйпросто увеличивается в объеме.
  • МалеСчастливыйа такжеПечальныйЗначительными чертами были смех и плач в тишине периода в аудио.
  • самкиСчастливый,Сердитыйа такжеПечальныйувеличены в объеме.
  • самкиОтвращениедобавил бы рвотный звук внутри.

Репликация результата:

Автор исключил класс neutral , disgust а также surprised сделать распознавание 10 классов для набора данных RAVDESS.

Я пытался повторить его результат с помощью предоставленной модели, я могу добиться результата

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

  • Актер № 1–20 используются для Train / Valid устанавливается с коэффициентом разделения 8: 2.
  • Актер № 21–24 изолированы для тестирования использования.
  • Форма набора поезда: (1248, 216, 1)
  • Допустимая форма набора: (312, 216, 1)
  • Форма тестового набора: (320, 216, 1) — (изолированный)

Я заново обучил модель новым настройкам разделения данных, и вот результат:

Ориентир:

Из графика достоверных потерь поезда мы видим, что модель не может даже хорошо сходиться с 10 целевыми классами. Таким образом, я решил уменьшить сложность моей модели, распознавая только мужские эмоции. Я изолировал двух актеров, чтобы быть test set , а остальное будет train/valid set с 8: 2Многослойное разделение в случайном порядкечто гарантирует отсутствие дисбаланса классов в наборе данных. После этого я изучил данные как для мужчин, так и для женщин отдельно, чтобы изучить эталон.

Мужской набор данных

  • Поезд Set = 640 образцов от актера 1-10.
  • Действительный набор = 160 образцов от актера 1-10.
  • Тестовый набор = 160 образцов от актера 11-12.

Мужской базовый уровень

Женский набор данных

  • Поезд Set = 608 образцов от актрисы 1-10.
  • Действительный набор = 152 образца от актрисы 1-10.
  • Тестовый набор = 160 образцов от актрисы 11-12.

Женский базовый уровень

Как видите, матрица смешения мужской и женской моделей различна.

мужчина: Angry а также Happy являются доминирующими предсказанными классами в мужской модели, но они вряд ли перепутать.

женский: Sad а также Happy являются доминирующими предсказанными классами в женской модели и Angry а также Happy очень вероятно, чтобы перепутать.

Ссылаясь на форму наблюденияEDAраздел, я подозреваю причину женского пола Angry а также Happy очень вероятно, что перепутать, потому что их метод выражения просто увеличивает громкость речи.

Кроме того, мне интересно, что если я еще больше упросту модель, уменьшив целевой класс до Positive , Neutral а также Negative или даже Positive а также Negative только. Итак, я сгруппировал эмоции в 2 класса и 3 класса.

2 класс:

  • Положительный: happy , calm ,
  • Отрицательный: angry , fearful , sad ,

3 класс:

  • Положительный: happy ,
  • Нейтральные: calm , neutral ,
  • Отрицательный: angry , fearful , sad ,

(Добавлен нейтральный для 3 класса, чтобы изучить результат.)

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

Я добавил 2 слоя Conv1D, 1 слой MaxPooling1D и 2 слоя BarchNormalization, более того, я изменил значение выпадения до 0,25. Наконец, я изменил оптимизатор на SGD со скоростью обучения 0,0001.

Для модельного обучения я принял Reduce Learning On Plateau и сохранить лучшую модель с мин val_loss только. А вот модель производительности различных установок целевого класса.

Источник

Оцените статью