Edit model card

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
300
Safetensors
Model size
738M params
Tensor type
F32
·