DeepFilterNet est un logiciel capable de supprimer les bruits de votre micro pour ne laisser passer que la voix. Dans son exemple, le développeur a un aspirateur allumé à côté de lui et on ne l'entend pas. Personnellement, j'ai testé avec une radio à deux mètres de moi qui diffuse de la musique : On ne l'entend pas dans le micro.
DeepFilterNet est fourni sous forme d'application (pour filtrer un fichier .wav) et de plugin PipeWire. Il nécessite donc PipeWire installé dans votre système si vous voulez filtrer votre micro. Si vous n'avez que PulseAudio, cela ne marchera pas. Vous trouverez donc aussi ci-dessous aussi les instructions (pour Ubuntu/Mint) pour passer de PulseAudio à PipeWire.
Si vous n'avez pas PipeWire, voici les instructions pour passer de PulseAudio à PipeWire pour Ubuntu (source)
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
sudo apt update sudo apt install pipewire pipewire-audio-client-libraries
sudo apt install gstreamer1.0-pipewire libpipewire-0.3-{0,dev,modules} libspa-0.2-{bluetooth,dev,jack,modules} pipewire{,-{audio-client-libraries,pulse,media-session,bin,locales,tests}}
systemctl --user daemon-reload
systemctl --user --now disable pulseaudio.service pulseaudio.socket
systemctl --user --now enable pipewire pipewire-pulse
pactl info
Vous devriez voir:
Nom du serveur : PulseAudio (on PipeWire 0.3.71)
Mais ce n'est sans doute pas suffisant. PipeWire a besoin de tourner avec une priorité CPU plus élevée, mais les règles sécurité du système l'en empêchent peut-être. Pour vérifier:
systemctl --user status pipewire pipewire-session-manager
Vous devez voir les deux services en status active (running). Cependant, si vous avez les erreurs suivantes:
pipewire[1532]: mod.rt: RTKit error: org.freedesktop.DBus.Error.AccessDenied pipewire[1532]: mod.rt: could not set nice-level to -11: Permission non accordée pipewire[1532]: mod.rt: RTKit error: org.freedesktop.DBus.Error.AccessDenied pipewire[1532]: mod.rt: could not make thread 1637 realtime using RTKit: Permission non accordée
Alors il faut assouplir les règles PolKit. Ce n'est sans doute pas très beau, mais ça fait le job: Modifiez le fichier /usr/share/polkit-1/actions/org.freedesktop.RealtimeKit1.policy
:
--- org.freedesktop.RealtimeKit1.policy.old 2023-06-07 09:43:10.009017345 +0200 +++ org.freedesktop.RealtimeKit1.policy 2023-06-07 09:43:32.673371573 +0200 @@ -11,7 +11,7 @@ <message>Authentication is required to grant an application high priority scheduling</message> <message xml:lang="tr">Sürecin yüksek öncelikli çalıştırılabilmesi için yetki gerekiyor</message> <defaults> - <allow_any>no</allow_any> + <allow_any>yes</allow_any> <allow_inactive>yes</allow_inactive> <allow_active>yes</allow_active> </defaults> @@ -23,7 +23,7 @@ <message>Authentication is required to grant an application realtime scheduling</message> <message xml:lang="tr">Sürecin gerçek zamanlı çalıştırılabilmesi için yetki gerekiyor</message> <defaults> - <allow_any>no</allow_any> + <allow_any>yes</allow_any> <allow_inactive>yes</allow_inactive> <allow_active>yes</allow_active> </defaults>
Et en redémarrant les deux services précédents, vous ne devriez plus avoir l'erreur.
Il est maintenant temps de passer à l'installation de DeepFilterNet lui-même.
Installation :
mkdir -p ~/.ladspa/ mkdir -p ~/.config/pipewire/filter-chain.conf.d/
libdeep_filter_ladspa-x.x.x-x86_64-unknown-linux-gnu.so
et copiez-le dans ~/.ladspa
sous le nom libdeep_filter_ladspa.so
Configuration :
~/.config/pipewire/filter-chain.conf.d/
libdeep_filter_ladspa.so
. Exemple:plugin = /home/sebsauvage/.ladspa/libdeep_filter_ladspa.so
Vous ne devez pas utiliser ~
ou $HOME
.
"Attenuation Limit (dB)" 100
pour mettre la valeur que vous voulez. Entre 6 et 12 la réduction de bruit est faible. 18-24 est moyen. Je trouve que la valeur 60 marche bien (cela supprime le bruit de la frappe clavier et des clics souris). À 100 je trouve que la voix est un peu trop déformée.Lancement :
nohup pipewire -c filter-chain.conf &
En principe la source audio "DeepFilter Noise Canceling Source" sera disponible aux prochains redémarrage sans que vous n'ayez à faire de manipulations.
Avec un casque, vous pouvez écouter l'entrée micro avec:
pactl load-module module-loopback
Désactivez ensuite avec:
pactl unload-module module-loopback
Vous pouvez aussi vous amuser à comparer le spectogramme avec/sans ce filtre avec https://simplespectrogram.app/
Si vous modifiez le paramètre de filtrage (Attenuation Limit (dB)), il vous faudra redémarrer PipeWire et le module DeepFilterNet:
systemctl --user restart pipewire pipewire-pulse nohup pipewire -c filter-chain.conf &
puis re-sélectionnez comme micro par défaut "DeepFilter Noise Canceling Source".
Alternatives à DeepFilterNEt pour la suppression de bruit en temps réel: