2012-08-27 53 views
0

我並不想將「音符」與實際的音符如A4或特定和絃或類似的東西相關聯,我只是尋找最新的方法來找到所有持續頻率及其持續時間。我知道這是一個非常開放,非常困難的問題,但除此之外,我在這方面沒有多少經驗。我很好奇所有可能的技術。我會補充一點,我的數據將會非常簡單,可能並不像我下面的例子那麼簡單,但卻遠不及實際的「音樂」。檢測聲音的CWT數據中的「音符」

讓我們假設我從一些非常基本的東西開始。 50 Hz, 250 Hz這裏是兩個正弦波,50Hz和250Hz,超過1/10秒,頻率範圍約爲〜20Hz到~4000Hz的CWT(使用morlet母小波),其中行按對數縮放(在更高的頻率下行頻率每行更改)。這是從C++ TSPL library計算出來的,這似乎相當漂亮。

無論如何,我的目標是獲取這些數據,並看到有兩個音符,一個50赫茲和一個250赫茲,跨越其持續時間。因此,所有這些的最終目標是讓抽象的線對象說出類似於「50 Hz時間0到0.1」的內容(而不僅僅是數據中的一些未計算的行),然後我可以使用它返回到我的CWT輸出以獲取與其關聯的額外特徵數據。所以我不想對此進行圖像處理。

現在,在我的無知中,我看着這兩個振盪的色帶,並認爲「他們真的很高!」當我知道輸入正好是50赫茲和250赫茲時,它們覆蓋很多行(所以頻率範圍很大)。儘管覆蓋了那麼大的頻率範圍,但似乎白色到黑色的模式(無論任何一個音符的行是相同的速率)都是放棄實際頻率。雖然它包含的每一行都鏈接到不同的頻率,但每種顏色的振盪頻率是相同的。

這是如何接近?我的實際數據(大部分)不會比這更復雜。

然而,我很好奇一個更復雜的情況下: 250 Hz, 50-450 Hz 這也是兩個正弦波,其中一個是250赫茲,而另一線性擴展從50赫茲到450赫茲。在這種情況下,任何當前的音符檢測方法是否能夠給我兩個音符?所以能夠理解其中一個音符是處於「角度」而不是水平的,並且能夠在其上畫一些粗糙的線條。這並不重要,但我真的很感興趣,可以處理我上面這個簡單情況的技巧,以及像這樣瘋狂的東西。我非常確定,我的數據永遠不會變得這麼複雜。不過,任何閱讀都可以嗎?

+0

你可能想嘗試dsp.stackexchange.com。 –

回答

0

如果我理解你的權利,你的使用案例將是檢測混合固定正弦波的頻率。在這種情況下,我建議使用普通的FFT並查看峯值。

也回答你的問題。如果你想在連續的小波變換中找到振盪的頻率,你需要看看CWT的絕對值,而不是像你這樣做的實際部分。主要任務是圖像數據中的脊線檢測(cwt)。描述了你所要求的內容。