ピッチ抽出の試み(その4)(DFT) v0.1.2


「時間窓巾調整によるピッチ周波数の精密計算法」(著:高澤 嘉光) と云う論文があります。

しかし 今回は久しぶりに長い時間かかってしまいましたが 今だに再現出来ていません。
そうしてジタバタしてる間に そこからのアイデアを使って そこそこ動作する別のものが出来てしまいましたので 使ってみて下さい。

例えば 430[Hz]とその4倍音までのWave信号があります。

wave

それをJP(Java Pitch)で見てみます。サンプル数は 512(2の9乗)個です。

fft-9

さらに 256(2の8乗)個...

fft-8

128(2の7乗)個...

fft-7

64(2の6乗)個(高さを変えています)...

fft-6

そして 32(2の5乗)個としてみます。

fft-5

ピークが識別出来ていません。 ここの「DFT」ではスペクトルの幅を見やすい様に狭くしています。

dft-5

メインローブが重なってしまっています。 ハニング窓の式からピーク値の1/2をピークの両側に加えれば メインローブの重なりがなくなります。 (以下はハニング窓の周波数特性です。)

hanning

また フーリエ変換の性質として 観測間隔を周期に合わせるとサイドローブの遺漏が無くなります。
(左は丁度のサイズの場合、右は少しずれている場合です。)

sidelobe

そこで DFT(離散フーリエ変換(discrete fourier transform))を使って サンプル数を変化させる事でスペクトルの遺漏が一番小さくなる所が "基音"と判断されます。

dft-5-Q

インハーモニシティ有りでも 例えば「Jwv」の a110.wavですが

a110 a110-dft

上右の様に測定出来ます。しかし 単信号は正確ではありませんし 測定位置によって最大値も変わります。

dft gif (Java appletは 利用出来なくなりました;)

〔項目内容〕
  1. test340.wav : 340[Hz]4倍音(インハーモニシティはありません) サンプリング周波数は 8000[Hz]です。
使い方:

まるでトイカメラかトイピアノの様かも知れません。
しかし これまでのサンプル数を増やして分解能を高めるのとは逆に 32個のサンプル数+ハニング窓のアイデアは ユニークでシンプルで斬新です。


参考文献:
Dobashi.M
Last modified: 4月 26日 金 19:53:07 2024 JST