ESPnet: End-to-End 音声処理ツールキット
Interspeech 2018にて、Johns Hopkins大学の渡部先生、MERL (米国三菱電機の研究所) の堀氏、NTT CS研の苅田氏、レトリバの西鳥羽氏、PFNの海野氏らが開発し、発表したEnd-to-Endの音声認識を行うツールキット。
- 出典: ESPnet: End-to-End Speech Processing Toolkit
- 参考スライド: https://www.slideshare.net/JiroNishitoba/20180609-chainer-meetupespnet
- Github: https://github.com/espnet/espnet
概要
ESPnet (End-to-end speech processing toolkit) は、オープンソース(Apache ライセンス)で公開している、音声処理フレームワークで、特に音声認識 (Automatic Speech Recognition, ASR) にフォーカスしている。主にPythonで開発されており、ディープラーニングのエンジンには、PyTorchとChainerを用いており、Kaldiスタイルの処理にも対応している。本論文では、ソフトウェアのアーキテクチャと機能、他のツールキットとのベンチマーク比較を紹介する。
はじめに
これまで開発されたオープンソースの音声認識製品には、Kaldi [1], HTK [2], Sphinx [3], Julius [4], RASR [5]がある。それらは、特徴量の抽出、GMM-HMMやDNNを用いた音響モデルとそのデコード機能を持っていて、音声認識における最先端の研究結果を利用できるようになっている。
ESPnetは、End-to-Endのニューラルネットワークベースで実装されており、DNN/HMMベースのこれまでの実装とは一線を画している。コアエンジンには、connectionist temporal classification (CTC)と、attention-based encoder-decoder networkの2つの利点を活用している。音響フレームから音素へのアライメントにAttentionベースの手法を使っていて、マルコフ仮定を使ったCTCで動的計画法を用いてシーケンシャル問題を効率よく計算している。
訓練とデコードを効率よく行うために、Hybrid CTC/Attentionを実装している。さらに、Deep Speech 2 の論文で紹介されているRNNLM[17]とWarp-CTCを使ったFastCTC[12]の方法を組み合わせた方法を実装している。
ベンチマーク用のレシピとして、以下を実装済み。
- Wall Street Journal (WSJ) [18]
- Librispeech [19]
- TED-LIUM [20]
- Corpus of Spontaneous Japanese (CSJ) [21]
- AMI [22]
- HKUST Mandarin CTS [23]
- VoxForge [24]
- CHiME-4/5 [25, 26] など
関連した研究
End-to-Endの音声認識エンジンには以下の方式に分けられる。ESPnetは、Attention-basedに分類されるが、Hybrid CTC/Attentionを持っている特徴がある。
- CTC-based
- EESEN [11]
- Stanford CTC [28]
- Baidu Deepspeech[12]
- Attention-based
- Attention-LVCSR [29]
- OpenNMT speech to text [30]
- ESPnet
実装されている機能
ソフトウェアアーキテクチャは以下となる。PyTorchを使うかChainerを使うかは、オプションで選択できる。
主要な機能は以下。
- エンコーダ
- デコーダはデフォルトで、Listen, Attend and and Spell(LAS) 論文の Pyramid BLSTM[15](BLSTMにサブサンプリング機能を設けたもの)となっている。
- Chainerバックグラウンドの場合、VGG2も利用可能(多くの場合、こちらのほうが性能が良い)
- Attention (注意機構)について、ESPnetでは、location-aware attentionをデフォルトで採用している。また、dot product attentionにも対応している。location-aware attentionはより性能が良いが、dot product attentionは計算コストの点でメリットがある。また、PyTorchベースのものは、11種類以上の評価機構が利用可能
- Hybrid CTC/Attention を訓練とデコードの両方に活用している。訓練では、Multiobjective trainingとして、CTCの結果とAttentionベースの方法を組み合わせている。そしてその重みはαとして調整できる。オーバーフィッティングを避けるためにラベルをスムーズ化する技術(unigram smoothing)を実装している。デコーディングにおいては、CTCの結果とAttentionベースの結果をone-pass beam-search[17]で行っている。
- 言語モデル
- ESPnetでは、RNNLMで計算された確率の対数を結合して使っている。
- Kaldiベースのレシピ
- 以下図のように、6つのステップで実行される。
- Stage 0: Kaldiのディレクトリフォーマットでデータの前処理をする。
- Stage 1: 特徴量の抽出。多くのレシピでは80次元のMEL特徴量にピッチを加えた83次元を作成する。
- Stage 2: ESPnet用のデータ前処理。Kaldiのフォーマットのディレクトリで格納されていたディレクトリ情報をdata.jsonにまとめる。
- Stage 3: 言語モデルのトレーニング。RNNLMをChainerまたはPyTorchで訓練する。(オプション)
- Stage 4: End-to-End の学習。Hybrid CTC/Attention encoder-decoderをChainerまたはPyTorchを用いて学習する。
- Stage 5: 認識。RNNLMとEnd-to-Endモデルで認識させる。
- コードの行数では、ESPnetが最も少ない。(ただし、他に実装されているリアルタイム機能はESPnetには存在しない)
- Kaldi: 330K(C++)
- Julius: 60K(C)
- ESPnet: 5.4K(Python)
評価
- WSJ(Wall Street Journalのデータセット)のタスクを利用して、CER, WER, 学習時間を比較した。利用している言語モデルなど、条件が違うので対等に比較できないが、GMM-HMMの方法に劣らない結果が出ている事がわかる。
- WSJ(Wall Street Journalのデータセット)では、HMM/DMMで5%以下のWER(単語誤り率)を達成しているのに対して、それを達成できていないのは今後の課題。(学習用データや計算用リソースが不足しているのが原因の可能性はある)

- CSJ(日本語話し言葉コーパス)でCER(文字誤り率)を測定した。CSJでは、HMM/DNNを利用しているKaldiより良い精度となった。

Leave a comment