如何基于单块双输入双输出声卡创建左麦克风声道+右监听声道的PulseAudio虚拟立体声源?
嘿,我完全懂你的需求——把物理左麦克风的信号死死钉在虚拟立体声源的左声道,同时把当前右输出的音频抓过来死死钉在右声道,对吧?之前折腾PulseAudio的配置确实容易卡壳,我给你一套亲测有效的步骤,一步步来应该就能搞定:
第一步:先搞清楚你的设备准确名称
PulseAudio里的设备名没法瞎猜,得先查清楚:
- 打开终端,输入
pactl list sources short,找到你的左麦克风输入(通常名字带alsa_input和analog-stereo),把它的完整名称记下来,比如alsa_input.usb-Corsair_VOID_PRO-00.analog-stereo - 再输入
pactl list sinks short,找到你的右输出设备,它对应的监听源就是在原名称后加.monitor,比如右输出是alsa_output.pci-0000_00_1f.3.analog-stereo,那监听源就是alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
第二步:修改PulseAudio配置文件
打开~/.config/pulse/default.pa(如果没有就新建一个),把下面的代码加进去,记得替换掉里面的占位符:
# 1. 创建一个虚拟空Sink,作为立体声信号的载体 load-module module-null-sink sink_name=virtual_stereo_sink sink_properties=device.description="Virtual_Stereo_Recording_Source" # 2. 处理左麦克风:转成单声道,硬定位到左声道 # 替换YOUR_LEFT_MIC_SOURCE为第一步查到的左麦克风源名称 load-module module-remap-source source_name=left_mic_remap master=YOUR_LEFT_MIC_SOURCE channels=1 channel_map=left remix=no # 把处理后的左麦信号路由到虚拟Sink的左声道 load-module module-loopback source=left_mic_remap sink=virtual_stereo_sink channels=1 source_channel_map=left sink_channel_map=left latency_msec=10 # 3. 处理右输出的监听信号:转成单声道,硬定位到右声道 # 替换YOUR_RIGHT_OUTPUT_MONITOR为第一步查到的右输出监听源名称 load-module module-remap-source source_name=right_output_monitor_remap master=YOUR_RIGHT_OUTPUT_MONITOR channels=1 channel_map=right remix=no # 把处理后的监听信号路由到虚拟Sink的右声道 load-module module-loopback source=right_output_monitor_remap sink=virtual_stereo_sink channels=1 source_channel_map=right sink_channel_map=right latency_msec=10
第三步:重启PulseAudio生效
在终端输入 pulseaudio -k,PulseAudio会自动重启加载新配置。
第四步:测试你的虚拟源
- 再次输入
pactl list sources short,你会看到一个叫virtual_stereo_sink.monitor的源,这就是我们要的虚拟立体声源 - 打开录音软件(比如Audacity),选择这个源作为输入,然后:
- 对着左麦克风说话,左声道波形会跳动
- 播放音频到右输出接口,右声道波形会跳动
- 两个信号完全独立,没有混音,完美实现硬声像定位!
可能的小调整
如果遇到延迟问题,可以把latency_msec的值调小一点(比如5),但数值太低可能会出现爆音,自己试个合适的数值就行。
内容的提问来源于stack exchange,提问作者PatienceAllergy
相关产品推荐
相关产品推荐

