/ Модель

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

Параметры
403 млн
Лицензия
Apache 2.0
Архитектура
wav2vec2 · dense

wav2vec2-xlsr-persian-speech-emotion-recognition

Распознавание речиАудио → текст3 профессии

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

439скачиваний за 30 дней14лайковвеса обновлены27 июл 2021

Бенчмарки

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

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Распознавание речи» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

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

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

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

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

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

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

m3hrdadfi/wav2vec2-xlsr-persian-speech-emotion-recognition — модель распознавания эмоций в персидской речи на базе wav2vec2. По архитектуре это классификатор речи Wav2Vec2ForSpeechClassification с 402,7 млн параметров, обученный на наборе ShEMO. Модель принимает аудио и предназначена для классификации эмоционального состояния говорящего; карточка приводит метрики по классам эмоций, включая гнев, страх и радость.

Модель подойдёт для анализа эмоциональной окраски персидских записей, например диалогов или голосовых сообщений. В метаданных pipeline_tag указан как automatic-speech-recognition, хотя архитектура и README описывают классификацию эмоций, поэтому фактическая задача может не совпадать с тегом. Репозиторий содержит веса PyTorch и распространяется по лицензии Apache-2.0.

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

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

Ограничения

Метаданные указывают задачу распознавания речи, тогда как архитектура и README указывают на классификацию эмоций. В приведённых метриках качество заметно различается по классам: для страха F1 составляет 0,22.

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

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

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

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

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

Открыть на Hugging Face

Emotion Recognition in Persian (Farsi - fa) Speech using Wav2Vec 2.0

How to use

Requirements

# requirement packages
!pip install git+https://github.com/huggingface/datasets.git
!pip install git+https://github.com/huggingface/transformers.git
!pip install torchaudio
!pip install librosa

Prediction

import torch
import torch.nn as nn
import torch.nn.functional as F
import torchaudio
from transformers import AutoConfig, Wav2Vec2FeatureExtractor

import librosa
import IPython.display as ipd
import numpy as np
import pandas as pd
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model_name_or_path = "m3hrdadfi/wav2vec2-xlsr-persian-speech-emotion-recognition"
config = AutoConfig.from_pretrained(model_name_or_path)
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(model_name_or_path)
sampling_rate = feature_extractor.sampling_rate
model = Wav2Vec2ForSpeechClassification.from_pretrained(model_name_or_path).to(device)
def speech_file_to_array_fn(path, sampling_rate):
    speech_array, _sampling_rate = torchaudio.load(path)
    resampler = torchaudio.transforms.Resample(_sampling_rate)
    speech = resampler(speech_array).squeeze().numpy()
    return speech


def predict(path, sampling_rate):
    speech = speech_file_to_array_fn(path, sampling_rate)
    inputs = feature_extractor(speech, sampling_rate=sampling_rate, return_tensors="pt", padding=True)
    inputs = {key: inputs[key].to(device) for key in inputs}

    with torch.no_grad():
        logits = model(**inputs).logits

    scores = F.softmax(logits, dim=1).detach().cpu().numpy()[0]
    outputs = [{"Label": config.id2label[i], "Score": f"{round(score * 100, 3):.1f}%"} for i, score in enumerate(scores)]
    return outputs
path = "/path/to/sadness.wav"
outputs = predict(path, sampling_rate)
[
{'Label': 'Anger', 'Score': '0.0%'},
{'Label': 'Fear', 'Score': '0.0%'},
{'Label': 'Happiness', 'Score': '0.0%'},
{'Label': 'Neutral', 'Score': '0.0%'},
{'Label': 'Sadness', 'Score': '99.9%'},
{'Label': 'Surprise', 'Score': '0.0%'}
]

Evaluation

The following tables summarize the scores obtained by model overall and per each class.

Emotionsprecisionrecallf1-scoreaccuracy
Anger0.950.950.95
Fear0.330.170.22
Happiness0.690.690.69
Neutral0.910.940.93
Sadness0.920.850.88
Surprise0.810.880.84
Overal0.90

Questions?

Post a Github issue from HERE.

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

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

GPU в ailist

Универсальный рантайм

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

Подбираем GPU…

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

0 моделей