linux (Debian) 中 HDMI 音频输出的破裂和爆裂声

瓦玛

问题描述

我正在尝试让音频在我的 Linux 安装中正常工作。然而,每次音频信号变为零时,即使只有大约半秒,当它恢复时,我会听到扬声器发出咔哒声/爆裂声。这在聆听没有持续背景噪音的音源时最为明显,其中每次角色开始或停止说话时以及任何时候暂停或重新开始音乐播放时都会发生咔嗒声。虽然典型的现代电影永远不会完全无声,但某些类型的内容,例如脱口秀或一键通语音通信软件,已被彻底破坏。

系统硬件和软件设置

我已经构建了一台带有 Intel i5 处理器的媒体 PC。主板是华硕 Prime B560M-A,使用的显示器是 LG CX 系列 OLED。我正在使用 Debian 测试(Bullseye)和 Pulseaudio,这是 Debian 的默认设置。

声音通过 HDMI1 向外发送,电视通过其音频回传通道 (ARC) 将其转发到 Harman Kadron AVR (171S)。Pulseaudio 输出模式为“HDMI1 数字立体声”,启用了多种直通音频格式。

问题隔离和推测原因

似乎 Debian 中的音频系统省电(或其他)功能在检测到完全静音时会立即关闭音频信号。这会导致 AVR 关闭其音频输出,从而产生咔嗒声。当声音恢复时,反过来也会发生同样的情况。

我可以通过观察 AVR 中的音频格式指示器来确认这一点。当我从放大器切换到信号源时,它会显示正在接收的格式。如果有信号,AVR 会显示“2/0/0 48kHz ARC”(用于常规 PCM)或类似 3/2/1 48kHz ARC(用于 DTS)的信息。在Debian中,当我在音量为零的任何时候切换到ARC输入时,接收器显示“--- ARC”,表示完全没有信号。看起来信号在达到零时立即被杀死。

我怎么知道这是 Linux/Debian 问题

此时仍有多种选择。如果 AVR 仅接收零,则可能是 AVR 本身正在关闭,也可能是电视在仅接收零时停止发送任何信号。但是,电视处于最简单的直通模式,我可以通过 Playstation 4 控制台测试相同的设置来将问题隔离到 Debian。

在完全相同的情况下,当 PS4 完全没有声音播放时,AVR 仍然报告“2/0/0 ARC”。当音频播放停止或继续时,没有任何破裂和爆裂声。即使用 PS4,音频信号永远不会完全中断。

我尝试了什么?

我已经在这个网站和整个互联网上搜索了有类似问题的人,并找到了以下建议。

这已设置为 0:

/sys/module/snd_hda_intel/parameters/power_save

这已设置为 N:

/sys/module/snd_hda_intel/parameters/power_save_controller

这些更改已永久生效:

root@mycomputername|/etc/modprobe.d:cat audio_disable_powersave.conf
options snd-hda-intel power_save=0 power_save_controller=N

我已在某些位置关闭了pulseaudio中的静音空闲接收器

/etc/pulse/default.pa
/etc/pulse/system.pa

通过注释掉该行:

### Automatically suspend sinks/sources that become idle for too long
#load-module module-suspend-on-idle

此更改后,Pulseaudio 已重新启动。

我还通过将其设置为 Y 在 hdmi 输出模块中启用了静默流:

/sys/module/snd_hda_codec_hdmi/parameters/enable_silent_stream

它以与上述模块设置相同的方式永久化。

此外,我已经禁用了 Alsamixer 的“自动静音模式”,尽管这应该没有任何影响,因为我认为它与耳机插孔有关。

一些消息来源还建议通过 aplay 发送零流以保持信号有效。我已经通过使用:

aplay /dev/zero -f S16_LE

以上都没有任何效果。按下暂停总是会立即产生点击,输出中的任何静音总是会产生立即点击。在此之后检查 AVR 信号模式总是显示它根本没有收到任何信号。

我完全束手无策,想不出其他可以尝试的方法,并且非常感谢任何实际解决此问题的人的帮助。

瓦玛

最后,我没有找到满意的答案,而且我的情况似乎没有好的解决方案,可能是因为 AVR 中的自动化。目前尚不清楚为什么 PS4 能够保持信号有效,但至少以下内容是相同的:

/usr/bin/play -qn synth sin 10 gain -191

它低于我的扬声器的灵敏度和它的低频截止频率。如果它处于活动状态,我可以在不听到流行音乐的情况下暂停音乐。

(编辑):没有人提供更好的解决方案,因此,我接受了这个答案。此外,为了使答案更普遍有用,值得注意的是,如果您的信号输出数据格式是 16 位而不是 32 位,请使用:

/usr/bin/play -qn synth sin 10 gain -95

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章