Research case study · First author · 2025
CPU-efficient speech emotion recognition
A reproducible pipeline combining pretrained speech representations with automated hyperparameter optimisation—reaching 97% balanced class accuracy on eight CPU cores, without a GPU.
Overview
Make model selection cheaper without treating accuracy as an afterthought.
Speech emotion recognition systems can depend on costly GPU training and extensive manual tuning. This work asks whether a pretrained encoder and a deliberately small automated search can reach competitive performance on commodity CPU hardware.
My contribution
As first author, I led the engineering of the experimental workflow used to compare Gaussian-process Bayesian optimisation and tree-structured Parzen estimators, and framed the analysis around accuracy, wall-clock efficiency, and cross-corpus transfer.
Pipeline
One controlled path from audio to evidence.
Every optimiser used the same preprocessing, model, objective, search dimensions, trial budget, and random seeds. That isolates the search strategy as the main experimental variable.
Prepare speech
Resample EmoDB audio to 16 kHz, normalise length, and create a stratified 80/20 split.
Encode
Use SpeechBrain's wav2vec 2.0 encoder, pretrained for speech and previously fine-tuned on IEMOCAP.
Search
Compare GP-BO and TPE across the same four-dimensional search space and 15-trial budget.
Select
Optimise balanced class accuracy, retaining the strongest configuration from each search engine.
Stress-test
Evaluate the selected model in-domain and on CREMA-D and RAVDESS without further fine-tuning.
- Target dataset
- EmoDB · 535 utterances · 10 speakers · 7 emotions
- Model
- SpeechBrain wav2vec 2.0 encoder + linear classifier
- Search space
- Learning rate, epochs, encoder unfreeze epoch, maximum input length
- Optimisers
- Ax GP-BO · Hyperopt TPE · Optuna TPE
- Objective
- Balanced class accuracy, suitable for uneven class distributions
- Budget
- 15 trials per HPO engine under identical training code
Results
Fast convergence mattered more than brute force.
TPE through Hyperopt produced the strongest score, while GP-BO through Ax reached a high-quality region fastest and delivered the best accuracy-to-time trade-off.
| Method | Compute | Best BCA | Time to best | Context |
|---|---|---|---|---|
| TPE (Hyperopt) | 8 CPU cores | 0.97 | 15 min | Highest BCA |
| GP-BO (Ax) | 8 CPU cores | 0.96 | 11 min | Best efficiency |
| TPE (Optuna) | 8 CPU cores | 0.93 | 185 min | Within 15 trials |
| AutoSpeech 2020 | Tesla P100 GPU | 0.85 | ~30 min | Published baseline |
| Grid search | 64 CPU cores | 0.98 | 1,680 min | 143 trials |
Wall-clock comparisons are descriptive rather than a controlled hardware benchmark: grid search and the published AutoSpeech baseline used different compute environments. The controlled comparison is between Ax, Hyperopt, and Optuna on the same eight-core setup.
Generalisation
The tuned representation transferred—but the domain gap remained.
A model tuned on German EmoDB was evaluated without further training on the English CREMA-D and RAVDESS corpora. The gains are meaningful, but the lower out-of-domain scores keep the conclusion appropriately modest.
EmoDB
+0.85 BCA
CREMA-D
+0.25 BCA
RAVDESS
+0.26 BCA
Assessment
What the experiment supports—and what it does not.
Supported conclusions
- Sequential HPO found high-performing configurations in far fewer trials than grid search.
- GP-BO was the strongest choice when iteration speed mattered most.
- TPE through Hyperopt achieved the highest BCA under the shared 15-trial budget.
- HPO tuning improved transfer to both English evaluation corpora.
Limitations
- EmoDB is a small benchmark with 535 utterances from 10 speakers.
- The evaluation uses one stratified 80/20 split rather than repeated speaker-independent folds.
- Cross-corpus label mapping simplifies differences between emotion taxonomies.
- Out-of-domain BCA remains substantially below in-domain performance.
Reproducibility
The implementation is public.
The repository separates data preparation from training and HPO, records structured experiment outputs, and includes fixed seeds, logging, and checkpoints to support repeatable runs.