【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将影音文件转化成文字,附带两行简单的代码。
- # Installing Transformer
- !pip install -q transformers
- # Import necessary library
- # For managing audio file
- import librosa
- #Importing Pytorch
- import torch
- #Importing Wav2Vec
- 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”自变量中。
- # Loading the audio file
- audio, rate = librosa.load("taken_clip.wav", sr = 16000)
- # printing audio
- print(audio)
- array([0., 0., 0., ..., 0., 0., 0.], dtype=float32)
- # printing rate
- print(rate)
- 16000
- # Importing Wav2Vec pretrained model
- tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h")
- model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")
下一步是获得键入值,将声频(二维数组)传送到分词器(tokenizer),大家期待tensor是选用PyTorch文件格式,而不是Python整数金额文件格式。return_tensors =“pt”,这就是PyTorch文件格式。
- # Taking an input value
- input_values = tokenizer(audio, return_tensors = "pt").input_values
获得logit值(非规范性值)
- # Storing logits (non-normalized prediction values)
- logits = model(input_values).logits
将logit值传送给softmax以获得估计值。
- # Storing predicted ids
- prediction = torch.argmax(logits, dim = -1)
最后一步是将预测分析传送给分词器编解码以得到基因表达。
- # Passing the prediction to the tokenzer decode to get the transcription
- transcription = tokenizer.batch_decode(prediction)[0]
- # Printing the transcription
- print(transcription)
- '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】