ruT5-ASR-large

Model was trained by bond005 to correct errors, restore punctuation and capitalization in the ASR output (in particular, output of Wav2Vec2-Large-Ru-Golos). The model is based on ruT5-large.

Usage

To correct ASR outputs the model can be used as a standalone sequence-to-sequence model as follows:

from transformers import T5ForConditionalGeneration
from transformers import GenerationConfig
from transformers import T5Tokenizer
import torch


def restore_text(text: str, tokenizer: T5Tokenizer, config: GenerationConfig,
                 model: T5ForConditionalGeneration) -> str:
    if len(text) == 0:  # if an input text is empty, then we return an empty text too
        return ''
    x = tokenizer(text, return_tensors='pt', padding=True).to(model.device)
    max_size = int(x.input_ids.shape[1] * 2.0 + 10)
    min_size = 3
    if x.input_ids.shape[1] <= min_size:
        return text
    out = model.generate(**x, generation_config=config, max_length=max_size)
    res = tokenizer.decode(out[0], skip_special_tokens=True).strip()
    return ' '.join(res.split())


# load model and tokenizer
tokenizer_for_restoring = T5Tokenizer.from_pretrained('bond005/ruT5-ASR-large')
model_for_restoring = T5ForConditionalGeneration.from_pretrained('bond005/ruT5-ASR-large')
config_for_restoring = GenerationConfig.from_pretrained('bond005/ruT5-ASR-large')
if torch.cuda.is_available():
    model_for_restoring = model_for_restoring.cuda()

input_examples = [
    'краеугольным камнем любышь алгоритных машиного обучения является преждес его ' \
    'обобщающая способности тогда мы обучаем некоторую модель у нас есть обучающая ' \
    'выборка унаситькюмся ошибки и наша задачи сводится вообщем такомптиминационной ' \
    'задачи мы минимизируем в функцию ошибки по параметрам нашей модели на обучающие ' \
    'выбрать но на самом деле хотим там и не этого ' \
    'мы не обучающую ошибку хотим минимизировать',  # 0
    'максимально ухучать идеальную систему в воде туда какие то элементы или условия ' \
    'чтобы итоговое результат должен быть такой мы должны в двадцать два раза ' \
    'замедлить нашу разработку'  # 1
]

for idx, val in enumerate(input_examples):
    restored = restore_text(val, tokenizer_for_restoring,
                            config_for_restoring, model_for_restoring)
    print('==========')
    print(f'Example {idx + 1}')
    print('==========')
    print('')
    print('ASR output before restoring:')
    print('')
    print(val)
    print('')
    print('After restoring:')
    print('')
    print(restored)
    print('')
==========
Example 1
==========

ASR output before restoring:

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

After restoring:

Краеугольным камнем любого алгоритма машинного обучения является прежде всего его общая способность. Тогда мы обучаем некоторую модель, у нас есть обучающая выборка, у нас есть критическая ошибка, и наша задача сводится в общем к компенсационной задаче. Мы минимизируем функцию ошибки по параметрам нашей модели на обучающую выборку, но на самом деле хотим там и не этого. Мы не обучающую ошибку хотим минимизировать.

==========
Example 2
==========

ASR output before restoring:

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

After restoring:

Максимально ухудшать идеальную систему, вводить туда какие-то элементы или условия. Чтобы итоговый результат должен быть такой, мы должны в 22 раза замедлить нашу разработку.
Downloads last month
133
Safetensors
Model size
738M params
Tensor type
F32
·
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.