48 lines
1.4 KiB
Nix
48 lines
1.4 KiB
Nix
|
{ config, pkgs, ... }:
|
||
|
|
||
|
let
|
||
|
json = pkgs.formats.json {};
|
||
|
pw_rnnoise_config = {
|
||
|
"context.modules"= [
|
||
|
{ "name" = "libpipewire-module-filter-chain";
|
||
|
"args" = {
|
||
|
"node.description" = "Noise Canceling source";
|
||
|
"media.name" = "Noise Canceling source";
|
||
|
"filter.graph" = {
|
||
|
"nodes" = [
|
||
|
{
|
||
|
"type" = "ladspa";
|
||
|
"name" = "rnnoise";
|
||
|
"plugin" = "${pkgs.rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so";
|
||
|
"label" = "noise_suppressor_stereo";
|
||
|
"control" = {
|
||
|
"VAD Threshold (%)" = 50.0;
|
||
|
};
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
"audio.position" = [ "FL" "FR" ];
|
||
|
"capture.props" = {
|
||
|
"node.name" = "effect_input.rnnoise";
|
||
|
"node.passive" = true;
|
||
|
};
|
||
|
"playback.props" = {
|
||
|
"node.name" = "effect_output.rnnoise";
|
||
|
"media.class" = "Audio/Source";
|
||
|
};
|
||
|
};
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
in
|
||
|
{
|
||
|
environment.systemPackages = with pkgs; [
|
||
|
rnnoise
|
||
|
rnnoise-plugin
|
||
|
];
|
||
|
|
||
|
environment.etc."pipewire/pipewire.conf.d/99-input-denoising.conf" = {
|
||
|
source = json.generate "99-input-denoising.conf" pw_rnnoise_config;
|
||
|
};
|
||
|
}
|