Hearing and Seeing Emotion

Hearing and Seeing Emotion

Multimodal speech emotion recognition with late fusion of self-supervised audio models and facial blendshapes on RAVDESS

Tharen Candi

University of Padova · Speech Processing course project, 2026

Report PDF Notebook Code
86.7%best fused accuracy
+10.8–17.5accuracy points from fusion
7emotions
4unseen test actors

Abstract

Self-supervised speech models are a strong baseline for speech emotion recognition, but they still confuse emotions whose prosody is similar, such as happy and sad. We combine three speech models (wav2vec 2.0 frozen, wav2vec 2.0 with LoRA, and emotion2vec) with a facial-expression model built on MediaPipe blendshapes, using temperature-calibrated late fusion. On RAVDESS, with test actors unseen in training, fusion improves every speech model by 10.8 to 17.5 accuracy points. The best system, LoRA-adapted wav2vec 2.0 with the face model, reaches 86.7% on seven emotions, against 72.5% for speech and 65.0% for the face alone. The two modalities fail on different emotions, so each corrects the other.

Audio examples

Every RAVDESS actor reads the same two sentences in each emotion, so the words carry no information: the emotion has to be heard in the voice. These clips are two actors saying “Kids are talking by the door.”

EmotionActor 01Actor 02
Angry
Disgust
Fearful
Happy
Neutral
Sad
Surprised

Clips from RAVDESS (Livingstone & Russo, 2018), CC BY-NC-SA 4.0. Strong intensity, except neutral, which RAVDESS records at normal intensity only.

Method

Two independent models, one per modality, each produce a score (logit) for every emotion. The speech branch is a self-supervised encoder with a small classifier head; the face branch summarises the facial blendshapes from MediaPipe Face Landmarker over the clip and classifies them with an XGBoost random forest. Each branch’s logits are divided by a temperature fitted on the validation actors and turned into probabilities, so neither branch dominates by scale alone, and the two sets of probabilities are summed:

y^= arg⁡maxc [ softmax(z(a)Ta)c + softmax(z(v)Tv)c ]
Figure 1. Late fusion. Each speech model below is fused with the same face model; the temperatures are fitted by minimising cross-entropy on the validation actors.

Speech models

The wav2vec 2.0 models use mild SpecAugment-style masking (about 5% of time steps and feature channels) so that short prosodic cues survive. All three are trained with class-weighted cross-entropy, AdamW with a cosine schedule, and early stopping on validation loss.

Data and face features

A face photo, and the same face with MediaPipe's fitted face mesh drawn over it
Figure 2. MediaPipe Face Landmarker fits a mesh of 478 3D landmarks to each video frame (right), and a second model turns it into blendshape scores, coefficients for expressions such as jawOpen or mouthSmileLeft. The face branch uses only these scores. Image: Google, MediaPipe documentation, CC BY 4.0.

Results

Table 1. Test results on 240 clips from 4 unseen actors.
ModelAccuracyMacro‑F1
Speech only
wav2vec 2.0, frozen71.3%0.696
wav2vec 2.0, LoRA72.5%0.702
emotion2vec, frozen68.3%0.668
Face only
Blendshapes + XGBoost RF65.0%0.650
Speech + face
wav2vec 2.0, frozen + face82.1%0.813
wav2vec 2.0, LoRA + face86.7%0.860
emotion2vec, frozen + face85.8%0.854
Speech only Speech + face Face only
Figure 3. Accuracy of each speech model alone and fused with the face model. The face model alone scores below every speech model, yet every fused system beats both of its parts.

Where the face model helps

Choose a speech model to compare it, emotion by emotion, with the face model and with the two fused.

Speech only Face only Speech + face
Figure 4. Recall by emotion: the share of each emotion’s test clips labelled correctly.
Figure 5. Confusion matrices before and after fusion (rows: actual emotion, columns: predicted). Shading is the share of each actual emotion’s clips.
Per-class precision, recall and F1 for this model
Table 2. Accuracy by emotional intensity. Subtle, normal-intensity clips are harder for every model.
ModelNormalStrong
wav2vec 2.0, frozen64.1%79.5%
wav2vec 2.0, frozen + face74.2%91.1%
wav2vec 2.0, LoRA64.1%82.1%
wav2vec 2.0, LoRA + face83.6%90.2%
emotion2vec, frozen57.8%80.4%
emotion2vec, frozen + face82.0%90.2%
Face only64.1%66.1%

Findings

  1. Frozen or LoRA wav2vec 2.0? LoRA, and the gap grows with fusion: 72.5% vs 71.3% alone, 86.7% vs 82.1% fused.
  2. Does emotion-specific pretraining win? No. emotion2vec, pretrained on emotional speech, scored 68.3% alone, below both wav2vec 2.0 pipelines.
  3. Does adding the face help? Yes, for every speech model (+10.8, +14.2 and +17.5 points). The face model is strong where speech is weak (happy, sad) and weak where speech is strong (neutral, surprised).

Limitations. Results come from one random seed and one actor split, without confidence intervals, so small gaps such as frozen vs LoRA alone may not hold up; repeated seeds and actor-wise cross-validation are the next step. RAVDESS emotions are acted by professionals and are clearer than everyday conversation.

References

  1. A. Baevski, H. Zhou, A. Mohamed and M. Auli (2020). wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations. NeurIPS.
  2. Z. Ma, Z. Zheng, J. Ye, J. Li, Z. Gao, S. Zhang and X. Chen (2024). emotion2vec: Self-Supervised Pre-Training for Speech Emotion Representation. Findings of ACL. Code.
  3. L. Pepino, P. Riera and L. Ferrer (2021). Emotion Recognition from Speech Using wav2vec 2.0 Embeddings. Interspeech.
  4. N. Lashkarashvili, W. Wu, G. Sun and P. C. Woodland (2024). Parameter Efficient Finetuning for Speech Emotion Recognition and Domain Adaptation. ICASSP.
  5. S. R. Livingstone and F. A. Russo (2018). The Ryerson Audio-Visual Database of Emotional Speech and Song (RAVDESS). PLOS ONE 13(5): e0196391.
  6. Google. MediaPipe Face Landmarker and the Blendshape V2 model card.

Citation

@misc{candi2026hearing,
  title  = {Multimodal Speech Emotion Recognition with Late Fusion of
            Self-Supervised Audio Models and Visual Blendshape Features on RAVDESS},
  author = {Candi, Tharen Emmanuel},
  year   = {2026},
  note   = {Course project, University of Padova},
  url    = {https://tharencandi.net/fer-ser-fusion/}
}