/ Модель

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

Параметры
403 млн
Лицензия
Apache 2.0
Архитектура
wav2vec2 · dense
Опубликована
25 мая 2023

wav2vec2-xls-r-300m-emotion-ru

Классификация аудиоАудио → label3 профессии

Модель анализирует русскую речь и классифицирует аудиозаписи по эмоциональным категориям.

1 265скачиваний за 30 дней1лайквеса обновлены5 июн 2023

Бенчмарки

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

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

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

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

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

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

KELONMYOSA/wav2vec2-xls-r-300m-emotion-ru — модель распознавания эмоций в русской речи, дообученная разработчиком на основе facebook/wav2vec2-xls-r-300m на наборе DUSHA. Она принимает аудиозаписи и относит речь к эмоциональным классам, включая нейтральную, позитивную, грустную, сердитую и другую речь; подходит, например, для анализа диалогов с виртуальными ассистентами. Модель построена на архитектуре Wav2Vec2, использует PyTorch и содержит около 402,7 млн параметров.

В README указана точность 0,901 на валидации; метрики по классам различаются, поэтому общая оценка не гарантирует одинакового качества распознавания каждой эмоции. Репозиторий распространяется по лицензии Apache-2.0.

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

  • Определение эмоциональной окраски реплик в диалогах с виртуальным ассистентом
  • Анализ эмоций в записях русскоязычных разговоров
  • Разметка аудиозаписей по категориям «нейтральная», «позитивная», «грустная» и «сердитая» речь

Ограничения

Качество распознавания различается между классами: в приведённых метриках F1 для позитивной речи составляет 0,82, а для грустной — 0,79. Модель обучена на русскоязычном наборе DUSHA и четырёх основных эмоциях диалогов с виртуальными ассистентами, поэтому перенос на другие языки и условия записи не подтверждён.

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

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

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

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

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

Открыть на Hugging Face

Speech Emotion Recognition

The model is a fine-tuned version of facebook/wav2vec2-xls-r-300m for a Speech Emotion Recognition (SER) task.

The dataset used to fine-tune the original pre-trained model is the DUSHA dataset. The dataset consists of about 125 000 audio recordings in Russian with four basic emotions that usually appear in a dialog with a virtual assistant: Happiness (Positive), Sadness, Anger and Neutral emotion.

emotions = ['neutral', 'positive', 'angry', 'sad', 'other']

How to use

Pipeline

from transformers.pipelines import pipeline

pipe = pipeline(model="KELONMYOSA/wav2vec2-xls-r-300m-emotion-ru", trust_remote_code=True)

# The pipeline input can be a file, path or link
result = pipe("speech.wav")
print(result)
[{'label': 'neutral', 'score': 0.00318}, {'label': 'positive', 'score': 0.00376}, {'label': 'sad', 'score': 0.00145}, {'label': 'angry', 'score': 0.98984}, {'label': 'other', 'score': 0.00176}]

AutoModel

import librosa
import torch
import torch.nn.functional as F
from transformers import AutoConfig, Wav2Vec2Processor, AutoModelForAudioClassification

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model_name_or_path = "KELONMYOSA/wav2vec2-xls-r-300m-emotion-ru"
config = AutoConfig.from_pretrained(model_name_or_path)
processor = Wav2Vec2Processor.from_pretrained(model_name_or_path)
sampling_rate = processor.feature_extractor.sampling_rate
model = AutoModelForAudioClassification.from_pretrained(model_name_or_path, trust_remote_code=True).to(device)


def predict(path):
    speech, sr = librosa.load(path, sr=sampling_rate)
    features = processor(speech, sampling_rate=sampling_rate, return_tensors="pt", padding=True)

    input_values = features.input_values.to(device)
    attention_mask = features.attention_mask.to(device)

    with torch.no_grad():
        logits = model(input_values, attention_mask=attention_mask).logits

    scores = F.softmax(logits, dim=1).detach().cpu().numpy()[0]
    outputs = [{"label": config.id2label[i], "score": round(score, 5)} for i, score in
               enumerate(scores)]
    return outputs


print(predict("speech.wav"))
[{'label': 'neutral', 'score': 0.00318}, {'label': 'positive', 'score': 0.00376}, {'label': 'sad', 'score': 0.00145}, {'label': 'angry', 'score': 0.98984}, {'label': 'other', 'score': 0.00176}]

Evaluation

It achieves the following results:

  • Training Loss: 0.528700
  • Validation Loss: 0.349617
  • Accuracy: 0.901369
emotionprecisionrecallf1-scoresupport
neutral0.920.940.9315886
positive0.850.790.822481
sad0.770.820.792506
angry0.890.830.863072
other0.990.740.85226
accuracy0.9024171
macro avg0.890.820.8524171
weighted avg0.900.900.9024171

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

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

GPU в ailist

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

Можно запустить

Подбираем GPU…

Класс архитектуры
Wav2Vec2ForSpeechClassification
Ревизия весов
3dafeaf

0 моделей