每 15 分钟以特定音量播放一次声音

每 15 分钟以特定音量播放一次声音

我的监听扬声器在没有接收到一定级别的声音输入时会进入睡眠状态。当我安静地观看/聆听某些内容时,扬声器经常会关闭。

为了解决这个问题,我crontab使用 Sox Play 每 15 分钟播放一个 10Hz 波形文件:

*/15 * * * * XDG_RUNTIME_DIR=/run/user/1000 /usr/bin/play -v 1.25 /home/USER/rmas/10Hz.wav

这在大部分时间都有效,但我必须确保我的系统音量提高到 40+% 左右,并且我的应用程序音量超低。

这是由于-v( --volume) 选项相对的到系统音量。

我需要一种以绝对方式做到这一点的方法,其中声音以 100%(或用户指定的变量)音量播放,而不影响其他任何声音的音量。我不希望弹出任何窗口(操作应该完全在后台发生)。

我能用 Sox 做到这一点吗?或者我可以采取什么其他路线?

  • 流行!_OS 22.04 -
  • KRK Rokit 5 显示器(第 2 代)-
  • Scarlett 2i2 USB 音频接口将声音传送到扬声器。

答案1

所以这里的问题是,根据设计,您的音响系统的“系统音量”会影响所有声音源,通过影响所有流相加后的增益。无法解决这个问题!


                                    +--- Sound Server---------------+
                                    |                           /----- Firefox
USB Audio Interface <--- ALSA <---- | Mixer for ALSA device XYZ ------ VLC
                                    |                           \----- play
                                    +-------------------------------+
                                        ^^^
                                        Volume adjustment happens here

因此,明智的解决方案是创建一个新的虚拟设备,使其成为所有应用程序的默认设备,并且不要将其用于play 10Hz.wav


                  +--- Sound Server-----------------------------+
                  |                                          /----- Firefox
… <--- ALSA <---- | Mixer for ALSA device XYZ <- Virtual Mixer----- VLC
                  |                           \-------------------- play
                  +---------------------------------------------+
                                                      ^^^
                                        Volume adjustment happens here

您可能使用 Pipewire 作为声音服务器,所以Pipewire 文档有一个很好的解释耦合流你会想要的——这只是一个小的配置调整。

相关内容