自己回帰モデル


演習1-1 (個人): 以下の仕様の自己回帰モデルから信号列 $x[i]$ を生成してみましょう。

仕様:

  1. 次数は L = 4
  2. 信号の長さは N = 100
  3. LPC 係数は a[1] = 0.1、a[2] = 0.3、a[3] = -0.2、a[4] = 0.15
  4. ホワイトノイズは平均 0、分散 1 の時刻毎に独立な正規乱数

Jupyter Notebook を起動します。
新規ノートブックを作って「AR_1_1」に名前を変更します。
一番上のセルにテンプレートの内容をコピーします。
穴埋め問題を解いて下さい。
実行すると 1 つの CSV ファイル「AR_1_1_x.csv」が出力されます。この CSV ファイルは信号値 $x[i]$ の N = 100 個分の値です。
信号値のCSVファイル(AR_1_1_x.csv)を表計算ソフトで開いてください。
一行目に空行を挿入し、1 行目の最初の列に「i」、次の列に「x[i]」 と入力します。
グラフを挿入します。グラフの種類は散布図、点なし、線あり、平滑化なしとします。
「名前を付けて保存」でシートを表計算形式で保存します。ファイル名は「AR_1_1_x」として下さい(拡張子は使用する表計算ソフトによる)。
指定場所に「信号値のグラフ」を貼り付けて下さい。


線形予測モデル


演習1-2 (個人): 演習 1-1 で生成した信号列 $x[i]$ の線形予測値を求めてみましょう。

新規ノートブックを作って「AR_1_2」に名前を変更します。
一番上のセルにテンプレートの内容をコピーします。
穴埋め問題を解いて下さい。
実行すると 1 つの CSV ファイル「AR_1_2_hat_x.csv」が出力されます。この CSV ファイルは線形予測値 $\hat{x}[i]$ の N = 100 個分の値です。
線形予測値の CSV ファイルを表計算ソフトで開いてください。
一行目に空行を挿入し、最初の列の先頭に「i」、次の列の先頭に「hat_x[i]」と入力します。
グラフを挿入します。グラフの種類は散布図、点なし、線あり、平滑化なしとします。
縦軸の範囲を演習1-1で書いたグラフと合わせます。
「名前を付けて保存」でシートを表計算形式で保存します。ファイル名は「AR_1_2_hat_x」として下さい(拡張子は使用する表計算ソフトによる)。
チーム内で答え合わせをし、演習1-1で作成した元の信号 $x[i]$ のグラフと線形予測値 $\hat{x}[i]$ のグラフを見比べてみましょう。

※ $\hat{x}[i] = x[i]-e[i]$ なので、$\hat{x}[i]$ は各時刻でホワイトノイズ $e[i]$ を取り除いた $x[i]$ の予測値とみなせます

指定場所に「線形予測値のグラフ」を貼り付けて下さい。


線形予測誤差


演習1-3 (個人): 演習 1-1 で生成した信号列 $x[i]$ の線形予測誤差を求めてみましょう。

新規ノートブックを作って「AR_1_3」に名前を変更します。
一番上のセルにテンプレートの内容をコピーします。
穴埋め問題を解いて下さい。
実行すると 1 つの CSV ファイル「AR_1_3_hat_e.csv」が出力されます。この CSV ファイルは線形予測誤差 $\hat{e}[i]$ の N = 100 個分の値です。
線形予測誤差の CSV ファイルを表計算ソフトで開いてください。
一行目に空行を挿入し、最初の列の先頭に「i」、次の列の先頭に「hat_e[i]」と入力します。
グラフを挿入します。グラフの種類は散布図、点なし、線あり、平滑化なしとします。
縦軸の範囲を演習1-1で書いたグラフと合わせます。
「名前を付けて保存」でシートを表計算形式で保存します。ファイル名は「AR_1_3_hat_e」として下さい(拡張子は使用する表計算ソフトによる)。
チーム内で答え合わせをし、演習1-1で作成した元の信号 $x[i]$ のグラフ、演習2-2で作成した線形予測誤差 $\hat{x}[i]$ のグラフと線形予測誤差 $\hat{e}[i]$ のグラフを見比べてみましょう。

※ $\hat{e}[i] = x[i]-\hat{x}[i]$ なので、$\hat{e}[i]$ は各時刻で付加されたホワイトノイズ $e[i]$ の予測値となります

指定場所に「線形予測誤差のグラフ」を貼り付けて下さい。


レビンソン・ダービン・アルゴリズム


演習1-4 (個人): レビンソン・ダービン・アルゴリズムを使って演習 1-1 で生成した信号列 $x[i]$ の LPC 係数を推定してみましょう。なお今回は信号の長さを N = 50000 とします。

新規ノートブックを作って「AR_1_4」に名前を変更します。
一番上のセルにテンプレートの内容をコピーします。
穴埋め問題を解いて下さい。
実行すると L=4 個の LPC 係数の真の値と推定値、及びホワイトノイズの分散の推定値が表示されます。
チーム内で答え合わせをし、真の値と推定値の値が近いことを確認して下さい。
指定場所に「表示結果」をコピーして貼り付けて下さい。


推定モデルの利用


演習1-5 (個人): 自分の声(あ、い、う、え、お)をサンプリングしてスペクトログラムを見てみましょう。

マイクを PC の端子に繋ぎます。
マイクの設定を開いて音量調整をします。
レコーダーを開きます。もしブラウザからマイク権限を求められたら許可します。
「アー」の声を「2 秒以上」録音し、ダウンロードフォルダに音声ファイル( out.wav ) をダウンロードします。
out.wav を試しに再生し、もし音が小さかったり、逆に音割れが生じた場合はマイクのボリュームを調整して録音し直します。
out.wav を「a.wav」に名前を変更します。
同様に「イー」の声を「i.wav」、「ウー」の声を「u.wav」、「エー」の声を「e.wav」、「オー」の声を「o.wav」に録音及び保存して下さい。
「a.wav」〜「o.wav」を演習フォルダに移動します。
新規ノートブックを作って「AR_1_5」に名前を変更します。
一番上のセルにテンプレートの内容をコピーします。
実行すると各音声のスペクトログラム画像が表示されます。
チーム内で画像を見比べて下さい。
指定場所に「スペクトログラム画像(あ、い、う、え、お)」を貼り付けて下さい。


演習1-6 (個人): 自分の声を自己回帰モデルによりモデル化して音声合成をしてみましょう。

新規ノートブックを作って「AR_1_6」に名前を変更します。
一番上のセルにテンプレートソースの内容をコピーします。
穴埋め問題を解いて下さい。
実行すると 2 つの音声ファイル(AR_1_6_x.wav、AR_1_6_e.wav)が出力されます。AR_1_6_x.wav が自分の声から作った自己回帰モデルより出力された音声、AR_1_6_e.wav が自己回帰モデルへの入力信号(パルス音)です。
チーム内で答え合わせをして下さい。
指定場所に「AR_1_6_x.wav」をアップロードしてください。