当 alsa/pulseaudio 闲置正好 5 秒时总是发出流行声?

当 alsa/pulseaudio 闲置正好 5 秒时总是发出流行声?

aplay每当用户与界面交互时,我都会播放简短的音效。

我注意到,我可以以任何顺序播放任何声音,只要两个声音在 5 秒内播放,过渡就很清晰,但间隙超过 5 秒,就会发出可怕的爆裂声!

请注意,我的所有声音文件的持续时间均小于 1 秒。

为了解决这个问题,我所做的就是创建一个 5 秒长的低采样率silence.wav 文件,该文件在 .sh 脚本中循环(这绝对不是一个长期解决方案):

静默暴力破解:

#!/bin/bash
while [ 1 ] ; do
 aplay sounds/blank.wav
done

现在,即使有的话,爆裂声也很少了。

所以我不明白的是为什么在这 5 秒内发生了一些变化会导致爆裂?如何将音频配置为在长时间延迟后播放声音时保持不会爆音的状态?

我已经尝试过 /etc/pulse/default.pa 和 /etc/pulse/daemon.config 但进展为零。

请注意,我使用的是单核树莓派,但如果静默暴力破解有帮助,那么还有希望吗?

[更新]

我遇到了一种稍微优雅的方法来持续对设备进行强力静音:

aplay /dev/zero
    
Playing raw data '/dev/zero' : Unsigned 8 bit, Rate 8000 Hz, Mono

但由于某种原因,它会产生高频音调。有可能有类似的方法来做到这一点吗?

[更新]

aplay -r 8000 -f S16_LE /dev/zero

这确实有效,但需要不断运行线程以保持开放状态,从而产生一些开销。但现在的音频非常干净。

[编辑]

此功能与pulseaudio模块 module-suspend-on-idle 有关。也可以禁用该模块。首先尝试临时:

pactl unload-module module-suspend-on-idle

如果您满意,则可以在pulseaudio配置文件中临时设置此设置。

相关内容