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