OlhaHavryliuk/UA-SER
UA-SER: Ukrainian Speech Emotion Recognition Corpus A labelled Ukrainian emotional speech corpus of 952 clips across four emotion classes, collected and annotated for the purpose of training and evaluating Speech Emotion Recognition (SER) models on Ukrainian. Dataset Summary Ukrainian is a low-resource language with no publicly available emotional speech dataset. UA-SER fills this gap by providing short naturalistic utterances labelled by three native Ukrainian… See the full description on the dataset page: https://huggingface.co/datasets/OlhaHavryliuk/UA-SER.
UA-SER: Ukrainian Speech Emotion Recognition Corpus
A labelled Ukrainian emotional speech corpus of 952 clips across four emotion classes, collected and annotated for the purpose of training and evaluating Speech Emotion Recognition (SER) models on Ukrainian.
Dataset Summary
Ukrainian is a low-resource language with no publicly available emotional speech dataset. UA-SER fills this gap by providing short naturalistic utterances labelled by three native Ukrainian annotators via majority vote.
Emotion Distribution
Gender Distribution
Gender is encoded in the filename suffix: _0.wav = male, _1.wav = female.
Dataset Structure
clips/ # 952 WAV files, 16 kHz mono
dataset.csv # metadata (see below)dataset.csv columns
Filename convention
{source_prefix}_{clip_id}_{gender}.wav
source_prefix— corpus source identifierclip_id— zero-padded sequential indexgender—0(male) or1(female)
Train / Test Split
The split is speaker-disjoint: no speaker appears in both train and test. Speakers were assigned greedily to maximise balance of emotion and gender distributions between the two sets (target 80/20 ratio).
Annotation
Each clip was independently labelled by three native Ukrainian speakers. The final label is the majority vote (at least 2 of 3 agree). Clips where no majority was reached were excluded.
Inter-annotator agreement: Fleiss κ = 0.46 (moderate agreement), consistent with other naturalistic emotion corpora.
Audio Format
- Format: WAV, 16-bit PCM
- Sample rate: 16 000 Hz
- Channels: mono
- Duration range: 0.52 – 5.50 s
Usage
import pandas as pd
import librosa
df = pd.read_csv("dataset.csv")
test = df[df["split"] == "test"]
y, sr = librosa.load(f"clips/{test.iloc[0]['filename']}", sr=16000)