DeepFilterNet amazing quality voice filter

If you can run it its pretty amazing as it takes 25% of a single big core on a RK3588 but don’t have a Pi4 to test.

It has a ladspa plugin with instructions for pipewire, but if alsa will share what I did
/etc/asound.conf

pcm.ladspadf {
    type ladspa
    slave.pcm "plughw:4,0";
    path "/usr/lib/ladspa";
    plugins [{
        label deep_filter_mono
        input {
            controls [ 84 -15 ]
        }
    }]
}

pcm.deepfilter {
    type plug
    slave {
    pcm "ladspadf"
    channels 1
    rate 48000
}
}

The deepfilter pcm will act as a auto resampler so
arecord -Ddeepfilter -r16000 -fS16_LE -c1 test.wav

I agree, this project looks amazing !
The sample audios promises a stunning improvement , unfortunately I was not able to filter the audio using the ladspa on my Satellite (AllWinner H3)
The ladspa filter loads, but reports :
Underrun detected (RTF: 2.41). Processing too slow!
overrun!!! (at least 284.917 ms long)

Question:

Assuming it’d be possible to run the filter on the Master, before it lands in the ASR or silencedetection: where would it best to add it ? Any ideas or guidance appreciated

(I understand that the wake word will use unfiltered audio, but I can live with that, for now)

Yeah I think so as that was what I was thinking as you often get those errors at the start as it seems the filter needs to kick in at the start.
If your machine is too slow then you get those errors all the time.

There should be a KWS/Audio processing server that KWS link to and you can have a filter chain before ASR.

Currently the dev has a help request to split the model so that it will run in x2 threads but its using a TinyML Rust lib by Sonos called tract so that is single threaded so the filter currently runs single threaded.
Something with a little more Ooomf than a Pi like a RK3588 runs at 25% load on a big core though so it must be very near capable of running on a Pi if split into x2 threads.

1 Like