自动更改声音输入输出设备

自动更改声音输入输出设备

我必须插入我的 USB 音频适配器(4300054 Gigawire USB 音频适配器)用于音频输入,因为它有一个用于语音的组合输入输出端口。完成此操作后,我必须打开“声音设置”并手动选择 USB 音频适配器用于输入和输出,如果我不这样做,系统默认仍处于选中状态。

有没有什么办法,让我可以在插入时让 Ubuntu 自动选择 USB 音频适配器作为默认适配器?

答案1

pulseaudio 模块连接开关模块切换端口可用启用连接时自动切换音频设备的功能。使用以下命令查看是否已加载以下任何模块:

pactl list short modules

如果没有,则通过在终端中发出以下命令之一或两个来测试是否可以使自动切换正常工作:

pactl load-module module-switch-on-connect
pactl load-module module-switch-on-port-available

成功后,将以下一行或两行添加到您的/etc/pulse/default.pa

load-module module-switch-on-connect
load-module module-switch-on-port-available

这样,每次登录或重新启动 pulseaudio 守护进程时,都会加载这些模块。

请注意,本地用户设置~/.config/pulse/default.pa将覆盖系统范围设置。如果您有这样的本地文件,您将在那里输入上述命令。

如果仍然不起作用,则可能是您在本地设置有冲突default.pa。 然后可能需要(暂时)重命名此文件,然后重新启动 Pulseaudio 服务器,然后再尝试上述操作:

mv ~/.config/pulse/default.pa ~/.config/pulse/default.pa.old
pulseaudio -k

答案2

~/.config/pulse/default.pa如果不存在则创建并附加

.include /etc/pulse/default.pa
load-module module-switch-on-connect

这比编辑更好/etc/pulse/default.pa

之后你应该运行pulseaudio -k && pulseaudio --start以使更改生效。感谢 lreeder 指出这一点

答案3

我测试了在文档或论坛上找到的解决方案很长时间,这是唯一有效的解决方案。

所以这里有一个我创建的脚本,您可以在启动会话时添加它(不幸的是,它不适用于整个计算机,因为 PulseAudio 是一个为每个用户独立运行的服务)。

#!/bin/bash
index=$(pacmd list-sources | egrep 'index|ports|analog-input-headset-mic' | egrep '\*\sindex:\s+[0-9]'  | cut -d':' -f2);

acpi_listen | while IFS= read -r line;
do
    if [ "$line" = "jack/headphone HEADPHONE plug" ]
    then
       pacmd set-source-port $index analog-input-headset-mic;
    elif [ "$line" = "jack/headphone HEADPHONE unplug" ]
    then
       pacmd set-source-port $index analog-input-internal-mic;
    fi
done

在我的资料来源的第一个链接上可以找到一个解决方案,但不幸的是它并不适用于所有电脑。以下是允许我创建此脚本的链接

相关内容