【发布时间】:2016-02-20 22:19:04
【问题描述】:
如果您要编写一个程序,该程序接受麦克风输入,将其反转(通过将 1 设为 0 和 0 设为 1 将其设置为异相),然后从扬声器中回放,这会消除声音吗?波物理学说,如果波峰与波谷对齐,就会发生破坏性干扰,因此如果没有“完全”消除,这里可以利用它来降低噪音。我可以想象,由于反转音频的复杂性,或者甚至因为反转和播放需要太长时间,因此声波已经过去,所以这不起作用。如果我必须关联一种语言来执行此操作,那么它必须是 c++ 或 java(我至少在这两个方面都能胜任)。
【问题讨论】:
-
不适用于 PC 和软件。延迟太高,你的反波来不及抵消任何东西。存在使用此功能的降噪耳机,但它们在硬件中做到了这一点,因为它需要超快。
-
正如@zapl 所说,延迟通常是一个关键问题。您可以使用 FPGA 之类的东西在“软件”中完成。
-
是的,我认为会是这样,我只是想确定一下
-
@zapl - 您还需要考虑麦克风和扬声器之间的距离,以及它们相对于原始声音的相对位置。如果麦克风比扬声器更接近原始声音,您可以利用声速来发挥您的优势,如果(例如)您能够以 20 毫秒的延迟进行处理 - 您需要麦克风和扬声器之间有 7m 的间隙- 这是可能的。 (尽管延迟必须保持不变才能有用)
标签: java c++ audio physics microphone