Matlab:如何降低音频的信噪比

时间:2015-05-06 10:23:15

标签: matlab audio signals signal-processing noise

我有一些代码阻止使用并行计算处理xco​​rr命令。我想测试具有较低S / N的数据的强相互关系。

唯一的问题是我不太清楚如何应用它。我有一个动物电话的音频文件。它主要是间歇性呼叫的噪音。所有的呼叫都有不同的S / N.如果你看一下动物召唤的短期傅立叶变换谱图,你会看到一个不同强度分布的斑点。

spectrogram

我想降低这些调用的S / N,以便强度分布的形状仍然相同,只是它们的强度较小。

为了成功降低音频的S / N,我假设我也不想改变背景噪音值,所以只有呼叫本身的振幅会降低,而噪音却不会降低。 / p>

我不太清楚如何编程,请问我能得到一些帮助吗?

2 个答案:

答案 0 :(得分:0)

我认为您可以安全地为整个样本添加额外的噪声,这在测试稳健性时很常见:如果您的原始样本说有50个单位**信号和50个单位噪声(SNR为50/50),那么添加比如100单位的噪音会导致SNR或50/150,这是较低的。

**需要讨论什么构成一个单位 - 功率与电压,dBs或其他什么,它只是为了一个例子。

如果重要的是你添加了什么类型的噪音,那么也许你可以从没有样本的部分中复制一些 - 在创建测试用例时手动执行此操作通常很有效。或者,rand会为您提供随机数字,rng可让您控制分发。

另一种方法可能是将压缩函数应用于光谱仪,然后应用逆变换将其恢复到时域。谨防使用训练数据的修改版本来测试算法,如果您有足够的数据,最好保留一些用于测试。

答案 1 :(得分:0)

要使用声音文件编辑器(加上满是所需分布和类型的噪声的文件),首先调低原始文件的级别,直到信号处于所需的较低级别,然后混合噪声文件将噪音恢复到原始水平(通过设置适当的混音器参数)。得到的混合物具有较低的S / N.