哪种算法用于耳机中的噪声消除?

时间:2011-06-28 08:19:44

标签: algorithm audio noise-reduction

我想实时编程用于降噪的软件,就像在具有主动降噪功能的耳机中一样。是否有任何开放的算法,或者至少有关于它的科学论文? Google搜索仅发现有关非实时降噪的信息。

1 个答案:

答案 0 :(得分:34)

来自This site

除了所有正常的耳机电路外,还有一个有源降噪耳机,还有一个麦克风和额外的特殊电路。在基本级别,耳机上的麦克风会拾取您周围的环境噪音,并将其传送到特殊电路。特殊电路解释声音并以反向(相反)方式模仿它。它产生的反向声音通过耳机扬声器发出,并消除周围的环境噪音。

所有这些都是基于声波干扰。当相反相位的2波干扰时,结果是没有声音。 (它也适用于光。)

您应该查看waves interference上的维基百科页面,找到您需要制作以消除外部噪音的正确阶段

对于正弦系统:

让我们走2波:

enter image description here

enter image description here

我们希望将结果波表达为:

enter image description here

鉴于A1,您希望找到A2,使 A0 = 0

这意味着给定Phi1你需要找到Phi2,使得A0 = 0

你可以证明:

enter image description here

在解决A0 = 0时,您将获得需要创建的波的频率以消除噪声。 它被称为破坏性干扰。

enter image description here

声波不是一维的...所以你只会在一个方向上受到破坏性的干扰:

enter image description here

现在你只需要找一些声音信号......


我会尽力回答你的评论。

<强>首先

2D问题并不比1D困难得多。

外部噪声可以近似为位于无穷远处的源。 您将在耳机中创建具有声源的破坏性噪声,并且可以假设在源的相等距离​​处振幅相同。

你需要在x,y轴上写下它(最好使用极坐标)

enter image description here

您可以使用简单的trigonometry formula来获取计划中每个点的幅度:

:\ sin(A + B)= \ sin A \ cdot \ cos B + \ cos A \ cdot \ sin B

:\ cos(A + B)= \ cos A \ cdot \ cos B - \ sin A \ cdot \ sin B

:\ sin(A - B)= \ sin A \ cdot \ cos B - \ cos A \ cdot \ sin B

:\ cos(A - B)= \ cos A \ cdot \ cos B + \ sin A \ cdot \ sin B

<强>第二

所有延迟都是在破坏性来源的“Phi”中建模的。可以只调整计算的Phi,以便考虑延迟。

您可能需要更多关于声音的特定信息,因为我的信息对任何类型的波都非常理论。