Outils pour utilisateurs

Outils du site


deepfilternet

Suppression de bruit avec DeepFilterNet

Cette page est récente et contient donc peut-être encore quelques coquilles.

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 (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 @@
     <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 de DeepFilterNet

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:

Configuration :

  • 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:

deepfilternet.txt · Dernière modification : 2023/06/07 11:13 de sebsauvage