如果您要编写一个需要麦克风输入的程序,将其反转(通过设置1的0和0的1来设置它不同相),然后从扬声器中播放出来,可以消除声音吗?波物理学说,如果波峰与波谷对齐,就会发生破坏性干扰,如果不能完全抵消,可以在这里利用它来减少噪音。我可以想象,由于翻转音频的复杂性,或者因为翻转和回放需要很长的时间,所以声波已经过去,这样做不起作用。如果我不得不关联一门语言来做到这一点,它将不得不是C++或Java(我至少有能力)。降噪程序
降噪程序
回答
是的,它会取消声音。这或多或少是环绕声的工作原理:通过减去左/右声道,在第三个扬声器中播放声音,并倒置样本,在第四阶段播放这些声音,您会获得有趣的空间效果。
此外,你不会只是想切换所有的位,你会得到噪音;相反,你想否定。
使用一个小样本缓冲区,您可以快速消除某些频率的波。当这些攻击和衰退时,你会落后,但只要波浪持续下去,你就可以有效地取消它。
对于更大的样本缓冲区,显然延迟会增加,因为用样本填充缓冲区需要更长的时间。缓冲区的大小决定了设备中断发生的频率,程序会在输入采样到输出缓冲区时将其复制到输出缓冲区,同时对其执行操作。
通常记录是在44.1kHz,这意味着每秒多个采样。如果将缓冲区设置为256个样本,则每秒会通知44100/256次,即有256个样本需要处理。
在256个采样中,您将落后于256/44100 = 0.0058秒或5.8毫秒。声音以340米/秒左右的速度传播,因此声波将移动1.97米(340 * 5.8毫秒)。该波长对应于频率172 Hz(44100/256)。这意味着您只能有效地抵消频率低于频率的频率,因为频率更高的频率会在5.8ms内“移动”超过一次,并因此高于最大“采样率”(如果您愿意的话)。
对于64个样本,频率将是44100/64 = 689Hz。而且,这是最高频率!这意味着你可以取消低音和人声的基本频率,但不是谐波。
一个典型的操作系统的时钟频率设置为500,1000或2000赫兹,这意味着至多可以使用大约两到三个采样的采样缓冲区,最大频率为500,1000或2000赫兹。电话通常具有约3500Hz的最大频率。
您可以将系统时钟频率提高到32kHz左右,并直接轮询ADC以达到此类频率。但是,您可能需要将其中一个焊接到LPT并运行自定义操作系统,这意味着Java不存在问题,或者使用运行Java的预制实时嵌入式系统(请参阅@zapl的评论以了解链接)。
我忘记提及的一件事是,您需要考虑声源,麦克风和扬声器的位置。理想情况下,所有3个人都在同一个地方,所以不会有任何延迟。但这几乎从来都不是这种情况,这意味着你会得到一种干扰模式:声音被取消的房间中会有斑点,而在没有声音的地方会有斑点。
你不能用软件,C++甚至汇编语言来完成 - 在大多数计算机上,镜像扬声器输出的延迟时间将超过6毫秒。即使您的延迟时间仅为0.1毫秒,所产生的声音(假设它完全混合)最多只会听起来像是在10kHz采样(不是很好)。
- 1. 降噪
- 2. 音频降噪
- 3. 图像降噪OCR
- 4. 图像堆叠使用MATLAB降噪降噪
- 5. 谷歌应用程序引擎蟒蛇日志级别降噪
- 6. 如何降低WebRTC应用程序中的音频噪音
- 7. 图像降噪技术
- 8. pocketsphinx中的降噪android
- 9. 降噪OpenCV skindetection示例
- 10. android中的图像降噪
- 11. 极性VS降噪相移
- 12. android-用于android的语音增强/噪音消除/降噪库
- 13. 使用Python的降噪图像算法
- 14. 图书馆或代码降噪高斯?
- 15. VoIP,SIP,降噪,回声消除
- 16. 计算机视觉:简单降噪
- 17. 在opencv中使用直方图降噪
- 18. pocketsphinx之前的降噪降低了识别的准确性
- 19. 如何对信号数据进行排序,降噪?
- 20. 如何以编程方式访问iPhone的降噪功能?
- 21. 在matlab中生成程序\ perlin噪声
- 22. 下降最低分程序
- 23. “降级”ClickOnce应用程序
- 24. 降序
- 25. 降序
- 26. 降序
- 27. DirectSound通常是否支持回声消除和降噪?
- 28. OpenCV中如何平滑的轮廓线,降低噪音
- 29. 比较matlab中的所有降噪滤波器
- 30. 张量流实现堆栈降噪自动编码器
不适用于PC和软件。延迟太高,你的反向波形将不能取消任何事情。使用这种降噪耳机存在,但他们在硬件上做这样的事情,因为它需要超快速。 – zapl
正如@zapl所说,延迟一般是一个关键问题。尽管使用类似FPGA的东西,但你可以在“软件”中完成。 – ajshort
是的,我认为会是这样,我只是想确定 –