RevComm Tech Blog

コミュニケーションを再発明し 人が人を想う社会を創る

Whisperの音声認識精度および認識速度の検証

TL;DR🤩

  • 音声認識器Whisperの認識精度と認識速度について調査
  • 認識精度
    • 英語では論文同様の結果
    • 日本語の認識精度はドメインに依存
      • baseモデルの推論がドメインにより不安定
        • ビームサーチの利用により、推論の頑健性が向上
      • largeモデルのCERはbaseモデルの半分程度
  • 認識速度
    • baseモデルのRTFはGPUで0.104 largeのRTFは0.408
      • バッチサイズなどを最適化することで改善

こんにちは。RevCommのリサーチチームでインターンをしている中田亘です。 2022年9月21日にOpenAIからWhisperと呼ばれる音声認識器が一般に公開されました。今回は、Whisperの性能に関して調査を行ったので紹介します。

Whisperとは

Whisperは、OpenAIが発表した「Robust Speech Recognition via Large-Scale Weak Supervision」で提案された音声認識器です。従来の音声認識器は数千から数万時間の音声データで学習したものが主流でしたが、Whisperは68万時間もの音声データをWeb上から収集し、Transformerで学習しているところが大きな特徴です。また、学習の際には音声認識に限らず、翻訳、VAD(音声区間検出)、アライメントなどの様々なタスクで学習されています。これにより、様々な用途に適用可能な汎用モデルが学習できていると報告されています。今回は、Whisperの音声認識の性能に焦点を当て、調査を行いました。

実験と結果

実験では、AWS上にCPUインスタンス・GPUインスタンスを構築し、OpenAIが提供しているbaseモデルおよびlargeモデルの認識精度・認識速度について調査を行いました。

実験条件

特筆しない限り、実験条件は下表の通りです。

EC2インスタンス CPU: c5.9xlarge (36CPU) 推論には32CPUを使用

GPU: g4dn.xlarge (4CPU, NVIDIA T4 16GB VRAM)

認識精度テストセット 英語
認識速度テストセット
  • revcomm-video (revcomm-test-setのうち、ビデオ会議音声のサブセット 日本語8.5時間)
バッチサイズ 1
デコーディング手法 貪欲法
テキストの正規化 英語: Whisper公式実装で使用されている手法

日本語: 句読点除去

認識精度

Whisperの推論をGPUインスタンスで行い、その認識精度について調査しました。

英語でのWER

英語では、baseモデルおよびlargeモデルのword error rate(WER; 単語誤り率)を調査しました。

LibriSpeech test-clean test-other

図1 LibriSpeech test-clean test-otherにおけるbase, base.en, largeモデルによる推論結果のWER
まず、図1にLibriSpeech test-clean, test-otherにおける結果を示します。この結果は、論文で示されている結果と一致しています。(論文 Appendix D.1.1参照)WERの傾向としてbase > base.en > largeが確認されました。

Earnings-21

図2 Earnings21におけるbase, largeによる推論結果のWER
次にEarning-21における結果を図2に示します。Earnings-21は数十分の単一音声ファイルからなります。一方で、Whisperは30秒以下の音声で学習しているため、通常の推論は行えません。この問題に対して、論文では音声にを適用して30秒に切った後に、認識結果に応じて窓をスライドさせる手法が使用されています(論文 3.8節参照)。Earnings-21でのWERですが、論文に示されているものより少し悪い結果となっています。原因としては、テキスト標準化手法の違いなどが考えられます。

日本語でのCER

日本語では、largeモデルおよびbaseモデル双方のcharacter error rate(CER; 文字誤り率)を調査しました。

base, largeの比較

図3 各日本語テストセットにおけるbaseモデル、largeモデルの性能
まず、各日本語テストセットにおける性能を図3に示します。こちらに関してもbaseモデルに比べlargeモデルが優れた性能を示しています。TEDとCommon Voiceに注目してみると、baseモデルのCERは低くないものの、largeモデルのCERはかなり低くなっています。一方でrevcomm-test-setに関しては、base、 largeともに非常に悪い認識精度となっています。baseモデルの認識結果を確認してみると、以下のような結果が散見されました。

おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで、おかげで

これはTransformerなどの自己回帰型モデルで時折発生する、リピーティング(繰り返し)という現象です。revcomm-test-setのドメインがWhisperの学習に使用されたドメインと異なるため、出力が不安定になっていると考えられます。これに関しては、ビームサーチの利用により大幅にCERが改善することを後ほど紹介します。

論文では、日本語のCommon Voice9においてCERが0.094、日本語のFLEURSにおいてCERが0.064と報告されていますが、我々が用いたテストセットのうち、特にrevcomm-test-setの認識精度では論文中にあるような低いCERにはなりませんでした。

他のシステムとの比較

広く一般に音声認識サービスを展開している他社の音声認識器を用いて、TEDとCommon VoiceにおいてCERの比較を行いました。図4-6 に、他社の音声認識器とbaseモデル (whisper-base) 、largeモデル (whisper-large) の比較結果を示します。

図4 TEDにおけるbaseモデル、largeモデルおよび他社の音声認識機の比較
図5 CommonVoiceにおけるbaseモデル、largeモデルおよび他社の音声認識機の比較
図6 縦軸をCommonVoice横軸をTEDのCERとした他社の音声認識機の比較

この結果をみると、whisper-baseの性能は奮わないものの、whisper-largeがTED・Common Voiceの双方において優れた性能を示しています。日本語のASRをしたい時に、whisper-largeは有力な選択肢であると言えるでしょう。

revcomm-test-setにおけるビームサーチ利用の効果

先ほど、revcomm-test-setにおいてCERが非常に悪くなる結果を紹介しました。この結果を踏まえて、デコーディング手法にビームサーチを利用することで認識精度が改善しないか検討を行いました。結果を図7に示します。

図7 ビームサーチ利用によるrevcomm-test-setにおけるCERの変化

図7の結果を見ると、baseモデルでは貪欲法 (greedy) と比較して、ビームサーチを利用することによりCERが大幅に改善していることが確認できます。推論結果を見ても、先ほどのようなリピーティングはほとんど確認されず、推論の頑健性が向上していることが確認できました。このことから、baseモデルを用いたrevcomm-test-setの推論において、ビームサーチの利用がかなり有効であると言えます。一方で、largeモデルに関しては、改善はしているもののbaseモデルのような大幅な改善は見られませんでした。

ビームサイズ=2の時のlargeモデルの出力を確認してみると、以下のようなものが確認されました。

正解文 Whisper largeモデルによる認識結果

(ビームサイズ 2)

あのーまあこちらーどういう風に使うかっていうとこなんですけどもーあの実はーここあのヒートマップになってて色が濃いところっていうのはー電話がこう通じた時通電した時はーあのこう色がどんどん濃くなっていう感じ回数が多くなった こちらはどういうふうに使うかというところなんですけども、実はここヒートマップになっていて色が濃いところというのは電話が通じたとき、通電したときは色がどんどん濃くなっていく。回数が多くなる。

この例からは、「あのー」「まあ」などの言いよどみ(フィラー)が、whisper-largeの認識結果に含まれていないことが確認できます。これは、whisperの学習に用いられたデータセットにフィラーがほとんど含まれておらず、推論結果にフィラーが含まれにくくなっているためと推測されます。一方で、revcomm-test-setの正解文は、通話音声やビデオ会議の発話を聞こえたとおりに書き起こしたものであり、フィラーが多く含まれます。フィラーを書き起こしていないことが、CERのボトルネックとなっていると考えられます。

認識速度

認識速度に関しては、revcomm-test-setのサブセットであるrevcomm-videoの推論におけるreal time factor (RTF) を調査しました。RTFは以下の式で求められます。

 
\text{RTF} = \dfrac{\text{認識にかかった時間 [秒] }}{\text{認識した音声の時間 [秒] }}

本記事では、inferとglobalの2種類のRTFを調査しました。それぞれ定義は以下のとおりです。

  • infer: モデルの順伝播のみにかかった時間
  • global : 音声のデコード、メルスペクトログラム生成などの推論に必要な処理すべてを合計した時間

注意点: 今回の推論では、全ての音声を30秒にゼロパディングしています。これは、Whisper公式実装では、30秒以外の音声は入力できないようになっているためです。

モデルごとのRTF

図8 CPUインスタンス、GPUインスタンスにおけるbaseモデル、largeモデルの認識速度
CPUインスタンス、GPUインスタンスにおける各モデルのRTFを図8に示します。まず、GPUでの推論により大幅にRTFが改善することが分かります。特にlargeモデルでは、globalにおいてGPUインスタンスを利用することにより2.483から0.408へと改善しています。

また、GPUではinferとglobalでRTFが大きく異なることが確認されました。これは、CPUでデコードした音声をGPUに移動させる際の通信などが原因となっていると考えられます。こういった通信のオーバーヘッドは、処理を非同期化することにより改善できる可能性があります。

baseモデルにおけるバッチサイズによるRTFの変化

以上の実験ではバッチサイズを1としていましたが、GPUでのbaseモデル推論においてGPUの使用率を確認したところ40%程度であり、GPUの能力を最大限に利用できていませんでした。バッチサイズをより大きくすれば、さらに効率よく推論をできるのではと考え、バッチサイズによるRTFの変化を調査しました。結果を図9に示します。

図9 バッチサイズによるRTFの変化

結果から、バッチサイズ8程度が一番効率よく推論が行えることが確認できました。ただし、処理の非同期化などにより最適なバッチサイズは変化すると思われます。

ビームサイズによるRTFの変化

先ほどビームサーチの利用により、ドメインにより不安定なbaseモデルの推論がより頑健になることを紹介しました。一方で、ビームサーチを使用することにより処理が増えるため推論時間が長くなると考えられます。そこで、ビームサーチを使用することでどの程度処理時間が増えるかを調査しました。なお、推論はGPUインスタンスで行いました。結果を図10に示します。

図10 ビームサイズによるRTFの変化
まず、全体の傾向としてビームサイズが大きいほど、RTFが大きくなることが確認できます。また、面白い結果として、baseモデルのglobalに関してビームサーチ利用によりRTFが改善されていることが確認できます。これは、ビームサーチを使用することによってリピーティングが改善され、Whisperの出力token長が短くなったためにRTFが改善していると推測されます。

まとめ

Whisperの認識精度および認識速度について調査を行い、結果を紹介しました。

認識精度に関しては、英語ではおおむね論文通りの結果が確認されました。一方で、日本語の認識精度については、特にRevComm内製のテストセットによる評価について、論文で示されているほど低いCERにはなりませんでした。Whisperの音声認識結果にはフィラーがほとんど入らないため、対話音声におけるフィラーを聞こえたとおりに書き起こしたテキストを正解とした評価では、CERが大きな値となることがあるようです。また、baseモデルの推論において、ドメインによってはビームサーチが極めて効果的であることも確認されました。

認識速度に関してはGPUの利用が非常に効果的であることが確認された一方で、GPU利用により順伝播以外の時間が増えることが確認されました。これはCPU-GPU間のデータの移動に時間がかかっていると推測されます。