今回の論文
今回取り上げるのは、Alexei Baevski、Henry Zhou、Abdelrahman Mohamed、Michael Auliによる「wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations」です。Facebook AIの研究で、2020年6月20日にarXivで初公開され、NeurIPS 2020で発表されました。研究分野は、自己教師あり音声表現学習と音声認識です。書誌と初公開日はarXivの論文ページ、手法と主要結果はNeurIPSの会議版本文で確認できます。著者名はarXivと論文本文の表記に合わせています。
選んだ理由は、音声データを持っていても正確な文字起こしが少ないという開発上の制約に、学習方法で向き合っているからです。録音全体にラベルを付ける前に、音そのものから特徴を学ぶという考え方は、専門領域の音声入力や通話分析の設計にも参考になります。
どんな技術か
wav2vec 2.0は、文字起こしのない音声から「音を理解するための表現」を学び、その後に文字起こし付きの音声で認識器へ適応させる技術です。
事前学習では、音声を短い時間ごとの特徴ベクトルに変換し、その一部を隠します。モデルは前後の音を手がかりに、隠れた位置に対応する音の表現を候補の中から選びます。この段階の正解は、人間が書いた文章ではなく、同じ音声から作った表現です。
ただし、この学習だけで文字起こしが完成するわけではありません。音の表現と文字を対応付けるために、後からラベル付き音声で学習します。「音の構造を学ぶ工程」と「文字列へ変換する工程」を分け、ラベルへの依存を減らす点が中心です。
課題
音声認識で難しいのは、録音を集めることと、正解の文字列を揃えることの負担が大きく異なる点です。文字起こしには聞き直し、専門用語の確認、表記の統一が必要です。新しい業務分野では、数百時間の録音があっても、学習に使える正解データはわずかという状況が起こります。
ラベル付きデータだけで学習すると、少数の話者や録音環境に適合しすぎるおそれがあります。一方、既存の認識器で未ラベル音声を文字起こしし、その結果を正解として再学習する方法では、最初の認識器の誤りも引き継ぎやすくなります。wav2vec 2.0は、事前学習の段階で文章の疑似ラベルを必要としません。
音声ならではの難しさもあります。波形には発音だけでなく、声質、背景音、録音機器の特徴が含まれます。欠けた波形を細かく再現できても、文字起こしに役立つ表現を学んだとは限りません。そこで、何を入力として残し、何を予測の正解にするかが重要になります。
たとえば専門用語を含む作業報告の音声入力では、一般的な認識器をそのまま使うだけでは品質が足りない場合があります。大量の録音と少量の正解データを役割分担して使えるなら、適応の選択肢が広がります。ただし、その効果は対象業務で別途検証する必要があります。
用語解説
- 自己教師あり学習
- データ自身から学習課題と正解を作る方法です。wav2vec 2.0では隠した位置の音声表現を同じ音声から用意するので、事前学習に文字起こしを必要としません。
- 潜在表現とマスキング
- 潜在表現は、波形からニューラルネットワークが抽出した特徴ベクトルです。波形を直接消すのではなく、この特徴列の連続区間を隠すことで、周囲の音を使う学習課題を作ります。
- 対照学習
- 正しい候補と間違った候補を比較して、正しい組み合わせの類似度を高める学習です。この論文では、隠した位置の文脈表現と、その位置の量子化表現を対応付けます。
- 量子化とコードブック
- 連続値の特徴を、学習可能な候補ベクトルの集合であるコードブックから選んだ表現へ置き換える処理です。ここではモデル圧縮が主目的ではなく、対照学習の正解を作るために使います。
- CTC(Connectionist Temporal Classification)
- 音声の各時刻と文字の対応位置が与えられていなくても、音声系列から文字列を学べる損失です。事前学習後の表現を文字起こしへ適応させる工程で使います。
技術の仕組み
処理は、大きく「波形から特徴を作る」「隠した特徴を文脈から推定する」「音と文字を対応付ける」の3段階です。事前学習の入力と正解は同じ音声から作りますが、それぞれに異なる加工を施します。
波形を短い時間単位の特徴列に変える
まず、音声波形を7段の時間方向の畳み込みに通し、特徴列を作ります。論文の構成では、各特徴が約25ミリ秒の入力範囲を捉え、特徴列の間隔は約20ミリ秒です。生波形のままTransformerに渡すより、系列を短くできます。
その後にTransformerを使い、発話内の広い文脈を反映した表現を作ります。BASEは12層、LARGEは24層のTransformerを持ちます。前段の畳み込みと、後段の文脈処理に役割が分かれています。
入力を隠し、正解側は隠さない
事前学習では、Transformerへ渡す特徴列の連続区間を、共通の学習可能なマスクベクトルで置き換えます。論文の標準設定では開始位置を6.5%の割合で選び、そこから10時刻ずつ隠します。区間が重なるため、実際に隠れる時刻は全体の約49%です。開始位置の割合と、最終的なマスク率は異なります。
一方、正解を作る量子化器には、隠す前の特徴を渡します。モデルが見る入力側は欠けていますが、正解側にはその位置の情報が残ります。この分岐によって、人間のラベルなしで「隠した場所に何があったか」を学習できます。
正解だけを離散化する
量子化器は複数のコードブックからベクトルを1つずつ選び、それらを連結して変換します。論文では320候補のコードブックを2つ使い、理論上は102,400通りの組み合わせを表現できます。これは102,400個の音素や単語が事前定義されているという意味ではありません。
離散的な選択を学習するため、Gumbel softmaxを使います。順伝播では候補を1つ選び、逆伝播では連続的な近似を通じて勾配を流します。また、一部のコードだけに選択が偏らないよう、多様性を促す損失を加えます。
重要なのは、Transformerへの入力は連続値のままにし、対照学習の正解側を量子化することです。入力まで離散化すると音の情報を失いやすく、正解を連続値のままにすると、声質などの細かな特徴で候補を見分ける近道ができる可能性があります。これは論文のアブレーションと著者の解釈に基づく設計です。
正しい位置の表現を候補から選ぶ
隠した位置でTransformerが出した文脈表現を、正解の量子化表現と比較します。負例には、同じ発話のほかのマスク位置から選んだ100個の表現を使います。コサイン類似度に基づいて正解候補の確率を計算し、その確率が高くなるよう学習します。
つまり、波形の全数値を再現するのではなく、「この文脈に対応する音の表現はどれか」を学びます。量子化器、特徴抽出器、Transformerを事前学習で共同更新する点も、離散表現を先に固定してから別モデルを学ぶ方式との違いです。手法の詳細は論文本文のModelとTrainingで確認できます。
CTCで文字列へ適応し、推論ではマスクを外す
事前学習後は、Transformerの上に文字を予測する線形層を追加し、文字起こし付き音声でCTC学習を行います。CTCは、同じ文字の連続や空白用の記号を含む複数の時刻対応をまとめて扱うため、文字ごとの正確な時刻ラベルは不要です。
論文の実験では、畳み込みの特徴抽出器を固定し、最初の10,000更新では出力層だけを学習します。その後にTransformerも更新します。さらに、SpecAugmentの時間・特徴方向のマスキングによる正則化に近い処理を潜在表現へ適用し、少量ラベルでの過学習を抑えます。これは未ラベル事前学習の対照課題とは役割が異なります。
認識時にはマスクも量子化器も不要です。波形、特徴抽出器、Transformer、文字予測層を通して文字列を得ます。外部言語モデルを併用する場合は、候補文字列をビーム探索し、音響側のスコアと言語モデルのスコアを組み合わせます。
実験と結果
論文は、ラベル付き音声の量を減らしても認識できるか、未ラベル音声の量や表現の作り方がどう効くかを検証しています。主な評価対象は、英語の朗読音声からなるLibriSpeechです。
少量ラベルでどこまで認識できたか
事前学習には、文字起こしを使わないLibriSpeech 960時間(LS-960)、または前処理後に約53,200時間となるLibriVox音声(LV-60k)を使います。認識への適応では、10分、1時間、10時間、100時間、960時間のラベル付き音声を比較します。
指標はWERです。正解の単語数を分母に、単語の置換・削除・挿入の数を数えます。以下は原論文の表1・表2にあるLARGEモデルのtest結果で、すべて外部Transformer言語モデルを併用した条件です。
| 未ラベル事前学習音声 | ラベル付き音声 | test-clean WER(%) | test-other WER(%) |
|---|---|---|---|
| LS-960 | 10分 | 6.8 | 10.8 |
| LV-60k | 10分 | 4.8 | 8.2 |
| LS-960 | 1時間 | 3.9 | 7.6 |
| LV-60k | 1時間 | 2.9 | 5.8 |
| LV-60k | 960時間 | 1.8 | 3.3 |
ラベル付き音声が同じ10分でも、事前学習の音声量を増やすと両テストのWERが下がっています。これは、未ラベル音声から学んだ表現が、その後の認識に役立つことを示す結果です。なお、会議版5.1節には10分条件を5.2 / 8.6と記した箇所もありますが、ここでは要旨・表1・付録表9で一致する4.8 / 8.2を採用しています。
「10分で高精度」の条件を分けて読む
10分というのは、認識器への適応に使う音声と転写のペアの量です。音声表現の事前学習には約53,200時間を使い、外部言語モデルにも別途テキスト学習があります。10分のデータだけでシステム全体をゼロから作った結果ではありません。
同じLARGE・LV-60k・10分ラベルの条件でも、外部言語モデルと辞書を使わない結果は、test-clean / test-otherで40.2 / 38.7%です。Transformer言語モデル併用では4.8 / 8.2%になります。音を文字の綴りへ変換する工程で、言語側の知識も大きな役割を持っています。詳細は原論文の付録C・表9に示されています。
正解をどう作るかが下流性能を変えた
表4のアブレーションでは、縮小したBASEの事前学習設定と10時間ラベルでの適応を使い、dev-cleanとdev-otherを合わせたWERを3つの学習シードで評価しています。
連続入力・量子化正解の標準構成は平均WER 7.97%でした。入力と正解を両方量子化すると12.18%、両方連続値にすると8.58%です。これは上のtest結果とは異なる実験ですが、「全部を同じ表現に揃えるより、入力と正解に別の役割を持たせる」設計を支持しています。
ただし、これらの結果は英語朗読音声を中心としたものです。日本語の会議、電話帯域、複数話者の重なりに同じ数字を当てはめることはできません。
何に使える?
以下は論文の手法から考えられる開発上の応用です。原論文が業務システムで効果を実証したわけではなく、対象データで検証する前提になります。
専門領域の文字起こしを少量データから改善する
工場の作業報告、製品サポート、専門的な研修動画などでは、一般的な音声認識が苦手な語彙や発話の癖があります。対象言語を扱える学習済み表現を出発点にし、代表的な録音へ正解を付けてCTC適応を試す用途が考えられます。
さらに未ラベルの業務音声で事前学習を続ける選択肢もありますが、原論文の結果だけで効果は保証できません。まずはラベル付きの適応だけと比較し、追加の計算に見合う改善があるか確かめる必要があります。
通話や動画を検索できるようにする
音声認識を改善できれば、認識結果を検索やRAGの入力に使えます。たとえば、問い合わせで話された製品名を正しく文字へ変換できると、その後のFAQ検索や通話ログ検索の入口を改善できる可能性があります。
ただし、wav2vec 2.0の音声特徴だけで文章検索ができるわけではありません。文字起こし、区間分割、テキスト埋め込み、検索の各工程が必要です。話者分離やタイムスタンプの生成も、別途設計します。
汎用モデルの導入と、専用適応を比較する
正解データをほとんど持たない段階では、追加学習なしで使える認識器を基準にすると、適応の価値を測りやすくなります。Whisperの大規模弱教師あり学習とゼロショット認識は、この比較を考える材料になります。
比較する際は、同じ業務音声、同じ文字表記、同じ後処理で評価します。モデル名や朗読ベンチマークの数字だけで、どちらが業務に向くかは決められません。
開発や事業へのヒント
この論文から得られる実践的なヒントは、未ラベルデータとラベル付きデータに別々の仕事を割り当てることです。小規模チームが原論文と同じ事前学習を行う必要はありません。
最初の投資先を、全件転写から評価用データへ変える
まず、対象言語に合った事前学習済みモデルと、追加学習なしの認識器を少量の実音声で比較します。次に、録音条件や専門語を含む代表例に正解を付け、学習・検証・テストを話者や収録単位で分けます。
用途に応じてラベル量を増やし、改善曲線を見れば、さらに転写を増やす価値があるか判断できます。論文の「10分」を自社データの必要量として固定するより、どの条件のラベルが足りないかを探すほうが設計に結び付きます。
音響側と文字列選択側を別々に測る
外部言語モデルを加えると認識品質は変わりますが、専門用語を一般的な単語へ置き換えるおそれもあります。言語モデルなし・ありの両方を測り、全体WERに加えて、製品名や型番など重要語の認識率も見るとよいです。
検索連携が目的なら、文字起こしのWERだけでなく、検索で正しい資料へ到達できるかも測ります。これにより、モデル単体の改善がプロダクトの価値につながったかを確認できます。
学習の正解に、不要な情報を残しすぎない
モデルが学習課題を簡単に解けることと、業務に役立つ表現が育つことは別です。wav2vec 2.0は、入力の情報を保ちながら正解側を量子化することで、この問題に対処しました。
他の表現学習でも、正解に録音環境や話者固有の特徴が強く残っていないかを考えるヒントになります。ただし、量子化があらゆるタスクで有利という結論ではありません。用途に必要な情報まで消さないか、下流タスクで比較することが重要です。
限界
ラベルを減らせることと、計算を減らせることは同じではありません。論文のLARGEのLibriVox事前学習は128枚のV100 GPUで5.2日という規模です。小規模な開発では、既存のチェックポイントを利用し、追加学習の範囲を限定する判断が現実的です。
また、未ラベル音声から学べても、その分布に依存します。英語朗読で学んだ表現が、日本語の自然会話や電話音声に同じように有効とは限りません。対象言語のチェックポイント、音声前処理、出力文字集合を確認し、業務音声で評価する必要があります。
原論文のTransformerは発話全体の文脈を使うため、そのまま低遅延のストリーミング認識器にはなりません。長時間録音では区間分割が必要になり、境界で単語を落とす問題や文脈不足も評価対象になります。
実装では、マスクの作り方、量子化器の学習、多様性損失、CTCの空白記号、文字表記の統一などが絡みます。少量ラベルでは学習率やシードの影響も大きく、論文も複数設定を検証データで選んでいます。評価用の転写データを全く用意せず、安定した導入判断を行うのは難しいです。
最後に、話者分離、翻訳、句読点、業務語彙の完全な認識を一括して解決する手法ではありません。原論文の成果と、製品として必要な周辺機能を分けて見積もる必要があります。
よくある質問
Q. 文字起こしがなくても、そのまま音声認識できますか?
A. 未ラベル事前学習だけでは文字との対応を学びません。文字起こしを行うには、CTCの出力層とラベル付き音声による適応、またはその適応まで済んだモデルが必要です。
Q. 10分のラベルだけ用意すれば高精度になりますか?
A. 原論文の4.8 / 8.2%というWERは、大規模な未ラベル事前学習と外部Transformer言語モデルを組み合わせた英語の結果です。同じ10分条件でも言語モデルなしでは40.2 / 38.7%でした。対象言語と業務音声で必要量を測る必要があります。
Q. 量子化したコードは、音素や文字なのですか?
A. 人手で音素や文字として定義したものではありません。音声から共同学習する候補ベクトルです。文字列を出す工程では、量子化器を通さず、Transformerの表現から文字を予測します。
Q. 日本語の音声入力にも使えますか?
A. 手法としては候補になりますが、原論文の中心的な実験は英語です。日本語に対応するモデルと出力語彙を使い、文字表記を統一して評価してください。日本語では単語分割によってWERが変わるため、文字単位の誤り率や重要語の認識率も合わせて見ると判断しやすくなります。
Q. マスキングは認識時にも必要ですか?
A. 必要ありません。未ラベル事前学習では対照課題を作るため、CTC適応時には正則化のために使います。認識時は入力を隠さず、通常の特徴列から文字列を予測します。
今日の学び
この論文は、文字起こしの整備が高価で、ラベル付き音声を大量に集めにくいという課題を扱いました。潜在表現を隠し、量子化した正解との対照学習で音の表現を育て、少量の転写データによるCTC学習で認識へつなげています。
得られるヒントは、ラベルを付ける前のデータにも学習上の役割があり、入力と正解の表現を分けて設計できることです。同時に、少量ラベルの成果は事前学習量やデコード条件まで含めて読み、実際の業務で測り直す必要があります。