英文

Wav2Vec2-Large-LV60 在多语言Common Voice上微调训练的模型

此模型基于预训练的 checkpoint wav2vec2-large-lv60 ,并在 CommonVoice 上进行了微调,用于识别多种语言的语音标签。

使用该模型时,请确保语音输入以 16kHz 进行采样。请注意,模型的输出是一串语音标签。需要使用将语音输出标签映射到输出词汇的字典来将语音输出标签映射到单词。

Paper: Simple and Effective Zero-shot Cross-lingual Phoneme Recognition

作者:Qiantong Xu,Alexei Baevski,Michael Auli

摘要:最近自我训练、自我监督预训练和无监督学习方面的进展使得能够在没有任何标记数据的情况下实现良好的语音识别系统。然而,在许多情况下,存在未利用这些方法的相关语言的已标记数据。本文通过利用语音训练语言的音位和目标语言之间的发音特征,对以往关于零-shot跨语言转移学习的研究进行了扩展,对多语言预训练的wav2vec 2.0模型进行微调,以转录未知语言。实验证明,这种简单的方法明显优于先前的方法,该方法引入了任务特定架构,并仅使用了部分单语预训练模型。

可在 https://github.com/pytorch/fairseq/tree/master/examples/wav2vec#wav2vec-20 下找到原始模型。

用法

要转录音频文件,可以将该模型用作独立的声学模型,方法如下:

 from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC
 from datasets import load_dataset
 import torch
 
 # load model and processor
 processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-lv-60-espeak-cv-ft")
 model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-lv-60-espeak-cv-ft")
     
 # load dummy dataset and read soundfiles
 ds = load_dataset("patrickvonplaten/librispeech_asr_dummy", "clean", split="validation")
 
 # tokenize
 input_values = processor(ds[0]["audio"]["array"], return_tensors="pt").input_values
 
 # retrieve logits
 with torch.no_grad():
   logits = model(input_values).logits
 
 # take argmax and decode
 predicted_ids = torch.argmax(logits, dim=-1)
 transcription = processor.batch_decode(predicted_ids)
 # => should give ['m ɪ s t ɚ k w ɪ l t ɚ ɹ ɪ z ð ɪ ɐ p ɑː s əl ʌ v ð ə m ɪ d əl k l æ s ᵻ z æ n d w iː ɑːɹ ɡ l æ d t ə w ɛ l k ə m h ɪ z ɡ ɑː s p əl']