/ Модель

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

Параметры
403 млн
Лицензия
MIT
Архитектура
wav2vec2 · dense
Опубликована
2 мар 2022

wav2vec2-xls-r-300m-wolof-lm

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

Модель на базе wav2vec2 распознаёт речь на волофе и преобразует аудиозаписи в текст.

297скачиваний за 30 дней5лайковвеса обновлены6 сен 2022

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Модель abdouaziiz/wav2vec2-xls-r-300m-wolof-lm разработана для распознавания речи на языке волоф. Это дообученная версия facebook/wav2vec2-xls-r-300m с языковой моделью, обученная на речевом корпусе ALFFA_PUBLIC. Архитектура — Wav2Vec2ForCTC; в репозитории указано около 402,7 млн параметров. Модель принимает аудио и преобразует речь в текст.

Она предназначена для транскрибирования записей на волофе, в том числе речи из Сенегала и соседних стран. В карточке указаны 16,8 часа обучающих данных, разделённых на 10 000 аудиофайлов для обучения и 3 339 для тестирования; результат на наборе оценки — WER 0,212565. Модель распространяется по лицензии MIT. Автор отмечает возможности улучшения распознавания с помощью языковой модели, проверки орфографии и редактирования предложений.

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

  • транскрибирование записей на волофе
  • распознавание речи на волофе в аудиофайлах
  • создание текстовых расшифровок для речевого корпуса ALFFA_PUBLIC

Ограничения

В оценке карточки указан WER 0,212565; качество может улучшаться при постобработке языковой моделью и проверкой орфографии. Обучающие данные составляют 16,8 часа речи.

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

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

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

Также подходит для

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

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

Открыть на Hugging Face

wav2vec2-xls-r-300m-wolof-lm

Wolof is a language spoken in Senegal and neighbouring countries, this language is not too well represented, there are few resources in the field of Text en speech In this sense we aim to bring our contribution to this, it is in this sense that enters this repo.

This model is a fine-tuned version of facebook/wav2vec2-xls-r-300m ,with a language model that is fine-tuned with the largest available speech dataset of the ALFFA_PUBLIC

It achieves the following results on the evaluation set:

  • Loss: 0.367826
  • Wer: 0.212565

Model description

The duration of the training data is 16.8 hours, which we have divided into 10,000 audio files for the training and 3,339 for the test.

Training and evaluation data

We eval the model at every 1500 step , and log it . and save at every 33340 step

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 1e-4
  • train_batch_size: 3
  • eval_batch_size : 8
  • total_train_batch_size: 64
  • total_eval_batch_size: 64
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • lr_scheduler_type: linear
  • lr_scheduler_warmup_steps: 1000
  • num_epochs: 10.0

Training results

StepTraining LossValidation LossWer
15002.8542000.6422430.543964
30000.5992000.4681380.429549
45000.4683000.4334360.405644
60000.4270000.3848730.344150
75000.3770000.3740030.323892
90000.3370000.3636740.306189
105000.3024000.3498840 .283908
120000.2641000.3441040.277120
135000 .2540000.3418200.271316
150000.2084000.3265020.260695
165000.2035000.3262090.250313
180000.1598000.3235390.239851
195000.1582000.3106940.230028
210000.1328000.3383180.229283
225000.1128000.3367650.224145
240000.1036000.3502080.227073
255000.0914000.3536090.221589
270000.0844000.3678260.212565

Usage

The model can be used directly as follows:

import librosa
import warnings
from transformers import AutoProcessor, AutoModelForCTC
from datasets import Dataset, DatasetDict
from datasets import load_metric

wer_metric = load_metric("wer")

wolof = pd.read_csv('Test.csv') # wolof contains the columns of file , and transcription
wolof = DatasetDict({'test': Dataset.from_pandas(wolof)})

chars_to_ignore_regex = '[\"\?\.\!\-\;\:\(\)\,]'

def remove_special_characters(batch):
    batch["transcription"] = re.sub(chars_to_ignore_regex, '', batch["transcription"]).lower() + " "
    return batch
    
    
wolof = wolof.map(remove_special_characters)

processor = AutoProcessor.from_pretrained("abdouaziiz/wav2vec2-xls-r-300m-wolof-lm")
model = AutoModelForCTC.from_pretrained("abdouaziiz/wav2vec2-xls-r-300m-wolof-lm")

warnings.filterwarnings("ignore")
def speech_file_to_array_fn(batch):
    speech_array, sampling_rate = librosa.load(batch["file"], sr = 16000)
    batch["speech"] = speech_array.astype('float16')
    batch["sampling_rate"] = sampling_rate
    batch["target_text"] = batch["transcription"]
    return batch
 
wolof = wolof.map(speech_file_to_array_fn, remove_columns=wolof.column_names["test"], num_proc=1)   
  
def map_to_result(batch):
    model.to("cuda")
    input_values = processor(
      batch["speech"], 
      sampling_rate=batch["sampling_rate"], 
      return_tensors="pt"
    ).input_values.to("cuda")

    with torch.no_grad():
        logits = model(input_values).logits
        pred_ids = torch.argmax(logits, dim=-1)
        batch["pred_str"] = processor.batch_decode(pred_ids)[0]

    return batch
   
 results = wolof["test"].map(map_to_result) 
 
 print("Test WER: {:.3f}".format(wer_metric.compute(predictions=results["pred_str"], references=results["transcription"])))
 

PS:

The results obtained can be improved by using :

  • Wav2vec2 + language model .
  • Build a Spellcheker from the text of the data
  • Sentence Edit Distance

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
Wav2Vec2ForCTC
Ревизия весов
9b22092

0 моделей