【问题标题】:Is there a convenient and elegant way to add noise (by type) to a signal?是否有一种方便而优雅的方式来为信号添加噪声(按类型)?
【发布时间】:2021-11-16 02:36:08
【问题描述】:

我正在尝试复制 this 文章,但其对应的 github 存储库写得很糟糕。在这篇文章中,NN 接受了人工破坏的音频信号的训练。不幸的是,研究人员没有添加音频文件,也没有添加显示他们如何损坏音频文件的干净代码。他们在论文中写道:

..对于嘈杂的测试集,100 个话语被四个 看不见的噪音类型(发动机、白色、街道和婴儿哭声),6 个 SNR 电平(-6 dB、0 dB、6 dB、12 dB、18 dB 和 24 dB);为增强 集,噪声集中的话语通过增强增强 上面的模型。

现在的问题是 - 是否有一个 python(R/MATLAB 库也可以)将信号、所需噪声的类型和 SNR 作为输入并返回损坏的信号?如果没有,我在哪里可以获得引擎或婴儿哭声类型?

谢谢!

【问题讨论】:

  • 就我个人而言,我会用 sox 做这个:参见例如 stackoverflow.com/questions/17431712/…。但是 ofc 这假设你在 linux/unix 上
  • 感谢您的快速评论!不幸的是,我正在使用 Windows 机器,但没有任何其他选择,我将转向 linux ..
  • 顺便说一句,我只看到了添加白色/棕色/粉色噪声类型的选项。这不完全是现实生活中的噪音,对吧? (对不起,我是声音处理的新手)。
  • 确实没有,但您需要对“引擎”、“街头”和“婴儿哭声”噪音进行真正的重新编码。我敢肯定有一些工具可以在 Windows 上执行此操作(在紧要关头,您可以一次性大胆地执行此操作)

标签: python signal-processing speech-recognition wav noise


【解决方案1】:

所以,如果有人遇到同样的问题,这就是我所做的。首先,我寻找包含现实生活噪音的数据库。它们中的大多数都需要花钱并且提供的环境种类有限(参见 AURORA-2 语料库、CHIME 背景噪声数据或 NOISEX-92 数据库)。最后我找到了DEMAND dataset,它包含了来自 16 种不同环境(办公室、汽车、道路等)的多通道噪声,并且可以免费使用。

现在,在合并噪声和信号之前,必须验证它们共享相同的采样率(实际上,这不是我从discussion 中了解到的那么严重的问题,但最好是为了安全起见)。如果你使用的是python,你可以使用librosa.resample模块将两者标准化。之后,您可以添加两个信号。添加噪声时,您可能希望控制每个输入(信号和噪声)的幅度。您可以使用下面给出的信噪比公式来找到 $a$,您必须将噪声乘以多人游戏才能获得所需的信噪比 (SNR)。

其中给出了所需的SNR,两个RMS 是根据您的数据计算得出的。

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    相关资源
    最近更新 更多