【问题标题】:Removing noise from wav file in matlab在matlab中从wav文件中去除噪声
【发布时间】:2018-12-17 23:03:26
【问题描述】:

非常相似,这里问了几乎相同的问题: Remove noise from wav file, MATLAB

但是我仍然不知道该怎么做。这是我正在处理的声音文件:https://uploadfiles.io/pstrt

我需要消除其中的噪音。我知道如何应用各种过滤器,我唯一不知道的是噪音实际发生在哪里。按照上述问题的步骤,我有以下频谱:

回答上述问题的人能够从频谱中推断出噪声在哪里。我不知道是什么泄露了它。有人可以向我解释吗?谢谢。

【问题讨论】:

标签: matlab audio signal-processing noise-reduction


【解决方案1】:

除非您先验地了解信号,否则没有万无一失的方法可以仅通过查看频谱来区分信号和噪声。回复上述帖子的人听了声音,得出的结论是,语音的音高比噪音高,计算 FFT 并开始修补他猜到的噪音并列出修改后的结果。如果你愿意,一个迭代过程。通常,频谱中较强的音调是您的信号。在您的应用程序中,这将是大约 900 Hz。此外,您认为是主要信号分量频率的倍数的音调通常是失真的。失真意味着您的设备中有一些非线性,并且会在信号的多个信号中产生音调(在您的情况下可能是 1800 Hz、2700 Hz ...)。希望这会有所帮助

【讨论】:

  • 如果您对如何处理噪声“嫌疑人”感到困惑,我只需将频谱中的这些分档设置为零。通过始终将一个 bin 及其副本 bin 设置为零来确保频谱对称
  • 我明白了。我可以在matlab中做些什么来真正找出噪音的来源吗?我做了很多尝试来过滤声音,包括低通高通和带通滤波器,但没有任何运气。谢谢。
  • 我会避免使用过滤器,因为您正在为您的问题添加更多变量,例如您是否正确设计了滤波器,您是否真的衰减了噪声而不是您的信号...而是计算 FFT 并将您怀疑是噪声的 bin 设置为零。反复执行此操作,您可能会逐渐改善整体结果。您还可以在 Matlab 中自动执行该过程,即循环遍历所有 bin 并将当前的 1 设置为零并从结果中生成 wav。当然你仍然需要听每个 wav 来决定是否有任何改进
猜你喜欢
  • 2012-05-10
  • 2013-08-01
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
相关资源
最近更新 更多