これは、ピッチ検出ビズで「オクターブ問題」と呼んでいるものです。
まず、AMDFをASDFに変更します。そして、ラグが大きくなるので、ウィンドウサイズを小さくしません。(また、表記をより慣習的なものに変更します。「」は離散時間信号です。)x[n]
サンプル近傍におけるの平均二乗差分関数(は、次のとおりです。x [ n 0 ]x[n]x[n0]
Qバツ[ k 、n0] ≜ 1NΣn = 0N− 1( x [ n + n0- ⌊ N+ k2⌋ ]−x[n+ n 0- ⌊ N+ k2⌋ +k])2
⌊ ⋅ ⌋はfloor()
関数であり、が偶数の場合、。⌊ Kk⌊ K2⌋ = ⌊ K + 12⌋=k2
次に、正方形を展開し、合計がとしてどのように見えるかを検討します(が無限大になるわけではありませんが、が大きいかどうかを判断するためです)。ASDFは、自己相関に直接関連しています。それは本質的に逆さまにされた自己相関です。これらのステップは、私があなたに残します。この答えを見てください。N→∞NN N
それでは、から定義された(サンプル近傍にある)この有限長の「自己相関」を考えます。x[n0]
Rバツ[ k 、n0] = Rバツ[0 、n0] − 12Qバツ[ k、n0]
どこ
Rバツ[ 0 、n0] ≜ 1NΣn = 0N− 1( x[n+n0- ⌊ N2⌋ ])2
以降と全てのラグのための、ことを意味すべてのラグのための。、Qはxは [ K 、nは0 ] ≥ 0 k個のR X [ K 、nは0 ] ≤ R X [ 0 、N 0 ] 、KQバツ[ 0 、n0] = 0Qバツ[ k 、n0] ≥ 0kRバツ[ k 、n0] ≤ Rバツ[ 0 、n0]k
が周期周期的である(そしてたまたま整数である)と仮定すると、P Px [ n ]PP
x [ n + P] = x [ n ]∀ n個
そして、 および、任意の整数の周期(は整数)です。そのため、が周期的である場合、で、に他の倍数に等しいピークが得られます。が完全に周期的でない場合、予想されるのはでの最大ピーク、(探している期間)での別のピーク(ただし少し小さい)、および次の大きな倍数での徐々に小さいピークです。。R X [ m個のP 、N 0 ] = R X [ 0 、N 0 ] ≥ R X [ K 、nは0 ] MのK = 0 のk P X [ N ] X [ n ] k = 0 k = P PQバツ[mP,n0]=0Rx[mP,n0]=Rx[0,n0]≥Rx[k,n0]mk=0kPx[n]x[n]k=0k=PP
だから、オクターブ問題があるための理由のカップルの約きます。まず、は必ずしも整数である必要はありません。これは補間問題であり、大した問題ではありません。 P
2番目の理由とより難しい問題は、サブハーモニクスの問題です。あなたがちょうどA-440 Hzで素敵な周期的な音を聞いていて、それが中央のCから9半音上にあるAのように聞こえると考えてください。今、誰かがその音に非常に小さい振幅(60 dBのような)を追加するとしますA -220?それはどのように聞こえ、数学的に「真の」期間は何ですか?
期間の「正しい」ピークを選択します。
ノートをDCブロッキングフィルターに通して、平均がゼロになるとします。ごとの自己相関の平均もゼロになる(またはが大きい場合はそれに近い)ことがます。つまりは(超えて)合計がほぼゼロになる必要があることを意味します。これは、ゼロより上の領域が以下と同じであることを意味します。R x [ k 、n 0 ] n 0 N R x [ k 、n 0 ] kx[n]Rx[k,n0]n0NRx[k,n0]k
さて、は、周辺の累乗を表し、負でない必要があります。 がを超えることはありませんが、が周期的である場合はがことがあります。 もし。したがって、が周期周期的であり、だけ離れた一連のピークがあり、それらのピークの高さを把握しているとします。また、のDC成分がゼロの場合、つまりピークの中間にある場合、負の値でなければなりません。x [ n ] n = n 0 R x [ k 、n 0 ] R x [ 0 、n 0 ] x [ n ] R x [ P 、n 0 ] = R x [ 0 、n 0 ]Rx[0,n0]x[n]n=n0Rx[k,n0]Rx[0,n0]x[n]Rx[P,n0]=Rx[0,n0]x [ n ] P P R x [ k 、n 0 ]x[n+P]=x[n]x[n]PPRx[k,n0]
場合、「準周期的」だった、の一周期、隣接するサイクルのように多くのことを見ていきますが、それほどのサイクルのような遠く時間で信号ダウン。つまり、最初のピークは、2番目のピークまたは3番目のよりも高くなります。このルールを使用して、常に最も高いピークを選択し、最も高いピークが常に最初のピークになると期待できます。しかし、サブハーモニックが聞こえないため、そうでない場合もあります。ときどき2番目またはおそらく3番目のピークが少し高くなることがあります。また、期間ので、おそらくサンプルの整数倍ではなくでx [ n ] x [ n ] R x [ P 、n 0 ] R x [ 2 P 、n 0 ] R x [ 3 P 、n 0 ] P k R x [ k 、n 0 ] kx[n]x[n]x[n]Rx[P,n0]Rx[2P,n0]Rx[3P,n0]PkRx[k,n0]は常に整数なので、真のピークはおそらく整数値の中間になります。滑らかなピークがどこにあるかを補間する場合(これはお勧めしますが、2次補間で十分です)、実際に整数間の高さであっても、補間アルゴリズムによって、実際のピークよりもわずかに高くまたはわずかに低くなる可能性があります。したがって、絶対的に最も高いピークを選択すると、最初のピークよりも2番目のピークが誤って選択される可能性があります(またはその逆)。kk
どういうわけか、最初のピークが2番目よりわずかに有利で、2番目が4番目(次のオクターブ下)よりも有利になるように、増加でピークをハンディキャップする必要があります。k
これを行うには、に減少関数を掛けて、でのピークがでの同一のピークと比較して、ある係数だけ減少するようにします。(指数ではなく)べき関数がそれを行うことがわかります。だから計算するk k = 2 PRx[k,n0]kk=2Pk=P
k−α Rx[k,n0]
したがって、が周期で完全に周期的であり、非整数補間問題を無視する場合、x[n]PPP
Rx[2P,n0]=Rx[P,n0]
だが
(2P)−αRx[2P,n0](2P)−αRx[P,n0]=<P−αRx[P,n0]
1オクターブ下のピッチのピークが減少する係数は、比率です。
(2P)−αRx[2P,n0]P−αRx[P、n0]= (2P)- αP- α= 2- α
したがって、最初のピークを2番目のピークよりも1%ブーストしたい場合、つまり、サブハーモニックピッチの自己相関が最初のピークより少なくとも1%大きい場合を除き、ピッチをサブハーモニックピッチに選択しません。ピーク、からのを解決しますα
2- α= 0.99
これは、1オクターブ下のサブハーモニックピッチに対応するピークに重みを付けたり、強調を解除したり、ハンディキャップしたりするための一貫した方法です。
それでも、しきい値の問題が残ります。うまく選択する必要があります。しかし、これは1オクターブ低い2番目のピークよりも最初のピークを強調する一貫した方法ですが、ノートが実際に1オクターブ低い場合はそうではありませんが、すべての偶数の高調波のエネルギーは奇数に比べて強かったです高調波、これはまだ2番目のピークが選択される可能性を残します。α