ゼファーネットのロゴ

Wav2Vec2.0を使用した音声認識

日付:

Wav2Vec2.0を使用した音声認識

Facebookは最近、Wav2Vec2.0と呼ばれる生のオーディオデータからの表現の自己教師あり学習のための新しいフレームワークを導入してオープンソース化しました。 詳細と使用方法については、こちらをご覧ください。


By ディリップスブラマニアン、データサイエンティスト、AI愛好家

フィギュア
Wav2vec 2.0:生の音声から音声の構造を学ぶ

 

私の以前のブログで、Google音声認識APIを使用して、音声認識ライブラリを使用して音声をテキストに変換する方法を説明しました。 このブログでは、Facebook Wav2Vec2.0モデルを使用して音声をテキストに変換する方法を紹介します。

Facebook 最近導入され、 新しいフレームワークをオープンソース化 Wav2Vec2.0と呼ばれる生のオーディオデータからの表現の自己教師あり学習用。 Facebookの研究者は、このフレームワークが可能にすることができると主張しています 自動音声認識モデル わずか10分の音声文字変換データで。

誰もが知っているように、トランスフォーマーは自然言語処理で主要な役割を果たしています。 Hugging Faceトランスフォーマーの最新バージョンはバージョン4.30で、Wav2Vec2.0が付属しています。 これは、トランスフォーマーに含まれる最初の自動音声認識音声モデルです。

モデルアーキテクチャは、このブログの範囲を超えています。 詳細なWav2Vecモデルアーキテクチャについては、以下を確認してください。 こちら.

いくつかの簡単なコード行でHuggingFaceトランスフォーマーを使用して、オーディオファイルをテキストに変換する方法を見てみましょう。

Transformerライブラリのインストール

#Transformerのインストール!pip install -qtransformers


必要なライブラリのインポート

#必要なライブラリをインポートする#オーディオファイルを管理するためにインポートlibrosa#Pytorchインポートトーチをインポートする#トランスフォーマーからWav2Vecをインポートするimport Wav2Vec2ForCTC、Wav2Vec2Tokenizer


Wav2Vec2は、音声信号の生の波形に対応するフロート配列を受け入れる音声モデルです。 Wav2Vec2モデルは、コネクティビスト時間分類(CTC)を使用してトレーニングされたため、モデル出力はWav2Vec2Tokenizer(参照:抱きしめる顔)

オーディオファイルの読み取り

 
この例では、映画「テイクン」のリーアム・ニーソンの有名なセリフオーディオクリップを使用しました。 「私はあなたを探します、私はあなたを見つけます、そして私はあなたを殺します」

Wav2Vecモデルは16kHz周波数で事前トレーニングされているため、生のオーディオファイルも16kHzサンプリングレートにリサンプリングされていることに注意してください。 私はオンラインで使用しました オーディオツールの変換 「取得した」オーディオクリップを16kHzにリサンプリングします。

librosaライブラリを使用してオーディオファイルをロードし、オーディオクリップのサイズを記載すると16000Hzです。 オーディオクリップを配列に変換し、「audio」変数に格納されます。

#オーディオファイルの読み込みaudio、rate = librosa.load( "taken_clip.wav"、sr = 16000)


#オーディオの印刷print(audio)array([0.、0.、0。、...、0.、0.、0。]、dtype = float32)


#印刷速度print(rate)16000


事前トレーニング済みのWav2Vecモデルのインポート

#Wav2Vec事前トレーニング済みモデルのインポートtokenizer = Wav2Vec2Tokenizer.from_pretrained( "facebook / wav2vec2-base-960h")model = Wav2Vec2ForCTC.from_pretrained( "facebook / wav2vec2-base-960h")


次のステップは、入力値を取得し、オーディオ(配列)をトークナイザーに渡すことです。Python整数ではなくPyTorch形式のテンソルが必要です。 return_tensors =“ pt”これはPyTorch形式にすぎません。

#入力値を取得するinput_values = tokenizer(audio、return_tensors = "pt")。input_values


ロジット値(正規化されていない値)の取得

#ロジット(正規化されていない予測値)の保存logits = model(input_values).logits


ロジット値をsoftmaxに渡して、予測値を取得します

#予測IDの保存prediction = torch.argmax(logits、dim = -1)


音声をテキストに変換する

 
最後のステップは、予測をトークナイザーデコードに渡して、文字起こしを取得することです。

#予測をtokenzerデコードに渡して、文字起こしを取得しますtranscription = tokenizer.batch_decode(prediction)[0]


#文字起こしを印刷するprint(transcription) '私はあなたを探します私はあなたを見つけますそして私はあなたを殺します'


オーディオクリップと完全に一致します。

このブログでは、Transformersを使用してWav2Vecの事前トレーニング済みモデルを使用して音声をテキストに変換する方法を見てきました。 これは、特に音声トランスクリプトデータを処理するNLPプロジェクトに非常に役立ちます。 追加するものがあれば、コメントを残してください!

あなたは私の中にコードとデータ全体を見つけることができます GitHubレポ.

読んでくれてありがとう。 学び続けて、もっと楽しみにしていてください!

参照

  1. https://huggingface.co/transformers/model_doc/wav2vec2.html
  2. https://ai.facebook.com/blog/wav2vec-20-learning-the-structure-of-speech-from-raw-audio/

 
バイオ: ディリップスブラマニアン 機械エンジニアであり、アナリティクスの修士号を取得しています。 彼は、IT、マーケティング、バンキング、電力、製造などのデータに関連するさまざまな分野での専門分野で9年の経験があります。 彼はNLPと機械学習に熱心です。 彼はに貢献しています SASコミュニティ また、Mediumプラットフォームでデータサイエンスのさまざまな側面に関する技術記事を書くことが大好きです。

元の。 許可を得て転載。

関連する

PrimeXBTをチェックアウト
ACミランの公式CFDパートナーとの取引
暗号を取引する最も簡単な方法。
出典:https://www.kdnuggets.com/2021/03/speech-text-wav2vec.html

スポット画像

最新のインテリジェンス

スポット画像

私たちとチャット

やあ! どんな御用でしょうか?