/ Модель

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

Параметры
403 млн
Лицензия
CC BY-NC-SA 4.0
Архитектура
wav2vec2 · dense
Базовая модель
wav2vec2-large-robust
Опубликована
4 сен 2023

wav2vec2-large-robust-24-ft-age-gender

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

Модель audEERING на основе Wav2Vec2 оценивает возраст и гендерную категорию говорящего по аудиозаписи и извлекает речевые представления.

2,3 млнскачиваний за 30 дней70лайковвеса обновлены24 мар 2025

Бенчмарки

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

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

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

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

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

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

Модель audeering/wav2vec2-large-robust-24-ft-age-gender разработана audEERING для распознавания возраста и гендерной категории по аудиозаписи. Это дообученная версия Wav2Vec2-Large-Robust с 24 обучаемыми слоями трансформера и примерно 402,7 млн параметров.

На вход подаётся необработанный аудиосигнал. Модель предсказывает возраст в диапазоне примерно от 0 до 100 лет и вероятности категорий «ребёнок», «женщина» и «мужчина»; также возвращает объединённые представления последнего слоя трансформера. Она подходит для анализа голосовых записей и извлечения признаков речи. Обучение проводилось на наборах aGender, Mozilla Common Voice, TIMIT и VoxCeleb 2.

Модель распространяется по лицензии CC BY-NC-SA 4.0, которая ограничивает коммерческое использование. Её предсказания возраста и гендерной категории следует рассматривать как оценки по голосу; точность на конкретных данных в предоставленных источниках не описана.

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

  • оценка примерного возраста говорящего по голосу
  • классификация голосовой записи по категориям ребёнок, женщина или мужчина
  • извлечение признаков аудиозаписи для анализа речи

Ограничения

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

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

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

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

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

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

Открыть на Hugging Face

Model for Age and Gender Recognition based on Wav2vec 2.0 (24 layers)

The model expects a raw audio signal as input and outputs predictions for age in a range of approximately 0...1 (0...100 years) and gender expressing the probababilty for being child, female, or male. In addition, it also provides the pooled states of the last transformer layer. The model was created by fine-tuning Wav2Vec2-Large-Robust on aGender, Mozilla Common Voice, Timit and Voxceleb 2. For this version of the model we trained all 24 transformer layers. An ONNX export of the model is available from doi:10.5281/zenodo.7761387. 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 ModelHead(nn.Module):
    r"""Classification head."""

    def __init__(self, config, num_labels):

        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, 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 AgeGenderModel(Wav2Vec2PreTrainedModel):
    r"""Speech emotion classifier."""

    def __init__(self, config):

        super().__init__(config)

        self.config = config
        self.wav2vec2 = Wav2Vec2Model(config)
        self.age = ModelHead(config, 1)
        self.gender = ModelHead(config, 3)
        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_age = self.age(hidden_states)
        logits_gender = torch.softmax(self.gender(hidden_states), dim=1)

        return hidden_states, logits_age, logits_gender



# load model from hub
device = 'cpu'
model_name = 'audeering/wav2vec2-large-robust-24-ft-age-gender'
processor = Wav2Vec2Processor.from_pretrained(model_name)
model = AgeGenderModel.from_pretrained(model_name)

# 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 age and gender 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)
        if embeddings:
            y = y[0]
        else:
            y = torch.hstack([y[1], y[2]])

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

    return y


print(process_func(signal, sampling_rate))
#    Age        female     male       child
# [[ 0.33793038 0.2715511  0.2275236  0.5009253 ]]

print(process_func(signal, sampling_rate, embeddings=True))
# Pooled hidden states of last transformer layer
# [[ 0.024444    0.0508722   0.04930823 ...  0.07247854 -0.0697901
#   -0.0170537 ]]

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей