/ Модель

Характеристики

Лицензия
MIT
Базовая модель
exp_w2v2t_ru_wavlm_s363
Библиотека
transformers
Опубликована
2 мая 2023

wavlm-bert-fusion-s-emotion-russian-resd

Классификация текстаТекст → label3 профессии

Мультимодальная модель для классификации эмоций в русской речи по аудиосигналу и его расшифровке.

258скачиваний за 30 дней2лайкавеса обновлены1 авг 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Модель wavlm-bert-fusion-s-emotion-russian-resd разработана для распознавания эмоций в русской речи. Это мультимодальный классификатор, который совместно анализирует аудиосигнал и его текстовую расшифровку: аудиоветвь основана на WavLM/wav2vec2, дообученной для русского распознавания речи, а текстовая — на DeepPavlov/rubert-base-cased. Модель содержит 504 млн параметров и принимает монофоническое аудио с частотой 16 кГц и текст произнесённой реплики.

Она относит высказывание к одному из семи классов: гнев, отвращение, энтузиазм, страх, счастье, нейтральное состояние или грусть. Обучение проводилось на датасете Aniemo­re/resd. На тестовой выборке RESD модель показала macro-F1 0,794, однако результаты на подкастах и наборе CAMEO существенно ниже.

Модель подходит для анализа эмоциональной окраски русских реплик, когда доступна расшифровка речи. Главные ограничения связаны с обучением на сбалансированной постановочной речи: на спонтанной речи модель часто переоценивает эмоциональные классы. Она рассчитана только на русский язык, семь заданных классов и отдельные реплики; перед применением на собственных данных рекомендуется оценить качество и откалибровать вероятность нейтрального класса. Лицензия — MIT.

Сценарии применения

  • определение эмоций в русских голосовых сообщениях
  • анализ эмоциональной окраски реплик в колл-центре
  • разметка эмоций в расшифровках подкастов
  • классификация гнева, грусти и других эмоций в речи

Ограничения

Модель обучена на сбалансированной постановочной речи, поэтому на спонтанной русской речи качество заметно ниже и эмоциональные классы могут переоцениваться. Она поддерживает только семь классов, русский язык и отдельные реплики; для применения на новых данных требуется отдельная оценка и калибровка нейтрального класса.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

wavlm-bert-fusion-s-emotion-russian-resd

Speech emotion recognition for Russian over seven classes: anger, disgust, enthusiasm, fear, happiness, neutral, sadness.

Audio tower jonatasgrosman/exp_w2v2t_ru_wavlm_s363 (WavLM/wav2vec2 fine-tuned for Russian ASR) paired with the text encoder DeepPavlov/rubert-base-cased; the model reads the waveform and a transcript together. Trained on Aniemore/resd.

Results

Test setnUAWAmacro-F1
RESD test2800.79590.79640.7941
Dusha podcast test120790.34970.07000.0920
CAMEO test51870.22100.24100.1983
RESD test, transcript blanked2800.79590.79640.7941

The last row is the audio branch alone. Production rarely has a gold transcript, and the gap between 0.794 with one and 0.794 without is what a transcript is worth here.

Usage

import torch, librosa
from transformers import AutoConfig, AutoTokenizer, AutoModel

repo = "Aniemore/wavlm-bert-fusion-s-emotion-russian-resd"
cfg = AutoConfig.from_pretrained(repo, trust_remote_code=True)
model = AutoModel.from_pretrained(repo, trust_remote_code=True).eval()
tok = AutoTokenizer.from_pretrained(repo)

# Resample to 16 kHz. RESD ships at 44.1 kHz, and 44.1 kHz audio
# labelled as 16 kHz is stretched 2.8x in time — the model answers,
# it just answers about other audio.
wav, _ = librosa.load("clip.wav", sr=16000, mono=True)
wav = torch.tensor((wav - wav.mean()) / (wav.std() + 1e-7))[None]
t = tok("расшифровка реплики", return_tensors="pt")
with torch.no_grad():
    logits = model(input_ids=t['input_ids'], input_values=wav,
                   text_attention_mask=t['attention_mask'],
                   audio_attention_mask=torch.ones_like(wav).long()).logits

probs = logits.softmax(-1)[0]
print({model.config.id2label[i]: round(p.item(), 3) for i, p in enumerate(probs)})
# torchaudio
import torchaudio
wav, sr = torchaudio.load("clip.wav")
wav = torchaudio.functional.resample(wav, sr, 16000).mean(0).numpy()

# torchcodec, the newer decoder
from torchcodec.decoders import AudioDecoder
wav = AudioDecoder("clip.wav", sample_rate=16000).get_all_samples().data.mean(0).numpy()

# straight from the dataset — `datasets` resamples on the column, so
# the mixed 16/44.1 kHz in RESD is handled for you
from datasets import load_dataset, Audio
ds = load_dataset("Aniemore/resd", split="test")
ds = ds.cast_column("speech", Audio(sampling_rate=16000))
wav = ds[0]["speech"]["array"]

Evaluation protocol

Audio resampled to 16 kHz mono, clips capped at 12 s, normalized per utterance, padding masked. UA is macro-averaged recall, WA is accuracy, F1 is macro-averaged. All three test sets went through the same harness, so the rows are comparable to each other.

The RESD split matches fold 1 of EmoBox bit for bit. The top entry there is WavLM-large at WA 56.47 / UA 55.87 / F1 55.82. These numbers are higher, but the training protocol differs — EmoBox freezes the encoder and trains a probe, this is a full fine-tune — so read it as a different recipe on the same split, not as a like-for-like win.

Limitations

RESD is acted and class-balanced. Real speech is neither. The Dusha podcast row above is the honest signal for spontaneous audio, and it is far below the RESD row. Spontaneous Russian is roughly 93% neutral, and a model tuned on balanced acted data over-predicts the emotional classes on it. Measure on your own material, and calibrate the neutral logit if you deploy.

Seven classes only, Russian only, single-speaker clips.

Citation

@misc{aniemore,
  author = {Lubenets, Ilya and Davidchuk, Nikita and Amentes, Aleksandr},
  title  = {Aniemore: an open library for emotion recognition in Russian speech},
  url    = {https://github.com/Aniemore/Aniemore},
  year   = {2023}
}

License

MIT.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · text-classification

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Класс архитектуры
WavLMBertForSequenceClassification
Ревизия весов
987d767

0 моделей