如何以简单的方式分析波形文件的频率?没有额外的模块。如何分析波形文件的频率
回答
这是什么意思“分析”?这可能意味着很多不同的东西,但是我知道最简单的方法一个大约是使用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