簡體   English   中英

從潛在諧波確定基頻的算法

[英]Algorithm to determine fundamental frequency from potential harmonics

我試圖從聲源中提取基頻。 也許有人在麥克風上唱A3,所以我想要檢測~110Hz

我的方法是:

  • FFT 1024浮點數
  • 使用每個箱的相位來准確地確定其精確的頻率
  • 確定峰值(通常為50左右)
  • 先用最大的聲音命令它們

(峰值[0] .power = 1063.343750,.freq = 2032.715088
(峰值[1] .power = 1047.764893,.freq = 3070.605225
(峰值[2] .power = 1014.986877,.fr​​eq = 5925.878418
(峰值[3] .power = 1011.707825,.freq = 6963.769043
(峰值[4] .power = 1009.152954,.freq = 4022.363037
(峰值[5] .power = 995.199585,.freq = 4974.120605
(峰值[6] .power = 987.243713,.freq = 8087.792480
(峰值[7] .power = 533.514832,.freq = 908.691833

  • (MARKER1)以最響亮的方式開始,並將其與所有剩余的峰值匹配,所以如果我有N個峰值,此時我將有N-1個峰值對
  • 檢查每個峰值對的諧度; 即它與某個分數a / b有多接近,即我們能找到b <20的a / b,使得| peakA.freq / peakB.freq - a / b | <0.01(這將匹配到20日的諧波)
  • 我們現在有一個精確的峰值列表,這些峰值被認為是彼此諧波的

    Harmonic PeakPair:(0,1)= 2/3,錯誤:0.00468 => f0 @ 1019.946289
    Harmonic PeakPair:(0,2)= 1/3,錯誤:0.00969 => f0 @ 2004.003906
    Harmonic PeakPair:(0,3)= 2/7,錯誤:0.00618 => f0 @ 1005.590820
    Harmonic PeakPair:(0,4)= 1/2,錯誤:0.00535 => f0 @ 2021.948242
    Harmonic PeakPair:(0,5)= 2/5,錯誤:0.00866 => f0 @ 1005.590820
    Harmonic PeakPair:(0,6)= 1/4,錯誤:0.00133 => f0 @ 2027.331543
    Harmonic PeakPair:(0,7)= 9/4,錯誤:0.01303 => f0 @ 226.515106

我的問題是:如何設計一種能夠正確識別上述基波的算法~1000Hz?

絕不保證在~1000處的值集中度高於~2000或~3000等。甚至不能保證任何進入~1000。 我們可以有~5000 x一個條目,~4000 x三個條目,~3000 x 2條目,以及漂浮的幾個虛假值,如上面列表中的226。

我想我可以再次重復這個過程,淘汰與列表其余部分不“諧波”的建議基礎。 這至少可以擺脫假的價值......

可能我甚至沒有問正確的問題。 也許這整個方法很糟糕。 但我認為選擇最強峰並提取與該峰相關的一組諧波是有意義的。

在理論上應該產生一定比例的負載,比如說原始最強峰值是三次諧波,那么這組峰值應該包含3/1 3/2 3/3 3/4 3/5 3/6 3/7等......雖然有些人可能會失蹤。

實際上,我有一種感覺,它總是要么是基礎的,要么是具有最大力量的一次諧波。 但我不知道我是否可以依靠這個......

這么多因素,它讓我的頭腦游泳。 我提前為這樣一個混亂的問題道歉。 希望我可以在死后收拾它。

Cepstum(或倒譜分析)和諧波產品譜是兩種經過充分研究的算法,可以估算泛音系列的激勵頻率。

如果泛音序列被適當地間隔,則倒譜(FFT峰的對數的FFT)可用於估計頻率間隔的周期,然后可用於估計頻率。

諧波產品譜基本上通過用多個低整數比率抽取光譜並將它們重疊來比較光譜峰值與它們自身的第n個多個拷貝。

您可以通過以下鏈接查看有關語音識別的文章。

文章: 語音識別的相空間點分配參數(全文需要訂閱)

我已經改寫了這個問題,並在這里提供了一個答案: 如何接受一組數字,如{301,102,99,202,198,103}並扔掉~100?

我看過幾種方法,這比我發現的任何其他方法都簡潔得多。 我測試過它並且效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM