Simple Audio Recognition①(背景知識の整理)|音声認識(Audio Recognition)のトレンドを追う #1

f:id:lib-arts:20190613113212p:plain

下記の記事でSimple Audio Recognitionについて取り扱ったのですが、背景知識やさらなるトレンドも含めると2回じゃまとまりきらなそうだったので、音声認識(Audio Recognition)のシリーズとして別途開始することにしました。

#1では、上記で動かしたSimple Audio Recognitionの動作結果を振り返りながら、実装にあたっての背景知識の整理を行えればと思います。
以下目次になります。
1. Simple Audio Recognitionの動作結果の振り返り
2. 参照論文の確認
2-1. Simple Audio Recognitionの言及と参照論文の概要
2-2. KWSタスクについて
2-3. DNN(MLP)、CNNを用いたAudio Recognitionの学習
3. まとめ


1. Simple Audio Recognitionの動作結果の振り返り

f:id:lib-arts:20190607195923p:plain

Simple Audio Recognition  |  TensorFlow Core  |  TensorFlow
Simple Audio Recognitionでは上記を元に12クラスのカテゴリ分類を行なっています。

$ python tensorflow/examples/speech_commands/train.py

でライブラリを実行することにより、18,000ステップの学習が走ります。

f:id:lib-arts:20190607221718p:plain
上記で学習が終わったのちに下記を実行することで学習結果をコンパクトなモデル形式に変換し、かつ推論を行うことができます。

f:id:lib-arts:20190613112848p:plain
ここまでで、以前の記事の振り返りができたので、1節はここまでとし、2節はこの実装の裏で動いている仕組みの把握として、参照論文の確認を行います。


2. 参照論文の確認
2-1. Simple Audio Recognitionの言及と参照論文の概要

f:id:lib-arts:20190613114904p:plain
モデルのアーキテクチャに関しては上記の"How does this Model Work?"で言及されています。ここは重要だと思われるので簡単に訳しておきます。

The architecture used in this tutorial is based on some described in the paper Convolutional Neural Networks for Small-footprint Keyword Spotting. It was chosen because it's comparatively simple, quick to train, and easy to understand, rather than being state of the art. There are lots of different approaches to building neural network models to work with audio, including recurrent networks or dilated (atrous) convolutions. This tutorial is based on the kind of convolutional network that will feel very familiar to anyone who's worked with image recognition. That may seem surprising at first though, since audio is inherently a one-dimensional continuous signal across time, not a 2D spatial problem.

和訳:『このチュートリアルで用いられているニューラルネットワークの構造は、"Small-footprint Keyword Spottingに対するCNN"という論文で言及されています。こちらを採用した理由はSOTAというよりはむしろ、比較的シンプルで学習が早く、理解しやすいという理由です。音声データに適したニューラルネットワークモデルの構築に当たっては、RNNやdilated convolutionなどたくさんのアプローチがあります。このチュートリアルは画像認識に取り組んでいる人にとっては非常に馴染み深く感じるCNNの一種に基づいています。音声データは時間に対する一次元の連続的な信号で二次元の空間の問題ではないので、これについては最初驚きを感じるかもしれません。』
ここで、"Convolutional Neural Networks for Small-footprint Keyword Spotting"は下記の論文を参照しています。

https://www.isca-speech.org/archive/interspeech_2015/papers/i15_1478.pdf
したがって実装を読む前にこちらで概要をつかむのが良さそうです。概要をつかむにあたり、まずはAbstractを簡単に和訳しておきます。

We explore using Convolutional Neural Networks (CNNs) for a small-footprint keyword spotting (KWS) task. CNNs are attractive for KWS since they have been shown to outperform DNNs with far fewer parameters. We consider two different applications in our work, one where we limit the number of multiplications of the KWS system, and another where we limit the number of parameters. We present new CNN architectures to address the constraints of each applications. We find that the CNN architectures offer between a 27-44% relative improvement in false reject rate compared to a DNN, while fitting into the constraints of each application.

和訳:『我々はCNNをKWSタスクに用いることを研究した。CNNはDNN(ここではMLPのこと)よりもずっと少ないパラメータで精度的に上回ると示してきたので、KWSタスクへの応用も非常に魅力的に思われる。我々は2つの異なる応用について考慮し、一つはKWSシステムの乗数の数の制限、もう一つはパラメータ数の制限である。我々はそれぞれの応用においての制約に取り組むための新しいCNNのネットワーク構造を提案した。我々はCNNがそれぞれの制約に適応しながらDNNに比較して27~44%の相対的な向上を実現することを示す。』

 

2-2. KWSタスクについて
2-2節ではKWS(Keyword Spotting)タスクについてまとめていきます。参照している論文に言及が見当たらなかったので、Wikipediaを元に概要の解説を行います。

f:id:lib-arts:20190613172526p:plain

Keyword spotting - Wikipedia
概要をつかむにあたって以下簡単に和訳します。

Keyword spotting (or more simply, word spotting) is a problem that was historically first defined in the context of speech processing. In speech processing, keyword spotting deals with the identification of keywords in utterances.

和訳:『Keyword spottingは発話処理の文脈で定義された歴史的に初の問題です。発話処理においてKeyword spottingは発話におけるキーワードの出現を取り扱います。』
上記を確認した感じだと、KWSは具体的なタスクセットについての言及というよりは音声データにキーワードを割り当てるタスクセットの総称を指しているように思われます。
チュートリアルでは"Speech Commands dataset"から、"yes", "no", "up", "down", "left", "right", "on", "off", "stop", "go"と、何もない、"unknown"の12カテゴリ分類問題を解いています。
このように音声データにキーワードを割り当てるのがKWSタスクだと考えておくと良さそうです。


2-3. DNN(MLP)、CNNを用いたAudio Recognitionの学習
DNNについては論文のSection2のKeyword Spotting Taskのところで言及がなされています。

f:id:lib-arts:20190613113212p:plain
処理概要については上記でまとまっていますが、(ⅰ)log-mel filterbankを用いた特徴抽出、(ⅱ)3層で128の隠れ層を持ったMLP(ベースライン)、(ⅲ)事後分布を用いた推論の三つが主なプロセスとされています。
上記を元に行った従来のアプローチに対し、CNNで行ったアプローチを比較した論文をSimple Audio Recognitionは参照しています。Section3.1の図で処理概要について触れられています。

f:id:lib-arts:20190613175841p:plain
時間(t; time)と特徴量(f; feature)のデータに対し畳み込み処理を行っています。音声データなのでfが周波数(frequency)と勘違いしないように注意が必要です。Section3.2ではDNNのアプローチと同様にlog-mel filterbankについて言及し話を進めていることから、同様のものだと考えておくと良さそうです。
音素特徴量を抽出し、DNNやCNNのアルゴリズムを適用しているとざっくり捉えておくと良さそうでした。


3. まとめ
#1ではTensorFlowチュートリアルのSimple Audio Recognitionのドキュメントに関連して、KWSタスクやDNN(MLP)やCNNを用いたアプローチについてまとめました。
#2では、今回特徴量抽出に用いていたMFCC(Mel-Frequency Cepstrum Coefficients)について確認していければと思います。