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
- 55
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.