英文

Wav2Vec2-Large-XLSR-53 在多语言Common Voice上微调

该检查点利用预训练检查点 wav2vec2-large-xlsr-53 进行了微调,用于识别多种语言中的语音标签。

在使用该模型时,请确保您的语音输入采样率为16kHz。注意,该模型输出一串语音标签。必须使用将语音输出标签映射到输出词语的字典来将语音标签映射到单词输出。

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

作者:Qiantong Xu,Alexei Baevski,Michael Auli

摘要:最近的自训练、自监督预训练和无监督学习取得了令人满意的语音识别系统,而无需任何标记数据。然而,在许多情况下,存在未利用这些方法的相关语言的标记数据。本文通过微调多语言预训练的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-xlsr-53-espeak-cv-ft")
 model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-xlsr-53-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 l ʌ v ð ə m ɪ d əl k l æ s ɪ z æ n d w iː aʊ ɡ l æ d t ə w ɛ l k ə m h ɪ z ɡ ɑː s p ə']