Обнаружение предложения запроса в результате Wav2Vec 2.0
Я изучаю ASR(автоматическое распознавание речи) с помощью Wav2Vec2.0. Когда я запускаю Wav2Vec2.0, я получаю результат без запятой (""."), вопросительного знака ("?") и т. д. Таким образом, результат получился как одно целое предложение. Я знаю, что удалил регулярное выражение при создании токенизатора. Есть ли способ преобразовать идеальное предложение, содержащее регулярное выражение?
Исходный текст из wav-файла = "Так какой из них лучше?"
Wav2Vec 2.0 Result = "ТАК ЧТО ОДИН ЛУЧШЕ" (вопросительный знак отсутствует)
Ожидаемый результат = "ТАК ЧТО ЛУЧШЕ?"
1 ответ
Большинство ASR обучены на наборах данных с открытым исходным кодом, и все они удалили из них все родственные знаки препинания. Если вы хотите иметь знаки препинания в окончательном выводе. Попробуйте передать вывод ASR в следующий код.
from transformers import T5Tokenizer, T5ForConditionalGeneration
model_name = "flexudy/t5-small-wav2vec2-grammar-fixer"
tokenizer = T5Tokenizer.from_pretrained(model_name)
model = T5ForConditionalGeneration.from_pretrained(model_name)
sent = """WHEN ARE YOU COMING TOMORROW I AM ASKING BECAUSE OF THE MONEY YOU OWE ME PLEASE GIVE IT TO ME I AM WAITING YOU HAVE BEEN AVOIDING ME SINCE TWO THOUSAND AND THREE"""
input_text = "fix: { " + sent + " } </s>"
input_ids = tokenizer.encode(input_text, return_tensors="pt", max_length=256, truncation=True, add_special_tokens=True)
outputs = model.generate(
input_ids=input_ids,
max_length=256,
num_beams=4,
repetition_penalty=1.0,
length_penalty=1.0,
early_stopping=True
)
sentence = tokenizer.decode(outputs[0], skip_special_tokens=True, clean_up_tokenization_spaces=True)
print(f"{sentence}")
Вы можете увидеть следующие результаты в качестве вывода.
When are you coming tomorrow? I am asking because of the money you owe me, please give it to me. I am waiting. You have been avoiding me since 2003.
Для лучшего понимания проверьте эту модель на HuggingFace.
https://huggingface.co/flexudy/t5-small-wav2vec2-grammar-fixer