/ Модель

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

Параметры
201 млн
Лицензия
CC BY-NC-SA 4.0
Архитектура
wav2vec2 · dense
Опубликована
6 апр 2022

wav2vec2-large-robust-12-ft-emotion-msp-dim

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

Модель Wav2Vec 2.0 оценивает возбуждение, доминирование и валентность в речи по аудиосигналу.

253 тыс.скачиваний за 30 дней175лайковвеса обновлены19 сен 2024

Бенчмарки

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

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

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

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

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

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

Модель audEERING для распознавания эмоциональных характеристик речи по аудиосигналу. Она построена на архитектуре Wav2Vec 2.0 и получена дообучением Wav2Vec2-Large-Robust на датасете MSP-Podcast v1.7; перед дообучением число трансформерных слоёв сократили с 24 до 12. Модель содержит около 201,3 млн параметров.

На вход подаётся необработанный аудиосигнал, а на выходе модель предсказывает три непрерывные оценки примерно от 0 до 1: возбуждение (arousal), доминирование (dominance) и валентность (valence). Также она предоставляет агрегированные состояния последнего слоя трансформера. Модель подходит для анализа эмоциональной окраски речи; карточка указывает английский язык.

Модель предназначена для исследовательского использования. Лицензия CC BY-NC-SA 4.0 ограничивает коммерческое применение и требует соблюдения условий атрибуции и распространения производных материалов на тех же условиях. Для коммерческой лицензии разработчик предлагает обратиться к audEERING.

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

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

Ограничения

Модель предназначена только для исследований; лицензия CC BY-NC-SA 4.0 не разрешает коммерческое использование без отдельной лицензии. Оценки описывают три измерения эмоций и не являются готовыми категориями эмоций.

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

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

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

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

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

Открыть на Hugging Face

Model for Dimensional Speech Emotion Recognition based on Wav2vec 2.0

Please note that this model is for research purpose only. A commercial license for a model that has been trained on much more data can be acquired with audEERING. The model expects a raw audio signal as input, and outputs predictions for arousal, dominance and valence in a range of approximately 0...1. In addition, it provides the pooled states of the last transformer layer. The model was created by fine-tuning Wav2Vec2-Large-Robust on MSP-Podcast (v1.7). The model was pruned from 24 to 12 transformer layers before fine-tuning. An ONNX export of the model is available from doi:10.5281/zenodo.6221127. Further details are given in the associated paper and tutorial.

Usage

import numpy as np
import torch
import torch.nn as nn
from transformers import Wav2Vec2Processor
from transformers.models.wav2vec2.modeling_wav2vec2 import (
    Wav2Vec2Model,
    Wav2Vec2PreTrainedModel,
)


class RegressionHead(nn.Module):
    r"""Classification head."""

    def __init__(self, config):

        super().__init__()

        self.dense = nn.Linear(config.hidden_size, config.hidden_size)
        self.dropout = nn.Dropout(config.final_dropout)
        self.out_proj = nn.Linear(config.hidden_size, config.num_labels)

    def forward(self, features, **kwargs):

        x = features
        x = self.dropout(x)
        x = self.dense(x)
        x = torch.tanh(x)
        x = self.dropout(x)
        x = self.out_proj(x)

        return x


class EmotionModel(Wav2Vec2PreTrainedModel):
    r"""Speech emotion classifier."""

    def __init__(self, config):

        super().__init__(config)

        self.config = config
        self.wav2vec2 = Wav2Vec2Model(config)
        self.classifier = RegressionHead(config)
        self.init_weights()

    def forward(
            self,
            input_values,
    ):

        outputs = self.wav2vec2(input_values)
        hidden_states = outputs[0]
        hidden_states = torch.mean(hidden_states, dim=1)
        logits = self.classifier(hidden_states)

        return hidden_states, logits



# load model from hub
device = 'cpu'
model_name = 'audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim'
processor = Wav2Vec2Processor.from_pretrained(model_name)
model = EmotionModel.from_pretrained(model_name).to(device)

# dummy signal
sampling_rate = 16000
signal = np.zeros((1, sampling_rate), dtype=np.float32)


def process_func(
    x: np.ndarray,
    sampling_rate: int,
    embeddings: bool = False,
) -> np.ndarray:
    r"""Predict emotions or extract embeddings from raw audio signal."""

    # run through processor to normalize signal
    # always returns a batch, so we just get the first entry
    # then we put it on the device
    y = processor(x, sampling_rate=sampling_rate)
    y = y['input_values'][0]
    y = y.reshape(1, -1)
    y = torch.from_numpy(y).to(device)

    # run through model
    with torch.no_grad():
        y = model(y)[0 if embeddings else 1]

    # convert to numpy
    y = y.detach().cpu().numpy()

    return y


print(process_func(signal, sampling_rate))
#  Arousal    dominance valence
# [[0.5460754  0.6062266  0.40431657]]

print(process_func(signal, sampling_rate, embeddings=True))
# Pooled hidden states of last transformer layer
# [[-0.00752167  0.0065819  -0.00746342 ...  0.00663632  0.00848748
#    0.00599211]]

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей