スペクトル分解能(解像度)・窓関数・標本化
- 操作
コマンドプロンプトのコマンドラインに次のものを入力して,サンプリング周波数が 16 kHz の条件で,周波数が 1234 Hz である正弦波(純音)を作成してください。
mksine -s 16000 s1234.16k.wav
1234
ここで -s はサンプリング周波数指定のオプションで,二行目の「1234 エンター」は mksine に対する周波数の入力です。 mksine は -f オプションでファイル名が与えられなければ,プログラム動作後にキーボード(正確には標準入力)から周波数を読み込みますので,これによって 1234 Hz の純音が入ったファイル s1234.16k.wav が作成されます。
wavesurfer を使って,作成した正弦波のスペクトルを表示してください。 そのためには,
wavesurfer s1234.16k.wav
を実行して, Choose Configuration で Waveform を選択し,波形上で右クリックして, Spectrum Section…をクリックします。
- 問い
- フレーム長 64 点, サンプリング周波数 16 kHz の場合のスペクトルの周波数分解能 (解像度) を,講義資料に示された式を使って求めてください。
FFT points (= フレーム長) を変更すると,スペクトルの解像度はどのように変化しますか。 FFT points を 64 点にした場合のスペクトルの解像度は計算値と比べてどうですか。
Wavesurfer による FFT スペクトルでは,スペクトルの成分が連続して存在しているように見えますが,それは成分同士が直線で結ばれているためです。周波数解像度の低い FFT スペクトルを見ると,そのことがわかります。周波数解像度は,直線と直線の間が何 Hz であるかを観察すればわかります。
Window(窓関数)を変更すると,スペクトルはどのようになりますか。 rectangle window が窓関数無しに相当します。
スペクトルは波形のどの区間から求めたかによって変化しますので,FFT スペクトルのウィンドウを開いたまま,波形上の異なる場所をクリックしてみてください。スペクトルはクリックした場所を始点とする FFT points 分の区間から計算されます。
- 周波数が 5000 Hz, 7000 Hz, 9000 Hz の正弦波(純音)をサンプリング周波数 16 kHz で作成し,各純音の音や波形,スペクトルを比較観察して結果を記してください。何故,そうなると考えられますか。