/Audio-Sentiment-Analysis

This repository consists of work done to analyse sentiment of a customer in a conversation with a call center agent using various machine learning algorithms and audio features.

Primary LanguagePython

Audio Sentiment Analysis after a single-channel Multiple Source Separation

The aim of this project is to evaluate the sentiment of a customer throughout a conversation with a call centre agent. Analyzing sentiment of the customer over various parts of the call can help in understanding the transition of customer's emotion.

Team Members

Arpit Shah, Shivani Firodiya

Motivation

Call Centers or Support Centers in different companies aggregate huge amount of data everyday. From all the conversations, few conversations are not customer satisfactory. Finding the sentiment of the customer helps in determining whether the customer was satisfied with the service or not.

Dataset

  • Data for source separation was taken from EXOTEL which consists of 300 audio files. Each of these files contains conversation between the customer and agent on various topics.

  • RAVDESS dataset was used for classification purpose, it consists of 24 professional actors (12 female, 12 male), vocalizing two lexically-matched statements in a neutral North American accent. It can be found here or here. Dataset consists of different emotions like - neutral, calm, happy, sad, angry, fearful, disgust, surprised.

Process

We approach this problem in three stages:

Stage 1 - We perform source separation on the audio conversation, by performing VAD detection on the conversation and dividing the audio conversation into different chunks, on each chunk we apply GMM and a global GMM (UBM) on the whole conversation, using BIC and through spectral clustering we cluster every chunk into different speakers.

Stage 2 – We then apply sentiment analysis on supervised speech emotion dataset (RAVDESS) using Deep Neural Networks.

Stage 3 - We used the trained model from Stage 2 to classify the sentiment of the speaker chunks.

File description

convert.py helps convert .mp3 audio files into .wav

extract.py is used to extract files from the RAVDESS dataset and store it together on the basis of emotions

speaker_diarization.py is used to separate audio chunks of customer and call centre agent. Once the chunks are separated, only chunks containing customer's voice are considered for sentiment analysis.

sentiment_classification.py contains complete code on how various audio features that are extracted to train and test the model along with different architectures created to carry out the experiments.

Miscellaneous Information

Please go through the poster to get an overview of our project and also the different models we used and also the report to learn more about the various papers we referred and the architecture specifications.