音声処理で参考になったサイトまとめ

# これなあに？
先週は[強化学習の勉強会](http://qiita.com/eve_yk/items/2ace6d4c1dad7e912df1)をしました。
今週は音声処理の勉強会をやるぞということになって僕はまた焦って資料をかき集めました。

この記事は音声処理の勉強会を行うにあたって、参考になったサイト、もしくは情報をまとめたものです。
勉強会で共有するために作ったけどせっかくだしあげておくことにしました。
読んだ感想や要点なんかも簡単にまとめれたらと思います。
特に参考になった記事、重要だと思った記事には★マークをつけておきます。

僕自身が音声処理初心者ということ、短い時間でまとめたことから誤りや不適切な点があるかもしれません。
その場合は指摘していただけると幸いです。

## 理論解説
基礎の基礎を勉強する勉強会だったので入門記事多め。
あんまりちゃんと読んでないものもあります…。

### [音声の音響分析の「いろは」～初めて音声波形を見る方へ～](http://www.gavo.t.u-tokyo.ac.jp/~mine/japanese/acoustics/lecture-02.pdf)★
東京大学の授業のスライド？
そもそも"音"や"声"はどのようなものなのか、どのように生まれるのかなどの初歩の初歩から説明があるため、入門に最適だと思った。
スペクトルの概念もここで理解した。  
  
### [音声認識を紹介するページ](http://recognition.web.fc2.com/)★
音声波形からなんと話しているかを認識する「音声認識」についての解説記事。
難しいところは全部すっとばして「どのようなことをするのか」に集中して書かれているため、すんなりと読める。
とにかく概要だけでも把握したい、という場合はベストな記事だと思う。

### [音楽アプリのための音声解析入門](http://qiita.com/icoxfog417/items/d376200407e97ce29ee5)
強化学習編でもお世話になった[icoxfog417](http://qiita.com/icoxfog417)さんの記事。
音声解析を基礎から解説している。
三角関数やフーリエ変換ががんがんでてくるので数式アレルギーには辛いが、それくらいの基礎知識は必要になるということだと理解した。

### [DNN音響モデルにおける特徴量抽出の諸相](http://www.slideshare.net/tyoshioka/2015-51047277)
Deep Learningを用いて音声から特徴量を抽出するアプローチのまとめスライド。
イラストたくさんで概要の把握が容易だし、色合いも綺麗。
こんなスライドが作れるようになりたい。    

### [基本周波数についてのまとめ](http://tam5917.hatenablog.com/entry/2015/03/05/214305)
音声処理に置いて重要な概念(らしい)である基本周波数についてのまとめ。
あまり読んでない...

### [やる夫で学ぶディジタル信号処理](http://www.ic.is.tohoku.ac.jp/~swk/lecture/yaruodsp/main.html)★
信号処理に必要となるフーリエ変換やサンプリング定理などを解説している連載記事。
解説は対話形式で進み、人によっては非常に理解しやすいものだと思う。
解説自体もとても丁寧に感じた。「このためにこれをするんだ」といった背景の説明や技術の必要性の理由づけがあるのがとても良いと思った。

### [HMM:隠れマルコフモデル](http://www.iba.t.u-tokyo.ac.jp/~iba/SE/HMM/HMM.pdf)
音声処理には直接関係ないけれど、音声認識の要素技術である隠れマルコフモデルの解説スライド。
隠れマルコフモデルは[wikiの記事](https://ja.wikipedia.org/wiki/%E9%9A%A0%E3%82%8C%E3%83%9E%E3%83%AB%E3%82%B3%E3%83%95%E3%83%A2%E3%83%87%E3%83%AB)も非常にわかりやすくておすすめ。


## 書籍・論文
書籍や論文で勉強できるようになりたい。
論文はできるだけ最近のものを。

### [イラストで学ぶ 音声認識](https://www.amazon.co.jp/%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E3%81%A7%E5%AD%A6%E3%81%B6-%E9%9F%B3%E5%A3%B0%E8%AA%8D%E8%AD%98-KS%E6%83%85%E5%A0%B1%E7%A7%91%E5%AD%A6%E5%B0%82%E9%96%80%E6%9B%B8-%E8%8D%92%E6%9C%A8-%E9%9B%85%E5%BC%98/dp/4061538241/)
イラストなのでとても理解しやすい。
意外と最近の技術についても解説されているらしい。

### [音声言語処理と自然言語処理](http://www.coronasha.co.jp/np/isbn/9784339024692/)
母校の教授の書籍。理論をしっかり勉強したい人はぜひ。
音声処理だけでなく自然言語処理の内容もある。


### [WAVENET: A GENERATIVE MODEL FOR RAW AUDIO](https://arxiv.org/pdf/1609.03499.pdf)★
音声認識と対をなすText to Speech(TTS)のタスクでブレイクスルーを果たした論文。
この登場はかなり話題になった。
deepmindのブログ記事は[こちら](https://deepmind.com/blog/wavenet-generative-model-raw-audio/)。デモも聞けるようになっているが本当に自然。
ベースとなっているのは画像生成のタスクで提案された[PixelRNN](https://arxiv.org/abs/1601.06759)という手法で、これは[このスライド](http://www.slideshare.net/beam2d/pixel-recurrent-neural-networks)で解説がされている。  
  
### [Deep Speech 2: End-to-End Speech Recognition in English and Mandarin](https://arxiv.org/abs/1512.02595)★
こちらは音声認識の論文。ICML2016で発表(公開は2015/12)。
スペクトログラムへの変換は行うようだが、そこからはEnd-to-Endの認識が可能で精度もSOTA。
Lookahead ConvolutionやSortaGradなど初見な工夫のオンパレードだった。
日本語の解説スライドは[こちら](http://www.slideshare.net/JiroNishitoba/icml-deep-speech2)。

### [Wav2Letter: an End-to-End ConvNet-based Speech Recognition System](http://arxiv.org/abs/1609.03193)
同じく音声認識のタスク。**名前一本釣りである。**
Deep Speech 2と比べてこちらのネットワークは1DのFully Convolution NNで非常にシンプル。また、入力の形式もMFCCの他にパワースペクトル、生の音声波形(!?)がいけるらしい。真のEnd-to-End。ただし精度はMFCCの方が上。十分なデータ量があればこの精度のギャップは埋められる可能性があるとあった。


同時期に同分野のSOTAが続々と出てきている。それだけ競争が激しいということかな。

### [Deep Convolutional Networks on the Pitch Spiral for Musical Instrument Recognition](http://www.gitxiv.com/posts/qFMnPMgHvrALEqQdT/deep-convolutional-networks-on-the-pitch-spiral-for-musical)
楽器分類のタスク。
アプローチが特殊で、楽器の音声波形をスペクトログラムで画像に変換した後にCNNで分類問題を解かせる。
音声の問題も画像処理で解く時代。

## ライブラリ
実装してみたい！試してみたい！となったときに。
理解を深めるためにスクラッチで書くのも良いけれど、すぐ動かすならやはりあるものを使うのが一番。  

### [PortAudio](http://www.portaudio.com/)★
音声の入出力のためのオープンソースライブラリ。
専門外のボクも名前は聞いたことあったから有名なのかも。
C,C++用のライブラリだが、Cross-Platformと書いてあるので他の言語にも対応しているはず。

### [PyAudio](https://people.csail.mit.edu/hubert/pyaudio/)
PortAudioのpythonラッパ。
pythonで音声の入出力を行いたい場合は安定の選択肢となりそう。
勉強会ではこれ使います。

### [Julius](http://julius.osdn.jp/)
音声認識システムの開発・研究のためのオープンソースエンジン。
音声認識に必要な機能を柔軟に組み合わせることができるらしい。これ単体では動作せず、別途音響モデルや言語モデルを用意する必要がある。
使って見たい場合は[Juliusを使って音声認識サーバを構築](http://qiita.com/sayonari/items/65a5aea83d1fadac7d5c)しているこちらの記事が参考になる。

## 実装例
他の人の実装を読むのは理解するのに役立つ。

### [Pythonで音声信号処理](http://aidiary.hatenablog.com/entry/20110514/1305377659)★
実装に関してはこのサイトだけ読んでいたと言っても過言ではない。
類似音楽検索システムの開発を目指して、音声処理の基礎を順に学んでいく連載。
解説がわかりやすいし、トピックごとに実装を行い結果を出力して確認していてとても良かった。  

### [Pythonで音響信号処理](http://qiita.com/wrist/items/5759f894303e4364ebfd)
音響信号処理でよく使う処理(?)の実装例。python実装。
著者はお仕事で信号処理に携わっているらしく、とても信頼できる。

## まとめ記事
ぼくのまとめを見るよりももっと有意義なまとめをしてくれてる人はたくさんいます。

### [音声解析手法 の 整理 と 音声処理エンジンへの活用事例](http://qiita.com/HirofumiYashima/items/809783e0266a2609f8e2)★
高速フーリエ変換、短時間フーリエ変換、ウェーブレット変換、音声に関するディープ・ラーニングについて参考となるサイトがまとまっている。
要点を引用してくれているので良い感じ。

### [自然言語/音声認識学習用データのまとめ](http://qiita.com/icoxfog417/items/44aeb9486ce1b7130f76)
学習のためのデータに関するまとめ。
やはり有料のものが多い。自分で音声認識器を訓練するのは現実的じゃない？

### [独断と偏見で音の信号処理入門Webページ・本を集めてみた](http://room6933.com/blog/2011/02/20/digital_signal_processing/)
入門者向けの書籍、webページのまとめ。
このまとめにないページが沢山あるのでこちらも参考に。