语言: 俄语
标签:
- 文本
- PyTorch
- Transformers
许可证: Apache-2.0
交互示例:
- 文本: "уласны в москве интерне только в большом году что лепровели"
任务类型: 文本生成
ruT5-ASR 模型
该模型由bond005训练,用于修正自动语音识别(ASR)输出中的错误(特别是针对Wav2Vec2-Large-Ru-Golos的输出)。模型基于ruT5-base架构。
使用方法
该模型可作为独立的序列到序列模型来修正ASR输出,示例如下:
from transformers import T5ForConditionalGeneration, T5Tokenizer
import torch
def rescore(text: str, tokenizer: T5Tokenizer,
model: T5ForConditionalGeneration) -> str:
if len(text) == 0:
return ''
ru_letters = set('аоуыэяеёюибвгдйжзклмнпрстфхцчшщьъ')
punct = set('.,:/\\?!()[]{};"\'-')
x = tokenizer(text, return_tensors='pt', padding=True).to(model.device)
max_size = int(x.input_ids.shape[1] * 1.5 + 10)
min_size = 3
if x.input_ids.shape[1] <= min_size:
return text
out = model.generate(**x, do_sample=False, num_beams=5,
max_length=max_size, min_length=min_size)
res = tokenizer.decode(out[0], skip_special_tokens=True).lower().strip()
res = ' '.join(res.split())
postprocessed = ''
for cur in res:
if cur.isspace() or (cur in punct):
postprocessed += ' '
elif cur in ru_letters:
postprocessed += cur
return (' '.join(postprocessed.strip().split())).replace('ё', 'е')
tokenizer_for_rescoring = T5Tokenizer.from_pretrained('bond005/ruT5-ASR')
model_for_rescoring = T5ForConditionalGeneration.from_pretrained('bond005/ruT5-ASR')
if torch.cuda.is_available():
model_for_rescoring = model_for_rescoring.cuda()
input_examples = [
'уласны в москве интерне только в большом году что лепровели',
'мороз и солнце день чудесный',
'нейро сети эта харошо',
'да'
]
for src in input_examples:
rescored = rescore(src, tokenizer_for_rescoring, model_for_rescoring)
print(f'{src} -> {rescored}')
输出结果:
уласны в москве интерне только в большом году что лепровели -> у нас в москве интернет только в прошлом году что ли провели
мороз и солнце день чудесный -> мороз и солнце день чудесный
нейро сети эта харошо -> нейросети это хорошо
да -> да
评估
模型在SberDevices Golos、Common Voice 6.0(俄语部分)和Russian Librispeech的测试集上进行了评估,但仅基于SberDevices Golos的训练集进行训练。完整评估脚本(含Russian Librispeech和SOVA RuDevices数据集)可访问我的Kaggle页面:https://www.kaggle.com/code/bond005/wav2vec2-t5-ru-eval
与原始Wav2Vec2-Large-Ru-Golos的WER(词错误率,%)对比:
数据集名称 |
原始ASR |
重评分后ASR |
Voxforge Ru |
27.08 |
40.48 |
Russian LibriSpeech |
21.87 |
23.77 |
Sova RuDevices |
25.41 |
20.13 |
Golos Crowd |
10.14 |
9.42 |
Golos Farfield |
20.35 |
17.99 |
CommonVoice Ru |
18.55 |
11.60 |