耳机中使用哪种算法来消除噪音?
我想编写实时降噪软件,就像具有主动降噪功能的耳机一样。是否有任何开放算法,或者至少有关于它的科学论文?谷歌搜索仅找到有关非实时降噪的信息。
I want to program software for noise canceling in real time, the same way it happens in earphones with active noise canceling. Are there any open algorithms or, at least, science papers about it? A Google search found info about non-realtime noise reduction only.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
来自此网站
除了所有正常的主动降噪耳机之外耳机电路,有麦克风和附加的特殊电路。在基本层面上,耳机上的麦克风会拾取您周围的环境噪音并将其转发到特殊电路。特殊的电路解释声音并以相反(相反)的方式模仿它。它产生的反向声音通过耳机扬声器发出,抵消了周围的环境噪音。
这一切都是基于声波干扰。当两个相反相位的波干涉时,结果是没有声音。 (它也适用于光。)
您应该查看维基百科页面上的波干扰 找到消除外部噪声所需产生的正确相位
对于正弦系统:
让我们采用 2 个波:
和
我们希望将结果波表示为:
给定 A1,您希望找到 A2 这样那A0 = 0
这意味着给定 Phi1 你需要找到 Phi2 使得 A0=0
你可以证明:
求解 A0 = 0,您将获得消除噪声所需的波的频率。
这称为破坏性干扰。
声波不是一维的...因此您只会在一个方向上获得破坏性干扰:
现在您只需要找到一些声音信号的东西...
我会尽力回答您的评论。
第一:
2D 问题并不比 1D 问题困难多少。
外部噪声可以近似为位于无穷远的源。
您将通过耳机中的源产生破坏性噪声,并且您可以假设在距源相同距离处振幅相同。
您需要将其写在 ax,y 轴上(最好使用极坐标)
和您将能够使用简单的三角函数公式获得计划上每个点的振幅:
:\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,以便将延迟考虑在内。
您可能需要有关声音的更多具体信息,因为我的信息对于任何类型的波都非常理论化。
from This site
Active noise cancelling headphones in addition to all the normal headphone circuitry, have a microphone and additional special circuitry. At a basic level the microphone on the headphone picks up the ambient noise around you and relays it to the special circuitry. The special circuitry interprets the sounds and mimics it in an inverse (opposite) manner. The inverse sound it produces is sent through the headphone speakers and cancels out the ambient noise around you.
All this is based on sound waves interference. When 2 waves of opposite phases interfere the result is no sound. (it works with light too.)
You should have a look at the wikipedia page on waves interference to find the right phase you need to produce to cancel the outside noise
For a sinusoidal system:
Let's take 2 waves :
and
We want to express the resulting wave as :
Given A1 you want to find A2 such that A0 = 0
It means given Phi1 you need to find Phi2 such that A0=0
You can prove that:
And solving A0 = 0 you will get the frequency of the wave you need to create to cancel the noise.
It's called destructive interferences.
Sound waves are not in 1 dimension... so you will just get the destructive interference in one direction:
Now you just need to find some stuff of sound signals...
I will try to answer your comment.
First:
A 2D problem is not much more difficult that the 1D.
The outside noise can be approximate as a source situated at the infinity.
You will create a destructive noise with a source in your headphones, and you can assume that the amplitude is the same at equal distance of the source .
You need to write that down on a x,y axis (it can be good to use polar coordinates)
and you will be able to get the amplitude on each point on the plan using simple trigonometry formulas like :
:\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
Second:
All the delays are modeled in the "Phi" of your destructive source. Can just Adapt the Calculated Phi so it takes the delay into account.
You may need more specific information on sound since my information is very theoretic on any types of waves.