====== Suppression de bruit avec DeepFilterNet ======
Cette page est récente et contient donc peut-être encore quelques coquilles.
[[https://github.com/Rikorose/DeepFilterNet|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.
----
===== Installation de PipeWire =====
Si vous n'avez pas PipeWire, voici les instructions pour passer de PulseAudio à PipeWire pour Ubuntu ([[https://linuxconfig.org/how-to-install-pipewire-on-ubuntu-linux|source]])
* Ajoutez les dépôts ppa PipeWire :sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
* Installation : sudo apt update
sudo apt install pipewire pipewire-audio-client-libraries
* Certains paquets peuvent être nécessaire si vous utilisez de l'audio via Blutooth, GStreamer ou JACK: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}}
* Rechargez les services:systemctl --user daemon-reload
* Désactivez PulseAudio : systemctl --user --now disable pulseaudio.service pulseaudio.socket
* Activez PipeWire : systemctl --user --now enable pipewire pipewire-pulse
* Vérifiez que l'audio passe bien par PipeWire: 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 @@
Authentication is required to grant an application high priority scheduling
Sürecin yüksek öncelikli çalıştırılabilmesi için yetki gerekiyor
- no
+ yes
yes
yes
@@ -23,7 +23,7 @@
Authentication is required to grant an application realtime scheduling
Sürecin gerçek zamanlı çalıştırılabilmesi için yetki gerekiyor
- no
+ yes
yes
yes
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 de DeepFilterNet =====
* Page officielle : https://github.com/Rikorose/DeepFilterNet
* Instruction d'installation du plugin PipeWire (que nous allons reprendre ici): https://github.com/Rikorose/DeepFilterNet/blob/main/ladspa/filter-chain-configs/deepfilter-mono-source.conf
**Installation :**
* Création des répertoires nécessaires:mkdir -p ~/.ladspa/
mkdir -p ~/.config/pipewire/filter-chain.conf.d/
* Mise en place de la librairie de filtrage:
* Allez sur https://github.com/Rikorose/DeepFilterNet/releases/latest
* Téléchargez le fichier ''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 :**
* Copiez le fichier https://raw.githubusercontent.com/Rikorose/DeepFilterNet/main/ladspa/filter-chain-configs/deepfilter-mono-source.conf dans ''~/.config/pipewire/filter-chain.conf.d/''
* Il faut maintenant modifier ce fichier:
* à la ligne plugin = ..., mettez le chemin absolu du fichier ''libdeep_filter_ladspa.so''. Exemple:plugin = /home/sebsauvage/.ladspa/libdeep_filter_ladspa.so
Vous ne **devez pas** utiliser ''~'' ou ''$HOME''.
* Si vous voulez un filtrage un peu moins fort, modifiez la ligne ''"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 :**
* Lancez avec:nohup pipewire -c filter-chain.conf &
* Vous devriez voir apparaître une ou plusieurs entrées virtuelles "DeepFilter Noise Cancelling Source" que vous pouvez utiliser comme micro dans vos applications.
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 =====
Alternatives à DeepFilterNEt pour la suppression de bruit en temps réel:
* J'utilisais auparavant l'excellent NoiseTorch, mais il n'a plus l'air de fonctionner depuis certaines mises à jour : https://github.com/noisetorch/NoiseTorch
* https://github.com/wwmm/easyeffects