我正在运行 Ubuntu Mate 20.04,并尝试在笔记本电脑上设置音频设备。我了解到module-echo-cancel
现在我正在使用它。
我在脉冲音频配置的末尾添加了以下内容:
.ifexists module-echo-cancel.so
# https://wiki.archlinux.org/title/PulseAudio#Microphone_echo/noise_cancellation
load-module module-echo-cancel use_master_format=1 use_volume_sharing=1 aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1 experimental_agc=0 noise_suppression=1 voice_detection=1 extended_filter=1" source_name=echoCancel_source sink_name=echoCancel_sink
set-default-source echoCancel_source
set-default-sink echoCancel_sink
.endif
从那时起,我注意到我无法在 GUI 中设置此源的端口,而使用默认源则可以。我有 2 个源。“内置音频模拟立体声”以及Monitor of Built-in Audio Analog Stereo
当我没有加载模块时。
如果没有module-echo-cancel
,当我将耳机插入混合输入和输出 3.5 毫米插孔时,音频接收器连接器会从 切换Internal
到Headset
。这很可能是因为模块module-switch-on-port-available
已加载。但是当我将同一耳机插入 3.5 毫米插孔时,音频源不会自动切换。我该如何实现?
使用回声消除模块,它会选择所选的音频端口并将其过滤器应用于该端口。但是我必须点击 4 次才能更改它。首先切换回未过滤的输入,然后切换端口,然后切换回过滤后的输入。每当我拔下耳机时,它都会切换回内置麦克风,质量非常差。
我如何才能自动切换到新的源端口?如果这是另一回事,我如何才能让回声消除自动使用新的源端口?
我已阅读 freedesktop 和 arch wiki 上的 pulseaudio 文档,但找不到任何对我有帮助的东西。我以为module-switch-on-port-available
可以这样做,但它已经加载了。它只会自动切换输出端口,而不会切换输入。
当 Pulse 填充 GUI 中的下拉列表时,它会检测耳机麦克风,但它不会自动切换。
答案1
我也曾被这个问题困扰过。我找到了希望:pactl load-module module-switch-on-connect
然后我意识到如果你拔掉设备插头它就会回到原来的来源。
因此,要解决这个问题:while true; do pactl info | grep -q 'Default Source: alsa_input.pci-0000_00_0e.0.analog-stereo' && pactl set-default-source noechosource ; sleep 10; done &
我创建了一个无限循环,如果源是原始源,则将默认源设置为非回声源。
因此对于遇到此问题的人来说:
pactl 加载模块 模块切换连接
当为真时;执行 pactl info | grep -q'默认源:alsa_input.pci-0000_00_0e.0.analog-stereo'&& pactl set-default-source noechosource;睡眠 10;完成&
将“alsa_input.pci-0000_00_0e.0.analog-stereo”替换为您原来的默认源。同时将“noechosource”替换为您调用的无回声源。
您可以通过选择并使用以下命令来找到原始源名称:pactl info