麦克风-Linux上的静态背景噪音抑制


13

我的声卡是Realtek ALC892。在Windows 7上,我使用官方的Realtek驱动程序,在Linux上,我使用PulseAudio(在Ubuntu 13.10上)。在Windows和Linux上,当我启用+ 30db麦克风增强功能(由于我的麦克风很安静而需要)时,我会感到非常烦人且响亮的背景噪音(我也确认了两个系统都使用Audacity进行背景噪音处理)。

但是,Windows Realtek驱动程序具有有效的噪音抑制选项(启用它后,Audacity不会显示背景噪音,而且我的耳朵也会确认没有背景噪音)。

该图显示了噪声抑制选项

我的问题是如何在ALSA / PulseAudio中启用背景噪声抑制?是否可以安装任何模块,或者可以在配置文件中启用它的设置?

我找不到解决方案,这是阻止我完全切换到Linux的唯一方法-由于我经常使用麦克风讲话,因此在Windows上,Realtek软件会完全消除背景噪音,而PulseAudio不会将其消除。表示在Linux上录制的声音非常糟糕。

我知道我可以买到更好的声卡和麦克风,但是正如我所说,Windows Realtek驱动程序可以实时消除软件级别的噪音(例如,在使用TeamSpeak3 / Steam /任何voip程序通话时,不会产生噪音),所以我希望有这样的选择在Linux上也是如此。

这也出现在Ask Ask Ubuntu上,已经在这里得到了解答。


1
交叉张贴: askubuntu.com/questions/421671/… 如果您明确指出,则IMO没什么问题。否则,你为人们的浪费他们的时间发布重复的答案,等势
金发姑娘

2
@goldilocks在两个站点上都添加了交叉张贴的信息,以确保不会出现重复的答案
user1873947 2014年

Answers:


5

根据Realtek规范

  • 语音应用的麦克风回声消除(AEC),噪声抑制(NS)和波束形成(BF)技术

在“ 软件功能”列表中列出。我也曾在ALC892芯片组数据表中查看过,实际上它不是该芯片组的功能。因此,可以确认该功能仅仅是由Windows ALC892驱动程序处理的软件功能。

因此,我将致力于Linux噪声抑制的更一般的解决方案,而不是局限于此特定驱动程序:

/programming//q/4875818/684229


谢谢你的回答。但是,您链接的问题是关于回声消除的,这与降低静态背景噪声有所不同(回声来自扬声器,静态噪声通常是由硬件引起的)。
user1873947

显然,Realtek(及其他)因实施此功能而受到专利侵权的起诉lexology.com/library/…可能值得检查此处提到的专利。
Fizz

由于我不相信该链接的持久性:“美国专利号5,825,898('898专利); 6,483,923('923专利); 6,049,607('607专利); 6,363,345('345专利);和6,377,637('637专利)”。
Fizz

3

如果这是设备的功能,而不仅仅是设备附带的软件(可能是前者),则必须在内核驱动程序中实现。1 在我看来,通常,Realtek PCI声卡实际上使用带有补丁的Intel HDA驱动程序来支持ALC编解码器(对于感兴趣的任何人:)[src]/sound/pci/hda/patch_realtek.c

在内核源代码文档中进行搜索时,未提及与这些设备有关的“噪声抑制”或“回声消除”。搜索驱动程序源本身,也未明确提及。我认为,如果实现了它,几乎可以肯定会用一个接口/proc/sys可以在其中使用用户空间软件或使用驱动程序模块的选项来记录下来。

当然,问题在于,Realtek与大多数硬件制造商一样,认为其驱动程序源代码是秘密的,这使得第三方难以或不可能为例如Realtek不完全支持的系统创建驱动程序。Realtek确实有一个页面列出了Linux驱动程序,但是链接似乎已失效。如果运气好的话,有人会在这里提供安装说明(这是一个面向Mint的站点,但是任何发行版的过程都相同)。2

但是,即使您可以在某处找到副本,我也非常怀疑驱动程序是否实现了您想要的功能,因为没有提及我可以找到的功能。最有可能的是,它与您已经拥有的几乎相同;可能会稍微好一点(Mint页面提到内核驱动程序调换了侧面扬声器和后置扬声器),但由于内核开发人员未审查树外驱动程序,因此最终结果可能会变得更糟,甚至变得完全不起作用。并且可能包含与作者不知道的内核有关的问题(请注意,树内hda修补程序的作者具有@realtek.com.tw电子邮件地址)。

因此,除非您听到任何不同的声音,否则您可能很不幸。您可以四处寻找软件解决方案,这些功能显然是由Skype在Linux上实现的,因此它们显然可以单独使用软件实时工作。有人也写了一篇论文,大声笑。不幸的是,我没有运气了。

这里有一些关于使用的功能alsamixer来实现降噪的讨论。我认为您必须禁用Pulseaudio才能做到这一点。


1. Pulseaudio实际上是一个基于ALSA(内核的声音子系统)构建的用户空间工具(意思是:pulseaudio并没有实现硬件访问,它仅适用于来自内核驱动程序或来自内核驱动程序的流)。

2.如果确实找到它,则需要3.0版本,而不是2.6版本。这些数字表示它们兼容的Linux内核的版本,并且您正在使用3.x内核。但是,如果您的声音还可以,那么我强烈建议您不要打扰它,因为它不太可能为您做任何事情。


感谢您的深入解答。但是,我在这里找到了称为“ webrtc-aec模块”的内容:wiki.gentoo.org/wiki/PulseAudio。但是,它似乎仅在支持该模块的应用程序中有效,对吗?此外,也有可能在Ubuntu中禁用了此功能,您是否知道如何在PulseAudio中启用此模块?这可能是我的问题的解决方案
user1873947 2014年

我不,抱歉。Pulseaudio模块将是软件解决方案的一个示例。似乎最好用一个单独的特定问题来解决这种问题;)
goldilocks 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.