英文

Wav2Vec2-Large-Robust在Librispeech上进行了微调

Facebook's Wav2Vec2 .

该模型是 wav2vec2-large-robust 模型的微调版本。它已经在以下内容上进行了预训练:

  • Libri-Light :来自LibriVox项目的开源有声图书;干净、朗读的音频数据
  • CommonVoice :众包收集的音频数据;朗读的文本片段
  • Switchboard :电话语音语料库;嘈杂的电话数据
  • Fisher :会话式电话语音;嘈杂的电话数据

并且随后在960小时的以下内容上进行了微调:

使用该模型时,请确保您的语音输入也是以16Khz采样的。

Paper Robust Wav2Vec2

作者:Wei-Ning Hsu,Anuroop Sriram,Alexei Baevski,Tatiana Likhomanenko,Qiantong Xu,Vineel Pratap,Jacob Kahn,Ann Lee,Ronan Collobert,Gabriel Synnaeve,Michael Auli

摘要:自监督学习的语音表示一直是一个非常活跃的研究领域,但大部分工作都集中在单一领域中,例如用于朗读音频图书,这种情况下存在大量标记和未标记数据。在本文中,我们探索更通用的设置,其中无标签的预训练数据域与微调的标记数据域不同,而测试数据域可能也不同。我们的实验表明,在预训练期间使用目标域数据可以显著提高各种设置的性能。在大规模的竞争性设置中,我们展示了在无标签的目标域数据上进行预训练可以将在域内和域外标记数据上训练的模型之间的差距减少66%-73%。这具有明显的实际影响,因为获取无标签的目标域数据比获取标记数据容易得多。此外,我们发现,在多个领域上进行预训练会提高在训练期间未见过的领域的泛化性能。代码和模型将在此https URL上提供。

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

使用方法

要转录音频文件,可以将模型作为独立的声学模型使用,如下所示:

 from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC
 from datasets import load_dataset
 import soundfile as sf
 import torch
 
 # load model and processor
 processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-large-robust-ft-libri-960h")
 model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-robust-ft-libri-960h")
 
 # define function to read in sound file
 def map_to_array(batch):
     speech, _ = sf.read(batch["file"])
     batch["speech"] = speech
     return batch
     
 # load dummy dataset and read soundfiles
 ds = load_dataset("patrickvonplaten/librispeech_asr_dummy", "clean", split="validation")
 ds = ds.map(map_to_array)
 
 # tokenize
 input_values = processor(ds["speech"][:2], return_tensors="pt", padding="longest").input_values  # Batch size 1
 
 # retrieve logits
 logits = model(input_values).logits
 
 # take argmax and decode
 predicted_ids = torch.argmax(logits, dim=-1)
 transcription = processor.batch_decode(predicted_ids)