- 不適切な図が教科書に掲載されています。図6はこちら(jpeg, eps)が正しいです。
- はじめに
- 「音声信号処理の基礎」の講義スライドはここ。
- 最終的な「音声リモコンロボット」の動画はここ。
- 「音声インタフェースの構築」テキストはここ。
- 準備1:音声分析ソフトを触ってみる・使ってみる
- wavesurfer のダウンロードはここ。
- wavesurfer の使い方は,例えばここ。
- 準備2:音声波形データの読み出しとGNUPLOTによる表示
- 音声サンプルのダウンロードはここをクリック。
- xxx.wav は wav データ。xxx.dat はヘッダの付いていない short integer の配列データ(little endian)。いずれもバイナリーデータである。
- エンディアン(endian)って何?という人はここ。big endian のデータは用意していない。
- GNUPLOTの使い方については,ここや,ここが役立つでしょう。
- xxx.dat の読み込みには fread() を使う。ライブラリ関数の仕様についてはここ。
- 課題1:自己相関関数を用いたピッチ抽出
- 3.3 節の自己相関関数の式を幾何学的に解釈するとどうなりますか?(ヒント:内積)
- 何故,この式のように「掛けたものを足す」という操作が「相関関係」を示す量になるのかを考えてみなさい。この式は s_t と s_{t+tau} の相関(つまり自己相関)ですが,x_t と y_t の場合は相互相関と言われます。
- ここまでが第一日目か。
- 課題2:DFT/FFTを用いたスペクトルの算出を描画
- DFT のソースファイルはここ。前期実験のソースと若干異なる。DFT と IDFT(Inverse DFT) の関数を作成せよ。
- テキスト 3.4 節の DFT の式をそのままプログラミングするだけである。
- FFT のソースファイルはここ。FFT と IFFT(Inverse FFT) の関数を作成せよ。
- 穴埋め部分はバタフライ計算のところだけである。
- FFT はこの複素行列計算を,IFFT はこいつをプログラミングすればよい。なお,b_i はビット反転順序で並び替えられた入力である。
- また,ソースの見易さを優先して,無用な処理も入れている。FFT の実装としては遅いバージョンだと思えばよい。
- なお,授業で配布している蝶蝶の絵を見ながらソースを眺めたい人はこちら。
- 作成したプログラムの実行時間を計測する場合は time コマンドを使うとよい。先頭512個のデータに対する DFT/FFT を各々1000回行うと何秒かかるか?
- % time ./FFT speech_sample/A_a.dat 0 512 > FFT_A_a.dat
- などとやれば良い。表示の解釈は,"man time" でもしなさい。
- 課題3:FFTを用いたケプストラム係数の計算とスペクトル包絡の推定
- ケプストラム係数の一部を操作する場合,スペクトルの対称性を崩さないようにすること。
- ここまでが,第二日目か。
- 課題4:パワースペクトルと自己相関関数(Wiener-Khintchineの定理)
- Wiener-Khintchine の定理を知らない学生は,ここ。つまり,自己相関関数のフーリエ変換が何になるのか?ということです。
- 準備3:ケプストラム係数のユークリッド距離に対する物理的意味について
- 課題6:各自が持参した音サンプルの音響分析
- 音声認識の講義まで時間がる人は,色んな音を分析にかけてみて下さい。
- 課題7:孤立単語音声認識システムの構築
- 孤立単語音声認識ツールキットのダウンロードはここ。
- 孤立単語音声認識に関する講義スライドはここ。
- システムをあれこれいじってみて,性能評価して下さい(3.10の課題)。認識システムの個々のモジュールをいじってシステムの概要を把握すること,及び,ここまでの課題において学習・知識が不十分だった部分を補うのが,第四,五日目,となります。
- 後半のロボット課題は,ここまでの知識が「既知」であることが前提となっています。
- レポートについて
- 〆切はロボット実験終了後,2週間後。但し,ロボット実験も〆切は同時期になるだろうから,さっさと計画的にレポートを書くことを勧める。
- レポートの執筆の関して,一人一人で行なった第一部(音声分析+α),音声認識/話者認識の原理を(各自で)学んだ第二部,各班で統合システムを構築してプレゼン発表した第三部に分ける。
- 第一部については,各自,別個にレポートを書く。実験の目的,原理,課題内容,予想される結果,実際に得られた結果,考察,などなど,レポートを書く時のお作法に従って書くこと。25年後に後輩に見せられるレポートを書け,とは言わないが,感想文の提出を求めている訳ではない。お作法に基づいているかどうかは,採点に大きく影響することに注意。
- 第二部については,教科書や配布資料に示した音声認識,話者認識の原理をだらだらと書く必要はない。但し「統合システム構築や,構築の際に工夫した点,システム構築における自分の貢献を説明するために必要な」音声認識/話者認識の原理については,各自のレポートで簡単に触れること。
また,チャレンジ課題として以下を試みてみるのもよいだろう。
1)EM(Expectation Maximization)法を用いた GMM パラメータの推定法,あるいは,2)SVM におけるカーネルトリックについて,数式を用いて自分の言葉で説明してみよ。
EM = 期待値を最大化する訳だが,何の期待値なのか,何故期待値なのか,そして,なぜ期待値を最大化させることがより良いパラメータとなるのか,など,数式を使い,自分の言葉で説明してみよ。
カーネルトリックを調査したい場合は,超高次元空間における超平面の計算(各次元の線形結合の値)が,何故,訓練データと入力データの内積があれば計算できるのかを調べてみよ。こちらも数式を使って,自分の言葉で説明してみよ。なお,この内積の値が元々の低次元の空間で計算できることまで説明してカーネルトリック全体の説明となるが,そこまで調べたい人は,やってみると良いだろう。
- 第三部については,1)どういう統合システムを作ったのか,統合システムの仕様についてまとめ,2)プレゼン資料と一緒に班ごとに作成する。と同時に,各自のレポートにおいても,そのシステム開発やプレゼン資料作成において,A)自分がどう貢献したのかを書き,B)システム構築があと一週間あればどういう機能を作成したいか,及び,その機能はどのようにすれば実現できるのか,について各自のレポートに書け。
- レポートは PDF (プレゼンはパワポ相当のファイルでよい)にして提出する。
班番号をA01, A02, A03(前半のグループ),B01, B02, B03(後半のグループ)とする。
各自のレポートは,班番号_学籍番号.pdf とする。
各班のレポート(システム仕様+プレゼン資料)は,班番号.pdf や,班番号.ppt,などとなる。
提出は,このページから。