我的耳机有问题,我的麦克风播放我从电脑上听到的音频(应用程序音频,如 spotify/youtube 等,被我的麦克风拾取)
为了解决这个问题,我实现了一个回声消除脚本,它在系统启动时运行以下命令:
#!/usr/bin/env bash
pactl unload-module module-echo-cancel
pactl load-module module-echo-cancel aec_method=webrtc source_name=echocancel sink_name=echocancel1
pacmd set-default-source echocancel
pacmd set-default-sink echocancel1
这已经解决了上述问题。
不幸的是,这将我的耳机的输出从立体声变成了单声道,我想知道是否有办法将其从单声道改回立体声,或者是否可以在脚本中添加一些额外的东西来防止这种情况发生。
我尝试了以下命令来修复它,但无法恢复到立体声:
pacmd load-module module-remap-sink sink_name=echocancel-stereo master=echocancel1 channels=2 channel_map=left,right
我对 Linux 还很陌生(我最近从 Windows 转换过来)所以我想你可以称我为菜鸟,而且我对音频的工作原理知之甚少。
任何帮助都将不胜感激:)
答案1
对我来说,解决方案是指定主接收器和源设备并包含该use_master_format
选项。我创建了以下 bash 脚本:
#!/bin/bash
# masters
source_master=alsa_input.usb-Audio-Technica_AT2005USB-00.analog-stereo
sink_master=alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink
# names
source_name=input.echo-cancel
sink_name=output.echo-cancel
# properties
source_properties=device.description=$source_name
sink_properties=device.description=$sink_name
# other options
use_master_format=yes
# load the module
pactl load-module module-echo-cancel \
source_name=$source_name \
source_master=$source_master \
source_properties=$source_properties \
sink_name=$sink_name sink_master=$sink_master \
sink_properties=$sink_properties \
use_master_format=$use_master_format
您需要更改source_master
和sink_master
以匹配系统上的设备。您可以使用pactl list sinks
和pactl list sources
来获取名称。
可能还有其他方法可以解决这个问题,但这是我的解决方案。