有没有办法从 Linux 上的麦克风输入中去除扬声器的噪音?

有没有办法从 Linux 上的麦克风输入中去除扬声器的噪音?

我需要用麦克风记录我说的话,同时有时还需要从扬声器中发出一些声音。

在 Linux 上是否有可能将我的声音与扬声器录下的声音分离?

我想象它是这样的:

有一个软件可以记录输出到扬声器的内容和进入麦克风的内容,然后删除麦克风数据中与扬声器数据非常相似的所有内容,这样我就只剩下自己的声音和语音。

答案1

听起来你可能想“在 Linux 桌面上启用麦克风输入的回声/噪音消除“:编辑/etc/pulse/default.pa 最后加上这个:

.ifexists module-echo-cancel.so
load-module module-echo-cancel aec_method=webrtc source_name=echocancel sink_name=echocancel1
set-default-source echocancel
set-default-sink echocancel1
.endif

然后运行:pulseaudio -k并在声音设置中选择新设备。

答案2

这在物理上确实是不可能的。

降噪耳机的工作原理是耳机内额外的小麦克风与扬声器之间的容差非常小。这意味着它们可以非常快速地相位抵消所听到的声音。

手机和平板电脑通过使用多个麦克风实现了类似的功能,同样具有已知的特性和测量值。

一旦你的麦克风和扬声器没有像那样紧密地啮合在一起,物理学就不站在你这一边了。

如果您的声源是单声道,那么您可以通过反转一侧的相位来将明显的响度降低到位于它们正中间的单声道麦克风。[我不知道任何软件产品可以做到这一点,但并非不可能,那里有这样的产品]。

否则,你就必须像其他人一样……戴上耳机。

相关内容