如何将低通滤波器添加到系统范围的 PulseAudio 配置文件中?

Kyr*_*zou 1 sound pulseaudio

我想知道如何向系统范围的 PulseAudio 配置文件添加低通声音滤波器,以便只允许 18000Hz 以下的频率进入我的扬声器。

Dav*_*ter 5

PulseAudio 配置文件

系统范围的默认 PulseAudio 配置文件在/etc/pulse/default.pa每个用户配置文件中进行配置和覆盖(~/.pulse/default.pa如果后者存在)。PulseAudio 配置文件由一系列发给 PulseAudio 守护进程的命令组成。

  • 要应用新配置,需要重新启动 PulseAudio 守护进程:

    pulseaudio --kill
    pulseaudio --start
    
    Run Code Online (Sandbox Code Playgroud)

    如果守护程序在配置更改后没有启动,如果您省略该--start选项,您可以运行 PulseAudio un-daemonized,并且您可以使用--log-level一个或多个-v选项获取调试信息,例如:

    pulseaudio --kill
    pulseaudio --log-level=info
    
    Run Code Online (Sandbox Code Playgroud)
  • 除了重新启动 PulseAudio 守护程序,您还可以通过pactl或直接命令更改其配置和(卸载)加载模块pacmd。这通常比每次都重新启动守护进程进行微小更改要容易。

模块加载

要添加模块,请使用该load-module命令。你可以找到插件的LADSPA的形式在Ubuntu的软件源一的PulseAudio兼容的低通滤波器lowpass_iir_1891的包swh-plugins通过,并提供给的PulseAudiomodule-ladspa-sink模块。完整的命令如下所示:

load-module module-ladspa-sink plugin=lowpass_iir_1891 label=lowpass_iir master=<MASTER_SINK> sink_name=<NAME> [control=<FILTER_PARAMETERS>] [channel_map=<CHANNEL_MAP>] [channels=<CHANNEL_COUNT>]
Run Code Online (Sandbox Code Playgroud)

其中<MASTER_SINK>的是,从过滤器接收的音频数据的下行流“汇”的名称1<NAME>是过滤器模块代表信宿的名称。<FILTER_PARAMETERS>用于诸如截止频率和陡度之类的东西。有关其他参数和更多详细信息,请参阅模块上的 PulseAudio Wiki 条目

设置默认接收器

现在,如果您希望所有应用程序默认使用过滤器接收器,您需要像这样通知 PulseAudio:

set-default-sink <NAME>
Run Code Online (Sandbox Code Playgroud)

where<NAME>与上一节相同。

PulseAudio 存储使用它的每个应用程序的最后一个接收器,并且可以使用它来支持新的默认值。要重置那些删除~/.pulse/*-stream-volumes.tdb. 您还可以使用pavucontrol(GUI)或pactl move-sink-input(命令行)等工具配置每个流接收器。


1您可以使用 列出所有接收器pactl list short sinks。您的实际音频设备接收器名称通常由alsa_output、设备路径和通道配置文件名称组成,例如(在我的系统上)alsa_output.pci-0000_00_1b.0.analog-stereo