はじめに
ちゃお・・・†
Google Chromeに音声認識機能があることはご存知でしょうか?わたしは最近、音声認識の研究のベースラインとしてそのGoogle Chromeの音声認識器の精度をはかりました。
結果から言うと2019年9月時点では、日本語話し言葉コーパス (CSJ) のcoreデータでのWord error rate (WER) は0.2251でした (トークナイズにその当時のmecab-ipadic-neologdを使用)
そのついでに、そのときに書いたコードを置くGitHubリポジトリを作りました。
以降はCSJのデータでGoogle Chromeの音声認識の精度をはかる方法を記します。
必要なもの
- Google Chrome
- 日本語話し言葉コーパス (CSJ)
- USBオーディオキャプチャー的なもの
- Python 3とその依存パッケージ
- MeCab
- SoX (Windowsの場合)
- alsa-utils or sox (Ubuntuの場合)
どうやるか
リポジトリ内READMEの拙い英文のとおりなのですが、簡単に書くと以下のとおりです。
- CSJのwavファイルを転記基本単位ごとに1つずつ切り分ける
- Flask (Python用Webアプリケーションフレームワーク) を用いた簡易Webサーバーを立ち上げる
- Google ChromeでFlaskサーバーにアクセスしてGoogle Chromeの音声認識機能をONにする
- 手順1で作ったwavファイルたちを順番に再生する
- FlaskサーバーのページのJavaScriptから音声認識結果をファイルに書き出す
- CSJのトランスクリプション (正解データ) と音声認識結果との単語誤り率 (WER) をはかる
なお、手順4に行く前に上の画像のようにUSBオーディオキャプチャー的なものでパソコンのUSBポートとイヤフォンジャックを繋ぐ必要があります。ちなみに、わたしはデジ造音楽版を使いました。
それと手順4はWindowsではsox
コマンドを使っていて、soxコマンドの導入は一手間かかるのでこちらを参考にするとよいと思います。 https://qiita.com/teteyateiya/items/e4dc27e384d947b9946d
できたらいいなってこと
- WER以外の評価尺度の対応
- Google Chrome以外の日本語音声認識器との比較 (お金と手間のかからないものだとうれしいです) (Juliusの音声認識パッケージのモデルはCSJを含めたデータから作られているようなのでCSJのデータで評価するのは不適切?)
- SoX on Windowsでの発話の最初と最後が省略されてしまう問題の解決あるいは代替案
- ネイティブLinux環境での動作確認 (わたしの手元にはDockerとWSLしかありません)
もしcontributeしてくださる方がいればPull requestウェルカムです!