So-net無料ブログ作成
検索選択

「A SMARTERWAY TO FIND PITCH」でピッチ検出 [Math]

音声の波形からピッチを検出するアルゴリズム にピッチ検出の論文が
解説されていて、 scilab でやってみました。

Normalized Square Difference なるものを計算して、
次のアルゴリズムで音程を決定するとのこと。
1.極大値をリストアップ
2.その中から傾きが正で0を跨ぐ部分から、負で0を跨ぐ部分の間で最大のものに絞る。
ただし、傾き生で0を跨ぐが、途中で切れているものも候補に入れておく
3.最大値を nmax として、k * nmax のもので、最初にでてくるもの(周波数が小さいもの)
を選ぶ。k は 0.8~1.0 で要調節。

440Hzの正弦波のNormalized Square Difference を描いたものがこちら。
計算あってるのか?-1~1 になっているからたぶんあってる。

sinwave_nsdf.png

上記のアルゴリズムを適用すると、たしかに1/440=0.00227 が取れそうな感じだ。
もっといろんな音で確かめたい。

使った scilab コードはこちら。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:音楽

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。