RESD with a transcript for every clip.
RESD was recorded in a studio by 20 voice actors. There was no script: the actors were not handed lines to read. Instead each actor in a pair was privately given an emotion to play, and the dialogue was improvised from there. So the words are spontaneous while the emotion is deliberate — which is the point, and also the limit. The label describes what the actor was told to convey, not what a listener independently judged.
| Split | Rows | Hours | Mean clip |
|---|---|---|---|
train | 1116 | 1.88 | 6.1 s |
test | 280 | 0.46 | 5.9 s |
| Column | Meaning |
|---|---|
name | Clip identifier |
path | Original file path |
speech | Audio |
text | Transcript of the utterance |
emotion | Emotion label of the recording |
[!IMPORTANT] The sample rate is not uniform. In
train565 clips are 16000 Hz, 551 clips are 44100 Hz. Ask for one rate when you load, and do not tell a feature extractor the audio is 16 kHz when it is 44.1 kHz: that stretches time 2.8x and silently changes the answer instead of raising.
datasets does the resampling itself — declare the rate on the column and every clip arrives at it:
from datasets import load_dataset, Audio
ds = load_dataset("Aniemore/resd_annotated")
ds = ds.cast_column("speech", Audio(sampling_rate=16000))
wav = ds["train"][0]["speech"]["array"] # 16 kHz, float32
If you are handling files yourself instead, any of these will do the same job: librosa.load(path, sr=16000, mono=True), torchaudio.load followed by torchaudio.transforms.Resample, or torchcodec.decoders.AudioDecoder with a target rate.
from datasets import load_dataset
ds = load_dataset("Aniemore/resd_annotated")
print(ds["train"][0]["emotion"])
Acted emotion is not spontaneous emotion. The classes here are near-balanced, while unscripted Russian speech is overwhelmingly neutral, so a model that scores well on this test set can still miss most of the neutral speech it meets in production. Treat a RESD score as a comparison between models, not as a readiness signal.
@misc{Aniemore,
author = {Артем Аментес, Илья Лубенец, Никита Давидчук},
title = {Открытая библиотека искусственного интеллекта для анализа и выявления эмоциональных оттенков речи человека},
year = {2022},
publisher = {Hugging Face},
journal = {Hugging Face Hub},
howpublished = {\url{https://huggingface.com/aniemore/Aniemore}},
email = {hello@socialcode.ru}
}
MIT.
RESD with a transcript for every clip.
RESD was recorded in a studio by 20 voice actors. There was no script: the actors were not handed lines to read. Instead each actor in a pair was privately given an emotion to play, and the dialogue was improvised from there. So the words are spontaneous while the emotion is deliberate — which is the point, and also the limit. The label describes what the actor was told to convey, not what a listener independently judged.
| Split | Rows | Hours | Mean clip |
|---|---|---|---|
train | 1116 | 1.88 | 6.1 s |
test | 280 | 0.46 | 5.9 s |
| Column | Meaning |
|---|---|
name | Clip identifier |
path | Original file path |
speech | Audio |
text | Transcript of the utterance |
emotion | Emotion label of the recording |
[!IMPORTANT] The sample rate is not uniform. In
train565 clips are 16000 Hz, 551 clips are 44100 Hz. Ask for one rate when you load, and do not tell a feature extractor the audio is 16 kHz when it is 44.1 kHz: that stretches time 2.8x and silently changes the answer instead of raising.
datasets does the resampling itself — declare the rate on the column and every clip arrives at it:
from datasets import load_dataset, Audio
ds = load_dataset("Aniemore/resd_annotated")
ds = ds.cast_column("speech", Audio(sampling_rate=16000))
wav = ds["train"][0]["speech"]["array"] # 16 kHz, float32
If you are handling files yourself instead, any of these will do the same job: librosa.load(path, sr=16000, mono=True), torchaudio.load followed by torchaudio.transforms.Resample, or torchcodec.decoders.AudioDecoder with a target rate.
from datasets import load_dataset
ds = load_dataset("Aniemore/resd_annotated")
print(ds["train"][0]["emotion"])
Acted emotion is not spontaneous emotion. The classes here are near-balanced, while unscripted Russian speech is overwhelmingly neutral, so a model that scores well on this test set can still miss most of the neutral speech it meets in production. Treat a RESD score as a comparison between models, not as a readiness signal.
@misc{Aniemore,
author = {Артем Аментес, Илья Лубенец, Никита Давидчук},
title = {Открытая библиотека искусственного интеллекта для анализа и выявления эмоциональных оттенков речи человека},
year = {2022},
publisher = {Hugging Face},
journal = {Hugging Face Hub},
howpublished = {\url{https://huggingface.com/aniemore/Aniemore}},
email = {hello@socialcode.ru}
}
MIT.