新聞中心
我之前解釋了如何借助谷歌語(yǔ)音識(shí)別API,使用Speech Recognition庫(kù)將語(yǔ)音轉(zhuǎn)換成文本。本文介紹如何使用Facebook Wav2Vec 2.0模型將語(yǔ)音轉(zhuǎn)換成文本。

創(chuàng)新互聯(lián)建站于2013年創(chuàng)立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元西湖做網(wǎng)站,已為上家服務(wù),為西湖各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
Facebook最近引入并開(kāi)源了新框架:Wav2Vec 2.0,該框架用于自我監(jiān)督學(xué)習(xí)來(lái)自原始音頻數(shù)據(jù)的表示形式。Facebook研究人員聲稱(chēng),該框架使用僅10分鐘長(zhǎng)的轉(zhuǎn)錄語(yǔ)音數(shù)據(jù),即可支持自動(dòng)語(yǔ)音識(shí)別模型。
眾所周知,Transformer在自然語(yǔ)言處理中扮演著重要角色。Hugging Face Transformer的最新版本是4.30,它隨帶Wav2Vec 2.0。這是Transformer包含的第一個(gè)自動(dòng)語(yǔ)音識(shí)別語(yǔ)音模型。
模型架構(gòu)不在本文的討論范圍之內(nèi)。有關(guān)Wav2Vec模型架構(gòu)的詳細(xì)信息,請(qǐng)參閱此處。
不妨看看如何使用Hugging Face Transformer將音頻文件轉(zhuǎn)換成文本,附有幾行簡(jiǎn)單的代碼。
安裝Transformer庫(kù)
- # Installing Transformer
- !pip install -q transformers
導(dǎo)入必要的庫(kù)
- # Import necessary library
- # For managing audio file
- import librosa
- #Importing Pytorch
- import torch
- #Importing Wav2Vec
- from transformers import Wav2Vec2ForCTC, Wav2Vec2Tokenizer
Wav2Vec2是一種語(yǔ)音模型,接受與語(yǔ)音信號(hào)的原始波形相對(duì)應(yīng)的浮點(diǎn)數(shù)組。 Wav2Vec2模型使用連接時(shí)序分類(lèi)(CTC)加以訓(xùn)練,因此須使用Wav2Vec2Tokenizer對(duì)模型輸出進(jìn)行解碼(參閱:https://huggingface.co/transformers/model_doc/wav2vec2.html)。
讀取音頻文件
在這個(gè)例子中,我使用了電影《颶風(fēng)營(yíng)救》中主人公的對(duì)話音頻片段“我會(huì)尋找你,我會(huì)找到你,我會(huì)殺了你”。
請(qǐng)注意,Wav2Vec模型已在16 kHz頻率上進(jìn)行了預(yù)訓(xùn)練,因此我們確保將原始音頻文件也重新采樣為16 kHz采樣率。我使用在線音頻工具轉(zhuǎn)換將《颶風(fēng)營(yíng)救》的音頻片段重新采樣為16kHz。
使用librosa庫(kù)加載音頻文件,并提到我的音頻片段大小為16000 Hz。它將音頻片段轉(zhuǎn)換成數(shù)組,并存儲(chǔ)在“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
導(dǎo)入預(yù)訓(xùn)練的Wav2Vec模型
- # Importing Wav2Vec pretrained model
- tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h")
- model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")
下一步是獲取輸入值,將音頻(數(shù)組)傳遞到分詞器(tokenizer),我們希望tensor是采用PyTorch格式,而不是Python整數(shù)格式。return_tensors =“pt”,這就是PyTorch格式。
- # Taking an input value
- input_values = tokenizer(audio, return_tensors = "pt").input_values
獲取logit值(非規(guī)范化值)
- # Storing logits (non-normalized prediction values)
- logits = model(input_values).logits
將logit值傳遞給softmax以獲取預(yù)測(cè)值。
- # Storing predicted ids
- prediction = torch.argmax(logits, dim = -1)
將音頻轉(zhuǎn)換成文本
最后一步是將預(yù)測(cè)傳遞給分詞器解碼以獲得轉(zhuǎn)錄。
- # 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'
它與我們的音頻片段完全匹配。
我們?cè)诒疚闹锌吹搅巳绾问褂肳av2Vec預(yù)訓(xùn)練模型和Transformers將語(yǔ)音轉(zhuǎn)換成文本。這對(duì)于NLP項(xiàng)目特別是處理音頻轉(zhuǎn)錄數(shù)據(jù)非常有幫助。
您可以在我的GitHub代碼庫(kù)中找到整段代碼和數(shù)據(jù)。
本文題目:如何用Wav2Vec2.0將語(yǔ)音轉(zhuǎn)換成文本
文章來(lái)源:http://www.dlmjj.cn/article/cojiddh.html


咨詢(xún)
建站咨詢(xún)
