如何禁用麦克风自动调节输入音量

我想禁用麦克风根据输入自动降低音量的功能。这是一张图片:

enter image description here

麦克风一开始是100%的,然后慢慢降低到显示的位置。这可能是因为背景噪音或用户提高了声音。无论如何,我想禁止这种行为,因为当音量太低时,实际上需要提高声音。
是否有选项或配置文件可以编辑和更改这种行为?
这不仅与一个应用程序有关,而是与多个应用程序有关,从Skype到Google Hangouts,从Empathy到Teamspeak等等。所以请不要只提到一个应用程序的解决方案,如果该解决方案不能解决其他应用程序的问题。
已经使用了pulseaudio应用程序(图形界面和终端)。也已经使用了Alsamixer。在这两种情况下,调整麦克风级别都没有帮助。当有人说话时,自动调整总是发生,甚至不需要大声说话,只需说话几秒钟,麦克风级别就会开始自动调整。我再次强调,这不是一个应用程序的问题,而是多个应用程序的问题,因此一个通用的解决方案比每个应用程序的解决方案更好(我们正在讨论的是50多个应用程序)。

"alsactl store" 可以帮助。 - Luke Stanley
2chrome://flags - DISABLE WEBRTC ECHO CANCELLER :D 要访问首选项,请转到 about:flags - Guzpido Krush
我有一个类似的问题,但与 pulseaudio 或系统无关。这与 Zoom 的配置有关。 - an4s911
1正确的Chrome标志现在应该是chrome://flags/#enable-webrtc-allow-input-volume-adjustment。 - Thomas W.
12个回答

不确定这是否适用于每个人,但如果您在Chrome / Chromium中使用任何类型的网络会议/视频聊天服务,比如Google Hangouts,那么很有可能它使用的是WebRTC协议。不幸的是,Chromium中的WebRTC实现带有一个方便的“功能”,称为自动增益控制,它倾向于干扰您的麦克风音量。除非Web应用程序本身提供了禁用选项,否则没有其他方法可以关闭它,而 Chrome开发人员不想为其添加全局“关闭开关”
我最终采用了@lelandbatey的解决方案。由于我使用的是PulseAudio,所以我使用了pacmd而不是amixer
while sleep 0.1; do pacmd set-source-volume alsa_input.???-?????.analog-stereo 90000; done

请注意,65535对应于100%,所以90000大约是135%。设备的名称(alsa_input.???-?????.analog-stereo)应该用运行pacmd list-sources | grep name:找到的内容进行替换。
name: <alsa_input.???-?????.analog-stereo>

如果AGC不那么糟糕,我就不会介意。但是它会调整我的内部麦克风,直到你可以听到像喷气式发动机一样的风扇声,无论我做什么。唉。因为这个原因,我可能不得不通过Firefox运行基于Web的视频会议。 - Scott Marlowe
8有人为基于Chromium的浏览器制作了一个开源扩展程序Disable Automatic Gain Control,用于修复这个问题。它是开源的(代码在这里)。我现在正在使用它,效果非常好。也许你可以将它添加到你的答案中,以使其更加突出? - nh2
我使用了这个技巧,效果非常好,但是由于循环的原因,CPU使用率大幅增加。 - Isaac Bruno
谢谢 @nh2.. 你应该为这个扩展创建一个单独的答案.. 它对我来说工作得很好。 - Krishna
不是一个永久的解决方案。每次使用麦克风时都需要运行这个。 - Akshay Bhimani

对于Skype:
在Skype中,点击“选项”>“声音设备”,然后取消勾选“允许Skype自动调整我的混音器级别”。

8在Zoom中有类似的选项。设置->音频->取消勾选“自动调整麦克风音量”。我通过这种方式解决了我的问题。 - Nasimuddin Ansari

这对我们有用(我们不使用Skype):

禁用麦克风自动增益调整:

  1. 以root身份编辑:sudo editor /usr/share/pulseaudio/alsa-mixer/paths/analog-input-internal-mic.conf
  2. 以root身份编辑:sudo editor /usr/share/pulseaudio/alsa-mixer/paths/analog-input-mic.conf
  3. 在"[Element Internal Mic Boost]"下将"volume"设置为"zero"。
  4. 在"[Element Int Mic Boost]"下将"volume"设置为"zero"。
  5. 在"[Element Mic Boost]"下将"volume"设置为"zero"。

重启后停止工作了 :c - Enmanuel Durán
类似答案:https://askubuntu.com/questions/689209/how-to-disable-microphone-volume-auto-adjustment-in-cisco-webex/761103#761103 - nh2
默认情况下,此文件不可用于系统使用,请使用 sudo apt install pulseaudio 安装。 - 4xy
我尝试了很多解决方案都没有起作用。但是这一个确实有效。 - Chris Troutner
这个答案实际上是有效的,唯一需要注意的是你要仔细观察你要编辑的文件。对于内部麦克风来说,给定的文件是完美的,但如果你要为耳机进行这个更改,你需要在这个文件夹中查找适当的文件进行编辑:/usr/share/pulseaudio/alsa-mixer/paths/ 对于普通的TRRS耳机,我编辑了 analog-input-headphone-mic.confanalog-input-headset-mic.conf。自动音量调节是个麻烦,立刻摆脱它! - Vinay
在Linux Mint 20上对我没有起作用。 - gmk57

将您的麦克风设置为未放大100%。尝试安装脉冲音频音量控制器:
sudo apt-get install pavucontrol

然后打开:pavucontrol


首先在Skype中,点击“选项” -> “声音设备” -> 取消勾选“允许Skype自动调整我的混音器级别”。其次,在pavucontrol中,选择“输入设备”,将级别设置为“基础”。 - burtsevyg
7在pavucontrol中可以在哪里进行设置? - golimar
6使用这个应用程序,我可以看到麦克风的滑块自动跳动。我可以手动移动它,但几分钟后它会自动跳回原位。 - Paŭlo Ebermann
@PaŭloEbermann 你能修好它吗? - krionz
@krionz 有点儿。在其他地方进行更多的搜索后,我发现这是Chromium的一些功能,它会在有人说话时尝试调整输入音量。Chromium开发人员认为这是Google Hangout/Meet的工作来禁用此功能,而我猜Google Meet的开发人员并不关心。所以,我基本上采用了Rufflewind的答案,始终将输入音量重置为默认值。 当我在去年12月换了一台新电脑后,情况确实有所改善,因为基本音量设置完全不同,所以自那时起我就不需要再这样做了。 - Paŭlo Ebermann
@PaŭloEbermann 我不得不转换到 Fedora 并使用 Firefox 才能完成我的工作。谢谢你。 - krionz

对我来说,这个“重复”问题的答案是最好的,我将把荣誉归给回答的人

在配置文件/usr/share/pulseaudio/alsa-mixer/paths/analog-input-internal-mic.conf中(你可能需要找到适合你麦克风的正确文件),我将volume =部分更改为100,即百分比而不是merge

[Element Capture]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right

[Element Capture]
switch = mute
volume = 100
override-map.1 = all
override-map.2 = all-left,all-right

经过sudo alsa force-reload之后,应用程序不会神奇地改变麦克风音量了。

这对我来说没有起作用。当遇到大声音时,输入音量仍然会降低。 - Cerin
曾为Linux Mint 19.3 5.4.0-48-generic进行工作。 - Yevgen
7在Ubuntu 20.04上无法工作。 - Suor

我通过在我的电脑上禁用其他麦克风来解决了这个问题。我发现如果摄像头的麦克风捕捉到声音,会降低耳机的增益。我禁用了摄像头的麦克风,现在耳机稳定了。
不确定是否有帮助,但觉得值得一提。

我还在解决这个烦人的问题(在输入设备选项卡中应该包括一个选项,可以“强制”输入音量保持用户所设置的位置。这适用于用户知道特定应用程序所需音量,并且自动调整功能对其无效的特定情况。无论如何,要将其设置为“半手动”模式而不是自动调整Google应用程序(如Hangouts),请创建/编辑以下文件选项:
nano ~/.config/google-googletalkplugin/options

并添加这行内容:
audio-flags=1

或者只需运行以下代码行:
echo "audio-flags=1" > ~/.config/google-googletalkplugin/options

保存文件并关闭任何与Google相关的应用程序。输入设备的音量应该停止自动调整。这个方法有一半的成功率,所以我正在寻找一个永久解决方案。

3“audio-flags”配置选项在最新版本的Google Hangouts中已不再起作用,该版本已升级为使用WebRTC协议。请参阅我的答案以获取解释。 - Rufflewind

我遇到了这个问题,但是在Xubuntu上尝试使用的每一种视频聊天工具,从Google Hangouts到appr.tc,都会自动调整我的麦克风音量。特别是当背景中有声音时,它似乎会增加音量,好像要让最安静的声音听得见一样。
无论如何,我的解决方法是使用命令行指令手动设置麦克风音量,并将其放入一个while循环中,每0.1秒运行一次。所以,这是解决我的问题的shell oneliner:
```shell while true; do amixer -c 0 set Mic playback 100% unmute; sleep 0.1; done ```
while true; do amixer -c 1 set 'Mic Boost' 0db > /dev/null; amixer -c 1 set 'Capture' 35db > /dev/null;  sleep 0.1; done;

在您的计算机上使其正常工作,您可能需要更改要调整的设备和要更改的通道。要找到这些信息,您可以使用Alsa混音器,通过alsamixer访问。

我在Skype上遇到了一个问题,你需要禁用自动调整混音器音量(可能需要检查高级设置或类似的东西)。

这些答案都不起作用。唯一有效的是来自@nh2的评论,我将其提升为答案。
对于基于Chromium的浏览器,有一个开源扩展Disable Automatic Gain Control可以解决这个问题。它是开源的。我现在正在使用它,效果非常好。