TransformersにおけるWav2Vec2を使用した大容量ファイル向け自動音声認識
Hugging Faceは、Wav2Vec2におけるConnectionist Temporal Classification (CTC) アーキテクチャの特性を活用することで、任意の長さの音声ファイルやライブ推論において、高品質な自動音声認識 (ASR) を実行する方法を導入しました。
Transformersにおけるシーケンス長の課題
Wav2Vec2は、Meta AI Researchによってリリースされた音声認識用の人気のある学習済みモデルであり、Transformerアーキテクチャに基づいています。Transformerの根本的な制限は、シーケンス長に対するアテンション・メカニズムの $O(n^2)$ の計算量に起因する、有限のシーケンス長容量です。
非常に長い音声ファイル(例:1時間の録音)をチャンク分割せずにWav2Vec2で実行しようとすると、NVIDIA A100 GPUのようなハイエンドハードウェアであっても、メモリ不足やプログラムのクラッシュを引き起こします。
単純なチャンク分割とその限界
単純なチャンク分割は、音声ファイルをより短い固定長のサンプル(例:各10秒)に分割し、それぞれに対して推論を行い、最終的なテキストを再構成することです。計算効率は高いものの、このアプローチはモデルがチャンクの境界部分で必要なコンテキストを欠いているため、音声が分割される箇所で推論の品質が低下し、しばしば不十分な結果をもたらします。
これを軽減するための一般的な試み(無音時のみチャンク分割を行う、あるいは別の音声活動検知モデルを使用するなど)は、音声に連続的な発話や長いノイズの期間が含まれる可能性があるため、完全には堅牢ではありません。
ストライドを用いたチャンク分割
Wav2Vec2はCTCアルゴリズムを利用しており、音声のすべてのフレームが単一の文字予測(logit)にマッピングされます。Hugging Faceは、この特性を活用して「ストライドを用いたチャンク分割」を実装し、長いファイルに対する堅牢なASRを可能にします:
- Overlapping Chunks(重なり合うチャンク): 推論は、重なり合うチャンクに対して行われます。これにより、モデルが各チャンクの中心部で十分なコンテキストを保持することを保証します。
- Logit Dropping(ロジットの破棄): チャンクの端の部分(通常、推論品質が最も低くなる箇所)のロジットは破棄されます。
- Logit Chaining(ロジットの連結): 残った中央部のロジットを連結することで、フルレングスの音声に対してモデルを実行した結果に極めて近い書き起こし結果を再構成します。
transformers pipelineにおいて、これは chunk_length_s 引数を追加することで有効になります。ユーザーは stride_length_s を使用してオーバーラップをさらにカスタマイズできます。これは、左右のストライド長を指定するタプルを受け取ります(デフォルトでは、ストライドは各辺のチャンク長の1/6です)。
言語モデル (LM) 拡張との互換性
追加のファインチューニングなしで単語エラー率 (WER) を改善するためにWav2Vec2に言語モデル (LM) を追加するサポートも、このストライディング技術と互換性があります。LMはロジットに対して直接作用するため、チャンク分割とストライディングのプロセスは、LMを強化したモデルに対して修正なしで適用可能です。
ライブ推論機能
Wav2Vec2はシングルパスのCTCモデルであるため、特にGPU上で非常に効率的です。この効率性により、データが到着するたびにパイプラインに供給することで、ライブ推論が可能になります。連続的なチャンク(例:10秒のチャンクと1秒のストライド)にストライディングを適用することで、モデルはユーザーの発話に合わせてリアルタイムの書き起こしを提供でき、テキストを表示する前にチャンク全体の処理を待つ必要がなくなります。
Sources
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch