噪声抑制的方法基本上有两种
1.使用 Wiener-filter 或其他估计和减法方案进行噪声抑制。为了让这些听起来不错,虽然需要大量的优化和脑力劳动。对于你的应用来说,这可能不是一个好的解决方案,因为PC不是为实时音频处理而设计的,而且所涉及的算法也远没有那么简单。 2. 播放延迟校正、相位反转的背景噪声和可用信号。这对于耳机来说效果相当好,尽管它通常会在低音中引入一些涂抹。然而,这也不能离线工作,因为它需要来自周围环境的实际背景噪声信号。而且对于PC来说,它也不是很好用,因为它们会引入太多的音频延迟。不过你可以用一些最小的实时Linux内核来试试。
根据我对音频处理和各种降噪技术的经验,我会推荐一些好的隔音耳机。通常情况下,这些会带来更好的声音,而不需要任何信号处理技巧,反正不会有太好的效果。
由于物理/硬件原因无法实现。
降噪耳机的工作原理是将声音记录下来,然后播放相位反转的声音来消除。用笔记本的话,首先麦克风很烂,好好的在你前面,这就意味着从你后面传来的声音会先到达你的耳朵,甚至还没碰到麦克风。然后,它必须通过计算机到缓慢的声卡(可能是0.1秒或更多的ping)到扬声器,在那里它将发挥。这个滞后时间太长了,无法处理。
所以主要归结为以下几点。
你和麦克风听到的是不同的东西(在耳机里它们在你的耳朵里)。
标准笔记本声卡的滞后时间很大,你经常因为这个原因连吉他音箱在电脑上都不能很好的工作(在耳机里接近0)。
这样无论如何优化都会导致可怕的体验。
它实际上并不是降噪,但 Chatterblocker 可以帮助你屏蔽/忽略外部声音。
使用MATLAB和这个指南/示例代码。 http://www.mathworks.com/help/dsp/examples/acoustic-noise-cancellation-lms-.html
你可以记录下你想消除的噪音(以WAV形式),然后建立一个音频输出,将其消除。你也可以修改代码,把麦克风输入作为噪音,让它自适应地生成输出并播放出来。
请记住,噪音消除对低频的 “机械 "型噪音效果最好。高音调(高频)噪声则更难消除。
对于一个恒定的声音(例如:风扇轴承的啸叫声)应该是可以的,但是正如其它人所指出的,对于常规的可变声音背景环境,普通的硬件和软件肯定不能很好地工作。
我也强烈怀疑软件会有什么可靠的方法来高精度测量滞后(用于校准),这对消音波来说至关重要。(编辑:也许除了做手动校准相位。)
常规内核不是实时的,也意味着音频滞后可能会有一点变化,这也会抛开任何工作的降噪。
虽然计算机可以录制和播放声音,但它们从来没有被设计成具有消除声波所需的精度和清晰度。
在PC软件上实现这样的系统可能会导致噪音增加而不是减少,所以要避免。
这仍然是一个值得研究和实验的课题,即使只是为了好玩 :)
另外,高端的麦克风和专业的声音硬件也会带来很多不同的效果。
_来源:自称是万事通专家。
如果你需要消除的声音是一致的,例如飞机内的声音或工厂的嗡嗡声,似乎电脑的滞后性应该是无所谓的,因为无论多晚到达,声音都是一样的。关键是要准确地对耳机中产生的声音进行相位移动。例如,人们可以尝试可调相位移动软件,如在 http://freemusicsoftware.org/category/free-vst-effects-2/phase-shifter
你甚至可以记录背景噪音,然后重新播放它。你必须调整相位,直到它与你耳朵直接听到的相反。
如果笔记本话筒差是个问题,你可以随身带一个二手SM58,足够便宜。
对这个想法有什么反馈吗?