4

我目前正在大学做一个项目,我正在使用 python 区分不同乐器演奏相同音高的音符。

我使用连接到计算机的麦克风在不同的乐器上录制了各种音符。

我还记录了房间的背景。

到目前为止,我在不同仪器上绘制了不同音符的图,在 y 轴上,我的振幅以 dB 为单位:20*log10(|FFT(signal)|)

在 x 轴上,我有 DFT 采样频率

一些谐波峰值足够小(或背景足够大),以至于噪声成为一个因素 - (不能发布图像,因为我是菜鸟!)我的问题是计算高度的不确定性水平考虑背景噪声时出现峰值。

我的问题是:

那么,在考虑背景噪声时,如何计算峰高(它们的相对谐波幅度)的不确定性水平。

一些想法:

在对什么是谐波峰值和什么可归因于噪声进行分类时,我应该使用什么 dB 阈值(我应该将低于最大背景(~28000dB)或平均值(~15000)或可能是这些值之一的两倍的峰值打折)?

此外,考虑到背景引入的噪声,从我的仪器记录的 FFT bin n 中减去背景的 FFT bin n 中的值是否合法?

我也看过这篇文章,如何在 MATLAB 中使用 fft 从录制的声音中去除噪音?,那里似乎有很大不同的意见。

如果它是相关的,我可以发布我的代码片段——尽管在同学剽窃的情况下放得太多。

非常感谢对项目有帮助的文献链接。(仍处于我以我能想到的各种方式绘制数据以寻找每种仪器的区别属性的阶段)。

提前致谢

4

1 回答 1

3

你似乎问了很多问题。让我从回答你的第一个开始:

那么,在考虑背景噪声时,如何计算峰高(它们的相对谐波幅度)的不确定性水平。

您会期望声音以线性方式求和(达到一阶近似值)。很自然的做法是只对背景进行一些记录,然后测量背景中谐波的平均幅度和标准偏差。

例如,假设您正在查看 3 个谐波 - 20KHz、11KHz 和 33KHz。只记录一些背景,你会发现平均幅度为 1.3dB、2.2dB 和 2.3dB,标准偏差为 +/-0.1、+/-0.2 和 +/-0.4dB。您现在有一个不确定性估计值和一个要从中减去的平均背景谐波。

有更聪明的方法可以做到这一点,但这是一个开始。

现在,开始你的第二个问题

在对什么是谐波峰值和什么可归因于噪声进行分类时,我应该使用什么 dB 阈值(我应该将低于最大背景(~28000dB)或平均值(~15000)或可能是这些值之一的两倍的峰值打折)?

如果峰值在平均值内 + 不确定性(一个或两个标准偏差,这实际上是任意的并且取决于惯例),您可以说它很重要。例如,如果您发现 3KHz 的噪声电平为 1.2dB,不确定性为 +/- 0.3dB,并且您测量谐波为 1.3dB,不确定性(以相同方式测量)为 0.1dB,那么它并不重要。

现在是第三部分:

此外,考虑到背景引入的噪声,从我的仪器记录的 FFT bin n 中减去背景的 FFT bin n 中的值是否合法?

是的(一般来说)。如果您真的想说服自己相信这一点,您可以 A)用求和波进行一些模拟并对其进行 FFT,B)做一个实验,与 A 或 C 中的相同)通过傅里叶变换的数学。

关于文学,我认为这取决于你具体做什么,如果你是物理专业的学生,​​玛丽博亚斯的“物理科学中的数学方法”很好地对待傅立叶变换,如果你是计算机科学家/工程师你可能想要一些不同的东西。

如果您需要更多帮助,请告诉我。

于 2012-04-16T16:06:05.357 回答