【问题标题】:Matlab:How to LOWER signal to noise of audioMatlab:如何降低音频的信噪比
【发布时间】:2015-07-16 10:17:29
【问题描述】:

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

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

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

为了成功降低音频的 S/N,我假设我也不想更改背景噪声值,因此只有呼叫本身的幅度降低,而不是噪声。

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

【问题讨论】:

    标签: matlab audio signals signal-processing noise


    【解决方案1】:

    我认为您可以放心地为整个样本添加额外的噪声,这在测试稳健性时很常见:如果您的原始样本有 50 个单位**的信号和 50 个单位的噪声(SNR 为 50/50),那么添加假设 100 个单位的噪声将导致 SNR 或 50/150,后者更低。

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

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

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

    【讨论】:

    • 我碰巧看到这个链接有点像你说的那样(虽然比简单地添加噪音更具体):gaussianwaves.com/2010/02/…我已经运行了代码,它输出噪音,新信号,和 SNR(在示例中为 5)。但是如果你将新的信号和噪声插入 matlabs snr(...) 命令,你会得到一个不同的 snr 值。是否有一个原因?测量的 SNR 输出变量为 4.9968,但如果您输入:snr(scaledSignal,noise) 这将为您提供 6.2034
    • 这一切都取决于您如何测量信号和噪声。方法有很多种,没有标准,结果会因方法而异。在链接的文章中,他们提供了基于norm 和var 的两种方法,matlab 的snr 也提供了各种方法 - 请参阅doc snr 以获取列表。在链接的文章中,他们链接到另一个关于其中一些方法的文章,这也值得一读。
    【解决方案2】:

    要使用声音文件编辑器(加上一个充满所需分布和类型的噪声的文件)来做到这一点,首先调低原始文件的电平,直到信号达到所需的较低电平,然后混入噪声文件以将噪声恢复到原始水平(通过设置适当的混音器参数)。所得混合物的 S/N 较低。

    【讨论】:

    • 此方法将避免我之前的回答可能产生的潜在剪辑问题。
    猜你喜欢
    • 2011-05-03
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多