Este é um projeto de classificação de emoções em áudio, onde é utilizado o dataset RAVDESS para treinar um modelo capaz de identificar a emoção presente em arquivos de áudio enviados pelos usuários. A aplicação conta com uma interface interativa desenvolvida em Streamlit, permitindo que os usuários enviem áudios para análise.
🎥 Vídeo Explicativo: Mini Projeto 2 - Trilha
-
Dataset Utilizado: RAVDESS (Ryerson Audio-Visual Database of Emotional Speech and Song)
- O dataset contém gravações de áudios com diferentes emoções atuadas, como: alegria, tristeza, raiva, calma, medo, nojo, surpresa e neutro.
- As emoções são representadas por números nos nomes dos arquivos.
-
Organização:
- Modality (01 = full-AV, 02 = video-only, 03 = audio-only).
- Vocal channel (01 = speech, 02 = song).
- Emotion (01 = neutral, 02 = calm, 03 = happy, 04 = sad, 05 = angry, 06 = fearful, 07 = disgust, 08 = surprised).
- Emotional intensity (01 = normal, 02 = strong). NOTE: There is no strong intensity for the 'neutral' emotion.
- Statement (01 = "Kids are talking by the door", 02 = "Dogs are sitting by the door").
- Repetition (01 = 1st repetition, 02 = 2nd repetition).
- Actor (01 to 24. Odd numbered actors are male, even numbered actors are female).
A extração de features é uma etapa fundamental para converter os arquivos de áudio em representações numéricas compreensíveis pelo modelo de machine learning. Foram utilizadas as seguintes técnicas:
- MFCCs (Mel-Frequency Cepstral Coefficients): Capturam as características espectrais do áudio.
- Chroma Features: Representam as energias das notas musicais.
- Spectral Contrast: Diferença entre os picos e vales no espectro de frequências.
- Zero-Crossing Rate: Taxa de mudança de sinal no áudio.
As features foram extraídas usando a biblioteca librosa e normalizadas para melhor desempenho do modelo.
-
Modelo Utilizado:
- Um modelo de aprendizado de máquina foi treinado para classificar as emoções com base nas features extraídas.
- Frameworks como TensorFlow/Keras foram utilizados.
-
Divisão dos Dados:
- O dataset foi dividido em conjuntos de treinamento, validação e teste.
- Foi utilizada validação cruzada para evitar overfitting e avaliar a performance do modelo.
- Funcionalidades:
- Upload de arquivos de áudio pelo usuário.
- Predição da emoção baseada no modelo treinado.
- Exibição de resultados com a probabilidade de cada emoção.
-
Métricas de Avaliação:
- Acurácia
- Matriz de confusão
- F1-score, precisão e recall
-
Resultados:
- O desempenho do modelo foi avaliado nos dados de teste, e os resultados foram apresentados em forma de relatórios e gráficos no Streamlit.
-
Faça um fork desse repositório para o seu perfil do GitHub
-
Clone este repositório:
git clone https://github.com/seu-usuario/audio-emotion-classification.git
-
Instale as dependências:
pip install -r requirements.txt
-
Baixe o dataset RAVDESS e organize os arquivos conforme descrito no código.
-
Execute o aplicativo Streamlit:
streamlit run app.py
-
Envie um arquivo de áudio no aplicativo e veja o modelo predizer a emoção presente.
- Python
- Streamlit
- Librosa
- TensorFlow/Keras
- Matplotlib/Seaborn (para visualizações)
- Adicionar suporte para outros datasets e emoções.
- Melhorar a interface do Streamlit com gráficos interativos.
- Implementar detecção em tempo real para gravações ao vivo.
Podemos ver que nosso modelo é mais preciso na predição das emoções surpresa e raiva, o que faz sentido, pois os arquivos de áudio dessas emoções diferem bastante dos outros em aspectos como tom, velocidade, etc. Caso você queira contribuir sinta-se a vontade e me contate em: schmittluigi@gmail.com ou se você me conhece fale comigo :)