Fusic Tech Blog

Fusicエンジニアによる技術ブログ

wav2vec 2.0を日本語で推論できるようにする
2024/02/19

wav2vec 2.0を日本語で推論できるようにする

こんにちは、インターンの青木です。この記事では、2020/6/20にFacebook AIより提案されたwav2vec 2.0を日本語データセット で学習させ、推論までを行いたいと思います。 git リポジトリ

wav2vec 2.0とは?

Transformerを使用した音声認識フレームワークであり、大まかなアーキテクチャは以下の図のようになっています。

wav2vec 2.0

音声信号から潜在表現に畳み込むCNNエンコーダ部分と、潜在表現から文脈表現を得るtransformerエンコーダ部分からなっています。

wav2vec 2.0は従来の音声認識モデルと違い教師あり学習に加え、自己教師あり学習も取り入れています。自己教師あり学習ではオリジナルの音声と変更を加えたバージョンのいずれかを選択させ、モデルをトレーニングします。 考え方としてはContrastive Learningが近いかもしれません。これにより音声のラベル付きデータが少なくても、ラベル無しデータから音声の特徴を学習しラベル付きデータでファインチューンを施す事で高い精度を得られるためです。

そして、少量のラベル付きデータを用いて、このモデルをファインチューニングすることで、実際に使用するテキスト情報に高い精度で変換可能にしています。

実際に日本語で学習させる

環境は全てGoogle colaboratory proを使用しています。 データセットはcommon voiceからとってきました。notebookは こちら の実装を参考にして、日本語ラベルを全てローマ字に変換しました。 日本語ラベルは、そのままひらがなに変換したものを使用した場合も学習させてみましたが、 発音に近いローマ字のほうが精度が高かったのでローマ字で進めています。 学習済モデルはfacebookが公開している53の言語で学習している物を使用し
train: 2193 valid: 632 の日本語データセットで学習させました。パラメータは
batch size: 8
gradient accumulation: 4
learning rate: 5e-4
学習速度はtesla p100使用時0.34step/sほどで、2000stepまで1時間40分でした。

| step | train loss | valid loss | |

aoki masataka

aoki masataka

Fusicでインターンをしています。