/ Модель

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

Параметры
113 млн
Архитектура
wav2vec2 · dense

wav2vec2-base-100k-gtzan-music-genres

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

Модель на базе Wav2Vec2 классифицирует музыкальные аудиозаписи по жанрам.

212скачиваний за 30 дней21лайквеса обновлены6 июл 2021

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

m3hrdadfi/wav2vec2-base-100k-gtzan-music-genres — модель классификации аудио на базе Wav2Vec2, опубликованная пользователем m3hrdadfi. Она предназначена для определения музыкального жанра по аудиозаписи; в README приведены метрики по классам, включая blues, classical и country. В метаданных указаны архитектура Wav2Vec2ForSpeechClassification, 113,3 млн параметров и формат PyTorch.

Для подготовки и обработки аудио README упоминает torchaudio и librosa. Модель подходит для автоматической разметки музыкальных фрагментов по жанрам. Метаданные помечают её как automatic-speech-recognition, однако архитектура классификации и название репозитория указывают на классификацию музыки; поэтому эта задача выбрана основной. Сведения о лицензии в предоставленных материалах отсутствуют.

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

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

Ограничения

В README приведены метрики только для части классов в доступном фрагменте, поэтому по нему нельзя оценить качество по всем жанрам. Лицензия и поддерживаемые языки не указаны в предоставленных материалах.

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

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

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

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

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

Открыть на Hugging Face

Music Genre Classification 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-base-100k-voxpopuli-gtzan-music"
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 = "genres_original/disco/disco.00067.wav"
outputs = predict(path, sampling_rate)
[
{'Label': 'blues', 'Score': '0.0%'},
{'Label': 'classical', 'Score': '0.0%'},
{'Label': 'country', 'Score': '0.0%'},
{'Label': 'disco', 'Score': '99.8%'},
{'Label': 'hiphop', 'Score': '0.0%'},
{'Label': 'jazz', 'Score': '0.0%'},
{'Label': 'metal', 'Score': '0.0%'},
{'Label': 'pop', 'Score': '0.0%'},
{'Label': 'reggae', 'Score': '0.0%'},
{'Label': 'rock', 'Score': '0.0%'}
]

Evaluation

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

labelprecisionrecallf1-scoresupport
blues0.7920.9500.86420
classical0.8640.9500.90520
country0.8120.6500.72220
disco0.7780.7000.73720
hiphop0.9330.7000.80020
jazz1.0000.8500.91920
metal0.7830.9000.83720
pop0.9170.5500.68720
reggae0.5430.9500.69120
rock0.6110.5500.57920
accuracy0.7750.7750.7750
macro avg0.8030.7750.774200
weighted avg0.8030.7750.774200

Questions?

Post a Github issue from HERE.

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей