如何以簡單的方式分析波形文件的頻率?沒有額外的模塊。如何分析波形文件的頻率
回答
這是什麼意思「分析」?這可能意味着很多不同的東西,但是我知道最簡單的方法一個大約是使用convolution,你可以很容易地實現對discrete functions(你必須在數組中的點或是試圖分立步驟):
這可以很容易地做到:
for i in main_array:
from = i - len(convolution_kernel)/2
// Todo: check boundaries
result[i] = 0
for j in convolution_kernel:
result[i] += convolution_kernel[j] * main_array(from+j)
或者你可以使用循環卷積(想法來自eryksuns評論拍攝):
result = [sum(f[m]*g[n-m] for m in xrange(len(f))) for n in xrange(len(g))]
這將使您能夠測試某個信號是否出現在另一個信號中(並且您將嘗試頻率10,20,50,...並獲得最佳結果)。
你也可以google determine wave frequency
或研究Fourier transformation有點(這是很多信號處理算法的基礎)。
免責聲明:信號處理是不是我的專業,這個答案可能有點粗糙和簡陋;隨時糾正/我:)
我會去了解一下傅立葉分析。 A Fourier transformation將您的輸入從時域轉換到頻域。讓我來解釋一下,多一點:
抽樣時的聲音,例如,你確定你的採樣頻率和您的位深度。我相信CD的採樣率爲44.1 kHz,分辨率爲16位。樣品。這意味着音樂每秒採樣44,100次並轉換爲16位值。音樂被表示爲長度爲44,100的矢量(或數組)。它是時間的函數,因此這是時間域。
在另一方面,進行數據的傅里葉變換,你就會有表現爲頻率的函數,而不是數據。你仍然會有一個向量44,100個元素長,但每個元素將代表幅度 - 你在每個頻率上採樣了多少「信號」!換句話說,您的信號在整個採樣週期內包含的每個給定頻率有多少信號。
你應該看看離散傅立葉分析和快速傅立葉變換(FFT)的實現。
這個問題倒是FFT分析多一點: Scipy/Numpy FFT Frequency Analysis
編輯:
我無恥地偷走一些圖形在線:
FFT計算公式:
時間與頻率範圍:
如果你的波形文件只包含一個音符,你可以簡單地通過檢測波的週期性得到的基頻(而不是諧波)。通過查找0交叉口來做到這一點。
如果您不希望實現整體FFT算法,不希望任何額外的模塊,那麼我會的電子書籍,其Goertzel Algorithm是有效的傅里葉變換爲特定的工頻突變,讓您在該頻率的電源樣品:
define goertzel(sample, target_frequency, sample_rate):
s_prev = 0
s_prev2 = 0
normalized_frequency = target_frequency/sample_rate
coeff = 2 * cos(2 * PI * normalized_frequency)
for element in sample:
s = element + coeff * s_prev - s_prev2
s_prev2 = s_prev
s_prev = s
end
power = s_prev2 * s_prev2 + s_prev * s_prev - coeff * s_prev * s_prev2
return power
- 1. iPhone - 識別波形/頻率
- 2. 頻譜分析儀波形文件與numpy.rfft
- 3. Java .wav文件頻率分析 - 不正確的頻率
- 4. 頻率和水平的小波分解
- 5. 波形文件的頻譜圖
- 6. Python中的頻率分析
- 7. 如何正確讀取C++中的波形文件採樣率?
- 8. 如何用自定義頻率音/波創建.wav文件?
- 9. 比較兩個音頻文件波形
- 10. 如何更改採樣率在波形文件使用c#
- 11. 計算掃頻正弦波形每個採樣的頻率
- 12. 如何獲取mp3或音頻文件的波形?
- 13. Java頻率分析性能
- 14. 頻率分析幫助
- 15. 如何使用J2ME從音頻文件創建波形顯示
- 16. 如何繪製.wav文件的波形
- 17. 使用python分析mp3文件的頻率
- 18. 如何從音頻文件(.wav)中分離頻率
- 19. 方波頻率表示
- 20. 採樣頻率正弦波
- 21. XAudio2濾波器角頻率
- 22. SciPy的/ numpy的FFT頻率分析
- 23. 如何繪製音頻波形?
- 24. 如何獲得分組事件頻率?
- 25. 分析音頻文件java
- 26. JS如何渲染沒有任何插件的音頻波形?
- 27. R 1000+ .CSV文件合併和頻率分析
- 28. 波形趨勢分析/模式識別
- 29. 帶波形文件的QAudioFormat
- 30. 分析波流
或者你可以做一個循環卷積,假定零填充,如DFT的作用:'結果=Σ(F [M] * G [(納米)%LEN(克)]爲米xrange(len(f)))for n in xrange(len(g))]''。 – eryksun
微小更新:由於Python包裝負指數,模操作是多餘的。你可以使用'g [n-m]'。 – eryksun