如何用Wav2Vec 2.0将语音转换成文本

译文
开发 前端
Facebook最近引入并开源了新框架:Wav2Vec 2.0,该框架用于自我监督学习来自原始音频数据的表示形式。本文介绍了它以及如何使用它。

【51CTO.com快译】我之前解释了如何借助谷歌语音识别API,使用Speech Recognition库将语音转换成文本。本文介绍如何使用Facebook Wav2Vec 2.0模型将语音转换成文本。

Facebook最近引入并开源了新框架:Wav2Vec 2.0,该框架用于自我监督学习来自原始音频数据的表示形式。Facebook研究人员声称,该框架使用仅10分钟长的转录语音数据,即可支持自动语音识别模型。

众所周知,Transformer在自然语言处理中扮演着重要角色。Hugging Face Transformer的最新版本是4.30,它随带Wav2Vec 2.0。这是Transformer包含的第一个自动语音识别语音模型。

模型架构不在本文的讨论范围之内。有关Wav2Vec模型架构的详细信息,请参阅此处

不妨看看如何使用Hugging Face Transformer将音频文件转换成文本,附有几行简单的代码。

安装Transformer库

  1. # Installing Transformer 
  2. !pip install -q transformers 

导入必要的库

  1. # Import necessary library 
  2.  
  3. For managing audio file 
  4. import librosa 
  5.  
  6. #Importing Pytorch 
  7. import torch 
  8.  
  9. #Importing Wav2Vec 
  10. from transformers import Wav2Vec2ForCTC, Wav2Vec2Tokenizer 

Wav2Vec2是一种语音模型,接受与语音信号的原始波形相对应的浮点数组。 Wav2Vec2模型使用连接时序分类(CTC)加以训练,因此须使用Wav2Vec2Tokenizer对模型输出进行解码(参阅:https://huggingface.co/transformers/model_doc/wav2vec2.html)。

读取音频文件

在这个例子中,我使用了电影《飓风营救》中主人公的对话音频片段“我会寻找你,我会找到你,我会杀了你”。

请注意,Wav2Vec模型已在16 kHz频率上进行了预训练,因此我们确保将原始音频文件也重新采样为16 kHz采样率。我使用在线音频工具转换将《飓风营救》的音频片段重新采样为16kHz。

使用librosa库加载音频文件,并提到我的音频片段大小为16000 Hz。它将音频片段转换成数组,并存储在“audio”变量中。

  1. # Loading the audio file 
  2. audio, rate = librosa.load("taken_clip.wav", sr = 16000) 
  3.  
  4. # printing audio  
  5. print(audio) 
  6. array([0., 0., 0., ..., 0., 0., 0.], dtype=float32) 
  7.  
  8. # printing rate 
  9. print(rate) 
  10. 16000 

导入预训练的Wav2Vec模型

  1. # Importing Wav2Vec pretrained model 
  2. tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h"
  3. model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h"

下一步是获取输入值,将音频(数组)传递到分词器(tokenizer),我们希望tensor是采用PyTorch格式,而不是Python整数格式。return_tensors =“pt”,这就是PyTorch格式。

  1. # Taking an input value 
  2.  
  3. input_values = tokenizer(audio, return_tensors = "pt").input_values 

获取logit值(非规范化值)

  1. # Storing logits (non-normalized prediction values
  2.  
  3. logits = model(input_values).logits 

将logit值传递给softmax以获取预测值。

  1. # Storing predicted ids 
  2. prediction = torch.argmax(logits, dim = -1) 

将音频转换成文本

最后一步是将预测传递给分词器解码以获得转录。

  1. # Passing the prediction to the tokenzer decode to get the transcription 
  2. transcription = tokenizer.batch_decode(prediction)[0] 
  3.  
  4. # Printing the transcription 
  5. print(transcription) 
  6. 'I WILL LOOK FOR YOU I WILL FIND YOU  AND I WILL KILL YOU' 

它与我们的音频片段完全匹配。

我们在本文中看到了如何使用Wav2Vec预训练模型和Transformers将语音转换成文本。这对于NLP项目特别是处理音频转录数据非常有帮助。

您可以在我的GitHub代码库中找到整段代码和数据。

原文标题:Speech to Text with Wav2Vec 2.0,作者:Dhilip Subramanian

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:华轩 来源: 51CTO
相关推荐

2023-11-09 09:00:00

OpenAI人工智能Whisper

2022-06-02 15:10:35

AI数据模型

2019-09-06 08:00:00

开源技术 语音

2023-10-20 08:00:00

人工智能MusicGen

2021-08-31 09:12:18

StringIntLong

2022-10-12 08:00:00

语音识别Node.js音频质量

2019-12-13 09:48:48

开源技术 软件

2023-08-29 09:00:00

人工智能img2prompt

2023-05-23 14:01:29

模型开源

2011-02-25 10:22:03

ibmdwXMLDB2

2011-12-09 21:13:29

iOS

2021-07-14 14:50:08

LinuxASCII图片

2021-06-07 17:30:23

LinuxASCII图片转换

2022-07-19 10:53:57

模型算法智能

2023-12-11 09:00:00

人工智能3D模型

2022-10-12 09:55:14

xls文件xlsx文件

2011-08-02 09:46:04

iOS开发 XML

2011-08-02 10:08:32

IOS开发 XML

2017-08-10 14:15:31

Windows10Windows文件转换

2020-11-14 16:04:17

前端.md文件html文件
点赞
收藏

51CTO技术栈公众号