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

前端 2023-07-05 17:29:38
379阅读

【51CTO.com快译】我以前表述了怎样依靠谷歌语音鉴别API,应用Speech Recognition库将语音转换成文字。文中详细介绍怎么使用Facebook Wav2Vec 2.0实体模型将语音转换成文字。

Facebook近期引进并开源系统了新架构:Wav2Vec 2.0,该架构用以自身无监督学习来源于初始声频数据信息的表明方式。Facebook科学研究工作人员宣称,该架构应用仅十分钟长的基因表达视频语音数据信息,就可以适用全自动语音识别技术实体模型。

大家都知道,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】

the end
免责声明:本文不代表本站的观点和立场,如有侵权请联系本站删除!本站仅提供信息存储空间服务。