Model reference · open weights
MERaLiON-SER is an open-weight embedding model from MERaLiON. MERaLiON-SER-v1 (FP32) weighs 1.5 GB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the MERaLiON/MERaLiON-SER-v1 model card, 2026-10-01
What it is
| Released by | MERaLiON |
|---|---|
| Released | 2025-10-21 |
| Parameters | 770M |
| VRAM | 1.5 GB for the weights |
What it runs on
| Card | Runs | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
You can experience speech emotion recognition by selecting Gender/Speech recognition tab via our interactive Hugging Face Space:
Upload an audio clip or record your voice to visualize categorical emotions and dimensional affect trajectories in real time.
MERaLiON-SER-v1 is a multilingual speech emotion recognition (SER) model jointly predicting
The design achieves parameter-efficient adaptation for multilingual, paralinguistic affect modeling using just 309 M parameters.
Language(s): English (Global & Singapore), Chinese, Malay, Tamil, Limited support for Thai, Indonesian, and Vietnamese.
More details on model architecture, training and evaluation is available here: Technical report
| Head | Type | Output | Description |
|---|---|---|---|
| Categorical | Softmax | logits → (7) | Neutral, Happy, Sad, Angry, Surprised, Fearful, Disgusted |
| Dimensional | Sigmoid | dims → (3) | Valence [V], Arousal [A], Dominance [D] in [0, 1] |
This framework balances computational efficiency, cross-lingual transferability, and robust emotion generalization.
In speech emotion recognition (SER), class imbalance is a persistent challenge, as certain emotions such as neutral or happy typically dominate spontaneous datasets, while others like fear or disgust occur infrequently. Conventional performance metrics such as weighted accuracy or overall accuracy tend to be dominated by these majority classes, often masking a model’s poor discrimination of minority emotions. To provide a more balanced evaluation, researchers in the affective computing community commonly employ Unweighted Average Recall (UAR) also know as Balanced Accuracy as the principal metric.
UAR is defined as the mean of per-class recall values, thereby assigning equal importance to each emotional category regardless of its occurrence frequency. This ensures that improvements in recognizing underrepresented emotions contribute equally to the final score. Unlike weighted accuracy—which aggregates correct predictions proportional to class distribution—UAR offers a class-independent assessment that more accurately reflects a model’s generalization capability across diverse emotional states. Consequently, UAR has become the de facto standard for benchmarking emotion recognition systems.
We have evaluated MERaLiON-SER-v1 performance using English and Singapore languages: English (Singlish), Chinese, Malay, and Tamil. The evaluation dataset for Singapore languages containes fine-grained labels at every two seconds and merged nearby segments to create a course level segments with maximum 15 second duration.
We have also added performance of primary 4 classes in emotion literature: Neutral, Angry, Sad, and Happy.
We have also performed evaluation on selected public datasets for seven classes. It includes three English (MSP-Podcast v1.11 test1, IEMOCAP (avg of five test folds), and MELD (test split)) datasets, Chinese (M3ED test split), and Indonesian (IndoWaveSentiment, entire split) dataset. Note that MSP, IEMOCAP, and IndoWaveSentiment datasets were not included in the model training. The MERaLiON-SER model shows competitive performance for out-of-domain datasets.
from transformers import AutoProcessor, AutoModelForAudioClassification
import torch, torchaudio
repo = "MERaLiON/MERaLiON-SER-v1"
device = "cuda" if torch.cuda.is_available() else "cpu"
processor = AutoProcessor.from_pretrained(repo)
model = AutoModelForAudioClassification.from_pretrained(repo, trust_remote_code=True).to(device)
model.eval()
# ------- Single wav exmple --------------
wav, sr = torchaudio.load("sample.wav")
if wav.shape[0] > 1: wav = wav.mean(dim=0, keepdim=True)
wav = torchaudio.transforms.Resample(sr, 16000)(wav)
inputs = processor(wav.squeeze().numpy(), sampling_rate=16000, return_tensors="pt", return_attention_mask=True)
with torch.inference_mode():
out = model(**{k:v.to(device) for k,v in inputs.items() if k in ("input_features","attention_mask")})
logits, dims = out["logits"], out["dims"]
emo_idx = torch.argmax(logits, dim=1).item()
emo_map = ["Neutral","Happy","Sad","Angry","Fearful","Disgusted","Surprised"]
print("Predicted Emotion:", emo_map[emo_idx])
print("Valance/Arousal/Dominance:", dims.squeeze().tolist())
# -------- Batch inference example using above loaded wav file--------
wav = wav.squeeze().numpy() # tensor of sizQuoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.