自動音声認識 (「ASR」) の分野に少しでも足を踏み入れたことがあるなら、Meta AI Research のwav2vec 2.0 (「wav2vec2」)に出会ったことがある可能性が高いです。優れた技術リソースがいくつかあり、その中でも特にオリジナルの wav2vec2 論文自体は、機械学習 (「ML」) モデルがどのように機能するかを説明しています。また、Meta AI Research チームの Web サイトには、 wav2vec2 の優れた概要が掲載されています。
学術論文の概要がわかりやすく記載されており、この記事の wav2vec2 モデルの図はそのページから引用されているため、ぜひご覧になることをお勧めします。上記のことを念頭に置くと、wav2vec2 を「わかりやすい英語」で説明する記事はあまりないようです。この記事ではまさにそれをやろうとしています。
この記事は、読者が ML の基本概念をいくつか理解していること、および「雑草」にあまり深く入り込むことなく、高レベルで wav2vec2 がどのように動作するかを理解することに興味があることを前提としています。
したがって、後続のセクションでは、必要に応じて簡単な説明や有用な例えを優先して、多くの技術的な詳細を避けようとします。
そうは言っても、 wav2vec2 が 3 つの主要なコンポーネント ( Feature Encoder 、 Quantization Module 、およびTransformer )で構成されていることを早い段階で知っておくと役立ちます。
それぞれについては、いくつかの基本的なアイデアから議論を開始し、より複雑な (ただし、理解しやすい) ポイントを積み上げていく過程で説明されます。 wav2vec2 は ASR 以外の目的にも使用できることに注意してください。
そうは言っても、ここでの以下の内容では、ASR 固有のコンテキストでモデルについて説明します。
2020 年に導入された時点では、wav2vec2 は ASR システムを構築するための新しいフレームワークを提供していました。何がそんなに特別だったのでしょうか? wav2vec2 より前は、ASR システムは通常、ラベル付きデータを使用してトレーニングされました。つまり、以前のモデルは、各例に関連する文字起こしが含まれる音声オーディオの多くの例でトレーニングされました。この考え方を説明するために、次の波形を考えてみましょう。
この波形が何を表しているのかは、見ただけでは完全にはわかりません。しかし、この音声を生成した話者が「hello world」という言葉を言ったと言われれば、おそらく、波形のどの部分がそれを表すテキストに対応するかについてある程度の賢明な推測ができるでしょう。
あなたは、波形の最初のセグメントが「こんにちは」という単語に関連付けられていると正確に推測するかもしれません。同様に、ASR モデルは、話された音声波形セグメントと書かれたテキストの間の関連付けを行う方法を学習できます。
しかし、wav2vec2 の元の研究者が論文で指摘しているように、 「[多くの]音声認識システムでは、許容可能なパフォーマンスに達するまでに数千時間の音声の文字起こしが必要ですが、世界中で話されている約 7,000 言語の大部分では利用できません。」
そこで、wav2vec2 の研究者らは、システムをトレーニングするために「何千時間もの音声の文字起こし」を必要としない新しいモデルを発明しました。これらは人間の役に立つ例えを引用しています。つまり、赤ちゃんは単語を聞いてすぐにその単語のテキスト表現を見ることで話すことを学ぶのではありません。
彼らは、周囲の人々(例えば、両親、兄弟など)の話を聞くことによってスピーチの表象を学びます。 wav2vec2 は同様の方法で学習します。つまり、最初に聞くことによって学習します。
もちろん、これをどのように達成するかが、この記事の議論のポイントです。 wav2vec2 は大まかに2 つのことを達成するように設計されていることに留意してください。
どの音声単位にラベルのないオーディオのサンプルを与える必要があるかを学びます。
正しい音声単位を予測します。
現時点では、これらの点の意味を完全に理解する必要はありません。以下に説明します。今は頭の片隅に置いておいてください。
たとえば、英語話者の数について、音声サンプルの巨大なデータセットがあると想像してください。音声学の正式な背景がなくても、英語は単語や文などを形成するために「つながって」一連の基本的な音を使用して発声されることを直感的に理解できるかもしれません。
もちろん、あなたが英語話者であれば、このように話そうとは考えず、言いたいことはほぼ自動的に発声されます。しかし、重要なのは、英語の話し言葉、そして実際にはあらゆる話し言葉は、より基本的な個別の音に分解できるということです。
何らかの方法で ASR モデルを誘導してこれらの基本的な音を「抽出」できれば、それらを使用して話し言葉の音声サンプルをエンコードできるようになります。これは、wav2vec2 が音声データの事前トレーニングによって行うことです。
この文脈における事前トレーニングとは、特定のオーディオ データのセットに対して基本的なサウンドがどうあるべきかを明示的に「指示」されない限り、モデルのトレーニングの最初の部分が自己監視されることを意味します。
もう少し掘り下げると、システムは多数の音声のみの例を「供給」され、それらの例から一連の基本的な音声単位を学習できます。
したがって、すべての音声例は、これらの音声単位の何らかの組み合わせで事実上構成されています。話し言葉のオーディオ サンプルを一連の音素に分割するのと同じ方法です。
重要なのは、wav2vec2 が学習する基本的な音声単位は音素よりも短く、長さが 25 ミリ秒であることです。
この時点で生じる疑問は、wav2vec2 がオーディオのみからこれらの音声単位をどのように学習するのかということです。
音声単位を学習するプロセスは、Feature Encoder から始まります。 wav2vec2 は「多層畳み込みニューラル ネットワークを介して音声をエンコードします。」
畳み込みニューラル ネットワーク (CNN) は、特徴を事前に明示的に識別しなくても、特定の入力から特徴を学習できるようにするモデルです。
CNN の各層は入力から特徴を抽出するものと考えることができ、上位の層に進むにつれてそれらの特徴はますます複雑になります。
音声データの場合、CNN の最初の層が音声情報のウィンドウを検査し、原始的な音などの低レベルの特徴を抽出することを想像するかもしれません。
同じ CNN 内の後の層は、前の層で抽出された低レベルの特徴を利用して、音素に近似した音などの高レベルの特徴をエンコードします。
このアイデアに従って、wav2vec2 は、各オーディオ サンプルのタイム スライスを特徴エンコーダーに渡し、各スライスの潜在表現を生成することによって、「ラベルのないオーディオのサンプルをどの音声単位に与えるべきかを学習」し始めることができます。
ただし、潜在表現の集合は個別の音声単位を表すものではありません。これらの表現は何らかの方法で離散化する必要があります。これは、特徴エンコーダの出力を量子化モジュールに渡すことによって実現されます。
事実上、量子化モジュールは、特徴エンコーダーによって生成されたさまざまな音声表現をすべて取得し、それらを音声単位の有限セットに削減します。この時点で、wav2vec2 を単一の言語で事前トレーニングする必要があるのか、それともさまざまな言語で事前トレーニングする必要があるのかを尋ねる価値はあります。
ロジックによれば、多くの言語で使用できる ASR システムを設計する場合、単一の言語ではなく複数の言語を表す音声単位をキャプチャする方が有用である可能性が高くなります。
そのために、選択した多言語オーディオ サンプルを使用して wav2vec2 を事前トレーニングすることで、モデルが実際に複数の言語をキャプチャする音声単位を生成できるようになります。
wav2vec2 の研究者らは、「一部の言語では、[音声] データさえも制限されている」ため、このアプローチの背後にある価値に注目しました。彼らの最初の調査結果では、「一部の単位は特定の言語でのみ使用され、他の単位は類似した言語で使用され、場合によってはあまり類似していない言語でも使用される」ことが判明しました。
音声単位のインベントリは、話し言葉のオーディオ サンプルをエンコードできるようにするための最初のステップです。しかし、私たちが本当に達成したいのは、これらのユニットが互いにどのように関係するかについて wav2vec2 をトレーニングすることです。
言い換えれば、同じ文脈でどのような音声単位が互いに出現する可能性があるかを理解したいのです。 wav2vec2 は、Transformer レイヤーを介してこのタスクに取り組みます。
Transformer により、基本的に wav2vec2 は統計的な意味で音声単位がさまざまな音声サンプル間でどのように分散されているかを学習できるようになります。この理解により、事前トレーニング後にモデルが「認識」するオーディオ サンプルのエンコードが容易になります。
最終的に、ASR システムは、これまで「見たことのない」特定のオーディオ シーケンスのテキスト トランスクリプションを生成できる必要があります。上記の手順で事前トレーニングした後、wav2vec2 はこの目的のために微調整されます。今回は、モデルにオーディオ サンプルとそれに関連する文字起こしの例が明示的に示されています。
この時点で、モデルは事前トレーニング中に学習した内容を利用して、オーディオ サンプルを音声単位のシーケンスとしてエンコードし、それらの音声単位のシーケンスを転写を表す語彙内の個々の文字 (つまり、「a」から「」までの文字) にマッピングできます。英語の場合は「z」)。
微調整中の学習により、wav2vec2 モデルのトレーニングが完了し、微調整中にトレーニングに含まれなかった新しい音声サンプルのテキストを予測できるようになります。
もちろん、wav2vec2 の低レベルの仕組みは、上で説明したものよりもはるかに複雑です。ただし、繰り返しになりますが、この記事の目的は、モデルがどのように機能し、どのようにトレーニングされるかを簡単かつ概念的に理解できるようにすることです。
wav2vec2 は、ASR システムを構築するための非常に強力な ML フレームワークであり、2021 年後半に導入されたそのXLS-Rバリエーションは128 言語でトレーニングされたため、複数の言語にわたって ASR モデルを設計するための改善されたプラットフォームを提供します。
はじめにで述べたように、詳細を学ぶために利用できる優れた技術リソースが多数あります。特に、 Hugging Faceによって提供されるものが特に便利であることがわかります。