我已经为此苦苦思索了近 6 个小时,但我完全被难住了。
我有一副 Logitech Pro X 耳机,刚刚从 Windows 切换回 Mint(您没有将 AI 塞进我的操作系统!),我正尝试让环绕声在其上运行。
我的规格(供快速参考):
- Linux Mint 21.3
- 内核版本 5.15.0-116-generic
- PulseAudio 版本 15.99
- alsa-base 版本 1.0.25
aplay -lL
列出耳机具有高达 7.1 的环绕声:
hw:CARD=X,DEV=0
PRO X, USB Audio
Direct hardware device without any conversions
plughw:CARD=X,DEV=0
PRO X, USB Audio
Hardware device with all software conversions
sysdefault:CARD=X
PRO X, USB Audio
Default Audio Device
front:CARD=X,DEV=0
PRO X, USB Audio
Front output / input
surround21:CARD=X,DEV=0
PRO X, USB Audio
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=X,DEV=0
PRO X, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=X,DEV=0
PRO X, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=X,DEV=0
PRO X, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=X,DEV=0
PRO X, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=X,DEV=0
PRO X, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=X,DEV=0
PRO X, USB Audio
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=X,DEV=0
PRO X, USB Audio
Direct sample mixing device
usbstream:CARD=X
PRO X
USB Stream Output
a52:CARD=X
PRO X
pactl
, 另一方面:
Card #3
Name: alsa_card.usb-Logitech_PRO_X_000000000000-00
Driver: module-alsa-card.c
Owner Module: 10
Properties:
alsa.card = "3"
alsa.card_name = "PRO X"
alsa.long_card_name = "Logitech PRO X at usb-0000:0b:00.3-2, full speed"
alsa.driver_name = "snd_usb_audio"
device.bus_path = "pci-0000:0b:00.3-usb-0:2:1.0"
sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:0b:00.3/usb5/5-2/5-2:1.0/sound/card3"
udev.id = "usb-Logitech_PRO_X_000000000000-00"
device.bus = "usb"
device.vendor.id = "046d"
device.vendor.name = "Logitech, Inc."
device.product.id = "0aaa"
device.product.name = "PRO X"
device.serial = "Logitech_PRO_X_000000000000"
device.string = "3"
device.description = "PRO X"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-usb"
Profiles:
input:mono-fallback: Mono Input (sinks: 0, sources: 1, priority: 1, available: yes)
output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority: 1500, available: yes)
output:analog-stereo+input:mono-fallback: Analog Stereo Output + Mono Input (sinks: 1, sources: 1, priority: 1501, available: yes)
output:iec958-stereo: Digital Stereo (IEC958) Output (sinks: 1, sources: 0, priority: 500, available: yes)
output:iec958-stereo+input:mono-fallback: Digital Stereo (IEC958) Output + Mono Input (sinks: 1, sources: 1, priority: 501, available: yes)
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
Active Profile: output:analog-stereo+input:mono-fallback
Ports:
analog-input-mic: Microphone (type: Mic, priority: 8700, latency offset: 0 usec, availability unknown)
Properties:
device.icon_name = "audio-input-microphone"
Part of profile(s): input:mono-fallback, output:analog-stereo+input:mono-fallback, output:iec958-stereo+input:mono-fallback
analog-output: Analog Output (type: Analog, priority: 9900, latency offset: 0 usec, availability unknown)
Part of profile(s): output:analog-stereo, output:analog-stereo+input:mono-fallback
iec958-stereo-output: Digital Output (S/PDIF) (type: SPDIF, priority: 0, latency offset: 0 usec, availability unknown)
Part of profile(s): output:iec958-stereo, output:iec958-stereo+input:mono-fallback
同样地,alsamixer
:
最后,确实speaker-test -D default -c 8
运行了,但仍然只在立体声模式下运行 - 也就是说,所有的通道都被挤压到左边、右边或两者。speaker-test -D surround71:CARD=X,DEV=0 -c 8
返回Broken configuration for playback: no configurations available: Invalid argument
。
我已经创建并daemon.conf
修改了、和 LFE 设置,以及添加
(我相信我已经按正确的顺序进行了映射,但我尝试了几个 - 包括 5.1 环绕声 - 但都没有起作用。)default.pa
~/.config/pulse
default-sample-channels
default-channel-map
load-module module-combine channels=8 channel_map=front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
到目前为止,我读到的所有内容都表明它应该开箱即用,否则上述更改将使其正常工作。我甚至安装了 pipewire,但遇到了其他我无法理解的问题。我也研究过 dcaenc,但我的理解是它需要使用正确的音频编解码器格式化传入的音频,这显然不适用于游戏耳机。
任何帮助都将不胜感激 - 特别是如果他们可以解释一下幕后发生的事情。
后期补充:似乎aplay
还列出了我的 Vive 具有 7.1 环绕声,但 PA 也拒绝识别它。很奇怪。
您的耳机没有环绕声;)这是 Windows 驱动程序所致!
你只有两只耳朵,所以,除非你的耳机变得非常笨重,否则你的耳机本身不可能拥有环绕声系统。幸运的是,你不必这样做——让你的大脑感知空间音频的机制在某种程度上是众所周知的,并且可以模拟(例如:声音来自很远的地方?延迟一段时间,降低音量,混合到两个耳机并衰减高频,因为你的后脑勺传导这些不是很好。)。
罗技称您的耳机具有“DTS 耳机 X”。这真是一项技术!它接收多个流,并将它们计算为立体声信号,从而很好地模拟空间感知。要做到这一点,必须有人开发算法并校准耳机(这就是杜比赚钱的方式:开发算法和格式,并授权它们)。
对于技术倾向:您可以将其建模(初步)为应用于环绕声道的脉冲响应,以获得耳机立体声声道的和数。
所以,这是软件问题,而不是硬件问题。Windows 需要一些专有驱动程序来实现这一点。在 Linux 上,您的默认声音系统“Pipewire”具有可以为您应用此类模拟通道的过滤链。遗憾的是,我还没有发现这种过滤链有用户友好的图形界面。
您确实需要一些预先计算好的通道,有了这些通道,您就可以设置一个滤波器链,通过计算为您的耳机提供环绕声效果。还没有在 pipewire 上尝试过 - 但这里有来自 pipewire wiki 的虚拟环绕声示例。