Model reference · open weights

wav2vec-english-speech-emotion-recognition

Available as managed deployment Audio r-f · community Speech→text 1 variants 2k dl/mo

wav2vec-english-speech-emotion-recognition is an open-weight audio or speech model from r-f. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.

Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.

What it is

Makerr-f
TypeAudio & music
TaskSpeech→text
Runs withtransformers
Released2022-09-22
Popularity2k downloads / month
LicenceOpen weights

About

What wav2vec-english-speech-emotion-recognition is

The model is a fine-tuned version of jonatasgrosman/wav2vec2-large-xlsr-53-english for a Speech Emotion Recognition (SER) task.

Several datasets were used the fine-tune the original model:

  • Surrey Audio-Visual Expressed Emotion (SAVEE) - 480 audio files from 4 male actors
  • Ryerson Audio-Visual Database of Emotional Speech and Song (RAVDESS) - 1440 audio files from 24 professional actors (12 female, 12 male)
  • Toronto emotional speech set (TESS) - 2800 audio files from 2 female actors

7 labels/emotions were used as classification labels

emotions = ['angry' 'disgust' 'fear' 'happy' 'neutral' 'sad' 'surprise']

It achieves the following results on the evaluation set:

  • Loss: 0.104075
  • Accuracy: 0.97463

Model Usage

pip install transformers librosa torch
from transformers import *
import librosa
import torch

feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained("r-f/wav2vec-english-speech-emotion-recognition")
model = Wav2Vec2ForCTC.from_pretrained("r-f/wav2vec-english-speech-emotion-recognition")

def predict_emotion(audio_path):
    audio, rate = librosa.load(audio_path, sr=16000)
    inputs = feature_extractor(audio, sampling_rate=rate, return_tensors="pt", padding=True)

    with torch.no_grad():
        outputs = model(inputs.input_values)
        predictions = torch.nn.functional.softmax(outputs.logits.mean(dim=1), dim=-1)  # Average over sequence length
        predicted_label = torch.argmax(predictions, dim=-1)
        emotion = model.config.id2label[predicted_label.item()]
    return emotion

emotion = predict_emotion("example_audio.wav")
print(f"Predicted emotion: {emotion}")
>> Predicted emotion: angry

Training procedure

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 0.0001
  • train_batch_size: 4
  • eval_batch_size: 4
  • eval_steps: 500
  • seed: 42
  • gradient_accumulation_steps: 2
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • num_epochs: 4
  • max_steps=7500
  • save_steps: 1500

Training results

StepTraining LossValidation LossAccuracy
5001.81241.3652120.486258
10000.88720.7731450.79704
15000.70350.5749540.852008
20000.68791.2867380.775899
25000.64980.6974550.832981
30000.56960.337240.892178
35000.42180.3070720.911205
40000.30880.3744430.930233
45000.26880.2604440.936575
50000.29730.3029850.92389
55000.17650.1654390.961945
60000.14750.1701990.961945
65000.12740.155310.966173
70000.06990.1038820.976744
75000.0830.1040750.97463

From the published model card. Full card on the HuggingFace links in the sidebar.

Using it via the API

Call it like any OpenAI endpoint

Once AxForge deploys wav2vec-english-speech-emotion-recognition for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (wav2vec-english-speech-emotion-recognition below is illustrative; you get the exact model name on deployment.)

$ curl -sS https://api.axforge.ai/v1/audio/transcriptions \
  -H "Authorization: Bearer $AXFORGE_API_KEY" \
  -F model="wav2vec-english-speech-emotion-recognition" -F file=@audio.mp3

Create an account — your API key is available in the console. 5M tokens/month currently included with every new account at launch.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms