その音声認識精度は本当に正しいのか?
安藤章悟
みなさま こんにちは。
以前の記事で、AmiVoice Cloud Platform( https://acp.amivoice.com/ )とGoogle Cloud Speech-to-Textを使って音声認識精度(音声認識率)を計測してみました。
AmiVoice Cloud Platform-Tech Blog
結果はこうでした。
エンジン | 音声認識精度 |
---|---|
AmiVoice Cloud Platform | 96.93% |
Google Cloud Speech-to-Text | 96.15% |
さて、これを見てどう思うでしょうか?AmiVoiceの勝利!AmiVoice最高!AmiVoiceしか勝たん!とAmiVoiceの中の人としては言いたいところですが、その判断はとても軽率です。
何故かというと、たった2人が延べ43.5秒だけ喋っただけの音声なので、これだけで比較しても「たまたまAmiVoiceの方がよかっただけ」という可能性が高いからです。 今回はそういった音声認識精度を計測する時に気をつけるべきさまざまな要素について説明します。
音声認識精度を計測する時に気をつけること
基本的な考え方
音声認識精度計測用のテストセットを作る時の考え方ですが、下記の2点を考慮するとよいでしょう。
- 実際に音声認識が使われるシーンを想定し、話者・周辺環境・デバイス・喋る内容・使い方等を、なるべくそのシーンと近いものにする
- なるべく多くの音声からテストセットを作る
例えばコールセンターの通話を音声認識するとしたら、その通話をする人(オペレータや顧客)が、その通話をするデバイス(ヘッドセットや受話器、スマートホン)で、通話されるのと同じ内容の会話をした音声を使って音声認識精度を計測することが望ましいです。
より正確に計測したい時に考えるべきこと
まずは上記の基本を意識すればいいですが、より正確な計測をしたい時は、下記の要素について考慮するとさらによくなります。
音声量は適切か?
まずは音声量についてです。音声量というのは、テストセット音声のファイル数や合計の長さのことです。基本的に音声量は多ければ多いほど良い(音声認識精度が正確に計測できる)です*1。 逆に少ない音声量だとたまたま良い値・悪い値が出たりするので、正しい計測になりません。大数の法則というやつです。
どのくらいの量があればいいかというと、内容のバリエーションの広さにもよります。例えば「はい」または「いいえ」しか喋らない内容のテストセットでしたら数百発話もあれば十分でしょう。 ただ、自由に世間話をするようなテストセットだともっと多くの量が必要になります。 アドバンスト・メディアでは音声量に明確な基準はありませんが、慣例として2時間以上を目安にすることが多いです。
話者の人数は適切か?
次に話者についてです。これも多人数の方が良い(正確になる)です。
仮に話者が1人の場合、たまたまその人の喋り方が音声認識しやすいものだと、音声認識精度の数値が実態よりも高く計測されてしまうかもしれません。 アドバンスト・メディアではテストセットの人数に特に明確な基準があるわけではないのですが、私の周辺では最低7人以上というのをおおまかな目安にしています。
また、男女比・年齢分布に関しても、音声認識の用途の対象ユーザーがどのような人たちか?を考えて、そのユーザー分布になるべく近い形にすることが好ましいです。
また、1人あたりの音声量に大きなバラツキがないかどうかも気をつけた方がいいです*2。 あまりに偏りがひどいと正しい計測にならないので注意しましょう。
喋る内容は適切か?
次に喋る内容についてです。喋る内容は、実際の音声認識利用シーンで利用者が喋りそうなことがなるべく網羅されていることが好ましいです。
例えばコールセンターの通話音声の音声認識精度を計測するとして、そのコールセンターが注文受付専用でしたら注文の通話だけでいいですが、もしも商品の問い合わせも受けているならその内容もテストセットに含めた方がより良いです。
もしも季節要因で会話の内容が大きく変わるようなコールセンターでしたら、なるべくテストセットとする音声の収録時期も分散させた方がいいかもしれません*3。
喋り方は適切か?
喋り方は、実際の利用シーンでの利用者の喋り方と同等の音声を使うことが好ましいです。
よくあるテストセットの作り方で「あらかじめ原稿を用意してそれを読み上げる」というケースがあります。 これは実はあまりよくない方法で、演者が実際の利用シーンよりも活舌良くはっきりと発声してしてしまい、結果として音声認識精度が実態よりも高く計測されてしまうことがあります。ですので、なるべくリアルな現場の音声に近いものを収録した方が好ましいです。
録音環境・録音デバイスは適切か?
録音環境や録音デバイスも、実際のシステムが録音するのと同一または同等のものにしましょう。
例えばカーナビで使う音声認識だとしたら、車内環境で音声を収録するべきです。また、使うシーンを考えて、走行中・停車中、窓が開いている場合・閉まっている場合、などさまざまなバリエーションも検討した方がいいでしょう。
また、録音するデバイスや録音方法も同一にするべきです。たまにやってしまう良くないやり方が、実際のシステムではマイクや専用の録音機器を使用するのに、認識精度を計測する時だけはICレコーダー等で録音してしまうというケースです。ICレコーダーだと話者とマイクの距離が離れてしまいがちで、周辺の雑音や他人の声が入りやすくなり認識精度が落ちやすい傾向にありますので注意が必要です。
ビジネス的な観点
ここまでさまざまな要素について説明してきましたが、これらは「なるべく正確な音声認識精度を計測する」ための、ある種の理想論です。 実際は下記のような要因で、これらの要素全てを遵守することができないケースも多いです。
- コスト・期間的に大量の音声の収集・計測が難しい
- まだサービス開始前なので、実際の利用者の音声が取得できない
- セキュリティやコンプライアンス等の理由により、音声を保存していない(保存できない)
また、実際はそこまで厳密に音声認識精度を計測したいわけではなく、例えば「ざっくりと85%くらいなのか、90%くらいなのかを知りたい」のようなケースも多いです。
ですので、すべてを完璧にやるよりも、ビジネス要件に合わせてどこを重視するか明確にして、どのようなテストセットを作るかを設計していくことが重要です。
さいごに
以上、音声認識精度を計測する時に気をつける要素について説明しました*4。
実際のところアドバンスト・メディアでは常に上記の要素すべてが完璧な状態でテストセットを設計しているわけではなく、そうではないケースの方が多いと思います。 あくまでこういう考え方があるという捉え方をして頂いた上で、要件に応じたテストセット設計をしてもらえると幸いです。
もしも、この記事を見て音声認識技術やAmiVoice Cloud Platformに興味を持った開発者の方は、是非 https://acp.amivoice.com/ を試してみてください。毎月音声60分までは無料で使えますので是非ともよろしくお願いします。
この記事を書いた人
-
安藤章悟
音声認識の研究をしていたら、近所に音声認識屋を見つけてしまい入社。今に至る。
趣味は海外旅行と美味しいものを食べることとサウナ。
*1:音声の中身の大部分が音声認識精度計測対象となる人の発話であるという前提です。その人の発話以外(雑音等)が多いテストセットでは無意味になるので注意してください。過去にコールセンター通話のテストセットを用意したらその内訳の結構な割合が保留音だった経験がありますが、これは不適切です。
*2:過去に、20人の音声で5時間分あるから十分だろうと思っていたら、その音声のほとんどが1人が喋ったものだった、というような経験があります。もちろんこれは不適切なケースです。
*3:実際のところ、コールセンターはものすごく多種多様な用件を受け付けていることが多く、それらをすべてカバーするテストセットを作ることは非現実的な場合があります。そういった場合は十分な音声量(例えば2時間)の通話をランダムに抽出してテストセットを作ることでほぼほぼカバーできているだろうと判断することもあります。
*4:実は、今回の内容を踏まえた上で大型のテストセットでAmiVoiceとGoogleを比較する実験をしようと思ったのですが、情報セキュリティの観点によりGoogleに大量のテストセットを投入することが難しく断念しました。どこかで良いテストセットがあればやってみたいですね。