当前位置: 首页 > 科技观察

如何使用Wav2Vec2.0将语音转换为文本

时间:2023-03-15 20:50:55 科技观察

【.com快速翻译】我之前解释了如何借助GoogleSpeechRecognitionAPI使用语音识别库将语音转换为文本。本文介绍如何使用FacebookWav2Vec2.0模型将语音转换为文本。Facebook最近推出并开源了一个新框架:Wav2Vec2.0,这是一个用于从原始音频数据中自我监督学习表征的框架。Facebook研究人员声称,该框架可以使用仅10分钟长的转录语音数据支持自动语音识别模型。众所周知,Transformer在自然语言处理中有着举足轻重的作用。HuggingFaceTransformer的最新版本是4.30,它带有Wav2Vec2.0。这是Transformer中包含的第一个自动语音识别语音模型。模型架构不在本文讨论范围之内。可以在此处找到有关Wav2Vec模型架构的详细信息。看看如何使用HuggingFaceTransformer通过几行简单的代码将音频文件转换为文本。安装Transformer库#InstallingTransformer!pipinstall-qtransformers导入必要的库#Importnecessarylibrary#Formagingaudiofileimportlibrosa#ImportingPytorchimporttorch#ImportingWav2VecfromtransformersimportWav2Vec2ForCTC,Wav2Vec2TokenizerWav2Vec2是一种语音模型,它接受与语音信号的原始波形相对应的浮点数组。Wav2Vec2模型使用连接时间分类(CTC)进行训练,因此必须使用Wav2Vec2Tokenizer来解码模型输出(请参阅:https://huggingface.co/transformers/model_doc/wav2vec2.html)。读取音频文件在这个例子中,我使用了电影《飓风营救》“我会找到你,我会找到你,我会杀了你”中主角对话的音频片段。请注意,Wav2Vec模型是在16kHz频率上预训练的,因此我们确保将原始音频文件也重新采样为16kHz采样率。我使用在线音频工具转换将《飓风营救》的音频剪辑重新采样为16kHz。音频文件是使用librosa库加载的,并且提到我的音频剪辑大小是16000Hz。它将音频剪辑转换为数组并将它们存储在“音频”变量中。#Loadingtheaudiofileaudio,rate=librosa.load("taken_clip.wav",sr=16000)#printingaudioprint(audio)array([0.,0.,0.,...,0.,0.,0.],dtype=float32)#printingrateprint(rate)16000importingpretrainedWav2Vecmodel#ImportingWav2Vecpretrainedmodeltokenizer=Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h")model=Wav2Vec2ForCTC.from_pretrained("facebook/wav960h"base)第一步是得到输入值,将音频(数组)传递给分词器(tokenizer),我们希望张量是PyTorch格式,而不是Python整数格式。return_tensors="pt",这是PyTorch格式。#Takinganinputvalueinput_values=tokenizer(audio,return_tensors="pt").input_values获取logit值(非归一化值)#Storinglogits(non-normalizedpredictionvalues)logits=model(input_values).logits将logit值传递给softmax来获得预测值。#Storingpredictedidsprediction=torch.argmax(logits,dim=-1)将音频转换为文本最后一步是将预测传递给分词器进行解码以获得转录。#Passingthepredictiontothetokenzerdecodetogetthetranscriptiontranscription=tokenizer.batch_decode(prediction)[0]#Printingthetranscriptionprint(transcription)'IWILLLOOKFOYOUIWILLFINDYOUANDIWILLKILLYOU'它与我们的音频片段完全匹配。在本文中,我们了解了如何使用Wav2Vec预训练模型和Transformers将语音转换为文本。这对于NLP项目非常有帮助,尤其是处理音频转录数据。您可以在我的GitHub存储库中找到完整的代码和数据。原标题:SpeechtoTextwithWav2Vec2.0,作者:DhilipSubramanian