Un cadre d'amélioration de la parole de faible complexité pour l'audio en bande complet (48 kHz) en utilisant le filtrage profond.
Pour l'intégration du pipewire en tant que microphone de suppression du bruit virtuel, regardez ici.
Pour exécuter la démo (Linux uniquement) à utiliser:
cargo +nightly run -p df-demo --features ui --bin df-demo --releaseNouvelle démo Deepfilternet: Deepfilternet: amélioration de la parole en temps réel motivé perceptuellement
Nouveau document de filtrage multi-trames: filtrage multi-trame profond pour les aides auditives
Version en temps réel et un plugin LaDSPA
deep-filter audio-file.wavPapier DeepFilternet2: DeepFilternet2: Vers l'amélioration de la parole en temps réel sur les appareils intégrés pour l'audio en bande complète
Papier d'origine DeepFilternet: DeepFilternet: un cadre d'amélioration de la parole de faible complexité pour l'audio en bande complet basé sur le filtrage profond
Téléchargez un binaire à filtre profond pré-compilé à partir de la page de version. Vous pouvez utiliser deep-filter pour supprimer le bruit dans les fichiers audio .wav bruyants. Actuellement, seuls les fichiers WAV avec un taux d'échantillonnage de 48 kHz sont pris en charge.
USAGE:
deep-filter [OPTIONS] [FILES]...
ARGS:
< FILES > ...
OPTIONS:
-D, --compensate-delay
Compensate delay of STFT and model lookahead
-h, --help
Print help information
-m, --model < MODEL >
Path to model tar.gz. Defaults to DeepFilterNet2.
-o, --out-dir < OUT_DIR >
[default: out]
--pf
Enable postfilter
-v, --verbose
Logging verbosity
-V, --version
Print version informationSi vous souhaitez utiliser le backend Pytorch, par exemple pour le traitement GPU, voir plus loin pour l'utilisation du Python.
Ce cadre prend en charge Linux, MacOS et Windows. La formation n'est testée que sous Linux. Le cadre est structuré comme suit:
libDF contient du code de rouille utilisé pour le chargement des données et l'augmentation.DeepFilterNet contient une formation, une évaluation et une visualisation DeepFilternet Code ainsi que des poids de modèle pré-entraînés.pyDF contient un wrapper Python de boucle de traitement LIBDF STFT / ISTFT.pyDF-data contient un wrapper Python de la fonctionnalité de l'ensemble de données LIBDF et fournit un chargeur de données Pytorch.ladspa contient un plugin LaDSPA pour la suppression du bruit en temps réel.models contient pré-entraîné pour une utilisation dans Deepfilternet (Python) ou Libdf / Filter en profondeur (rouille)Installez la roue Python DeepFilternet via PIP:
# Install cpu/cuda pytorch (>=1.9) dependency from pytorch.org, e.g.:
pip install torch torchaudio -f https://download.pytorch.org/whl/cpu/torch_stable.html
# Install DeepFilterNet
pip install deepfilternet
# Or install DeepFilterNet including data loading functionality for training (Linux only)
pip install deepfilternet[train]Pour améliorer les fichiers audio bruyants à l'aide de DeepFilternet Run
# Specify an output directory with --output-dir [OUTPUT_DIR]
deepFilter path/to/noisy_audio.wav Installez la cargaison via Rustup. Utilisation d'un conda ou d' virtualenv recommandé. Veuillez lire les commentaires et exécuter uniquement les commandes dont vous avez besoin.
Installation de dépendances python et libdf:
cd path/to/DeepFilterNet/ # cd into repository
# Recommended: Install or activate a python env
# Mandatory: Install cpu/cuda pytorch (>=1.8) dependency from pytorch.org, e.g.:
pip install torch torchaudio -f https://download.pytorch.org/whl/cpu/torch_stable.html
# Install build dependencies used to compile libdf and DeepFilterNet python wheels
pip install maturin poetry
# Install remaining DeepFilterNet python dependencies
# *Option A:* Install DeepFilterNet python wheel globally within your environment. Do this if you want use
# this repos as is, and don't want to develop within this repository.
poetry -C DeepFilterNet install -E train -E eval
# *Option B:* If you want to develop within this repo, install only dependencies and work with the repository version
poetry -C DeepFilterNet install -E train -E eval --no-root
export PYTHONPATH= $PWD /DeepFilterNet # And set the python path correctly
# Build and install libdf python package required for enhance.py
maturin develop --release -m pyDF/Cargo.toml
# *Optional*: Install libdfdata python package with dataset and dataloading functionality for training
# Required build dependency: HDF5 headers (e.g. ubuntu: libhdf5-dev)
maturin develop --release -m pyDF-data/Cargo.toml
# If you have troubles with hdf5 you may try to build and link hdf5 statically:
maturin develop --release --features hdf5-static -m pyDF-data/Cargo.tomlPour améliorer les fichiers audio bruyants à l'aide de DeepFilternet Run
$ python DeepFilterNet/df/enhance.py --help
usage: enhance.py [-h] [--model-base-dir MODEL_BASE_DIR] [--pf] [--output-dir OUTPUT_DIR] [--log-level LOG_LEVEL] [--compensate-delay]
noisy_audio_files [noisy_audio_files ...]
positional arguments:
noisy_audio_files List of noise files to mix with the clean speech file.
optional arguments:
-h, --help show this help message and exit
--model-base-dir MODEL_BASE_DIR, -m MODEL_BASE_DIR
Model directory containing checkpoints and config.
To load a pretrained model, you may just provide the model name, e.g. ` DeepFilterNet ` .
By default, the pretrained DeepFilterNet2 model is loaded.
--pf Post-filter that slightly over-attenuates very noisy sections.
--output-dir OUTPUT_DIR, -o OUTPUT_DIR
Directory in which the enhanced audio files will be stored.
--log-level LOG_LEVEL
Logger verbosity. Can be one of (debug, info, error, none)
--compensate-delay, -D
Add some paddig to compensate the delay introduced by the real-time STFT/ISTFT implementation.
# Enhance audio with original DeepFilterNet
python DeepFilterNet/df/enhance.py -m DeepFilterNet path/to/noisy_audio.wav
# Enhance audio with DeepFilterNet2
python DeepFilterNet/df/enhance.py -m DeepFilterNet2 path/to/noisy_audio.wav from df import enhance , init_df
model , df_state , _ = init_df () # Load default model
enhanced_audio = enhance ( model , df_state , noisy_audio )Voir ici pour un exemple complet.
Le point d'entrée est DeepFilterNet/df/train.py . Il s'attend à un répertoire de données contenant un ensemble de données HDF5 ainsi qu'un fichier JSON de configuration de jeu de données.
Ainsi, vous devez d'abord créer vos ensembles de données au format HDF5. Chaque ensemble de données ne contient généralement que la formation, la validation ou le test de bruit, de la parole ou des rires.
# Install additional dependencies for dataset creation
pip install h5py librosa soundfile
# Go to DeepFilterNet python package
cd path / to / DeepFilterNet / DeepFilterNet
# Prepare text file (e.g. called training_set.txt) containing paths to .wav files
#
# usage: prepare_data.py [-h] [--num_workers NUM_WORKERS] [--max_freq MAX_FREQ] [--sr SR] [--dtype DTYPE]
# [--codec CODEC] [--mono] [--compression COMPRESSION]
# type audio_files hdf5_db
#
# where:
# type: One of `speech`, `noise`, `rir`
# audio_files: Text file containing paths to audio files to include in the dataset
# hdf5_db: Output HDF5 dataset.
python df / scripts / prepare_data . py - - sr 48000 speech training_set . txt TRAIN_SET_SPEECH . hdf5Tous les ensembles de données doivent être mis à disposition dans un dossier d'ensemble de données pour le script de train.
Le fichier de configuration de l'ensemble de données doit contenir 3 entrées: "Train", "valide", "test". Chacun de ceux-ci contient une liste d'ensembles de données (par exemple, une parole, un bruit et un ensemble de données RIR). Vous pouvez utiliser plusieurs ensembles de données de discours ou de bruit. Facultativement, un facteur d'échantillonnage peut être spécifié qui peut être utilisé pour sur / sous-échantillonner l'ensemble de données. Disons que vous avez un ensemble de données spécifique avec des bruits transitoires et que vous souhaitez augmenter la quantité de bruits non stationnaires par suréchantillonnage. Dans la plupart des cas, vous souhaitez définir ce facteur sur 1.
dataset.cfg
{
"train" : [
[
" TRAIN_SET_SPEECH.hdf5 " ,
1.0
],
[
" TRAIN_SET_NOISE.hdf5 " ,
1.0
],
[
" TRAIN_SET_RIR.hdf5 " ,
1.0
]
],
"valid" : [
[
" VALID_SET_SPEECH.hdf5 " ,
1.0
],
[
" VALID_SET_NOISE.hdf5 " ,
1.0
],
[
" VALID_SET_RIR.hdf5 " ,
1.0
]
],
"test" : [
[
" TEST_SET_SPEECH.hdf5 " ,
1.0
],
[
" TEST_SET_NOISE.hdf5 " ,
1.0
],
[
" TEST_SET_RIR.hdf5 " ,
1.0
]
]
} Enfin, commencez le script d'entraînement. Le script d'entraînement peut créer un modèle base_dir s'il n'est pas existant utilisé pour la journalisation, certains échantillons audio, des points de contrôle du modèle et la configuration. Si aucun fichier de configuration n'est trouvé, il créera une configuration par défaut. Voir DeepFilternet / Pretrained_Models / DeepFilternet pour un fichier de configuration.
# usage: train.py [-h] [--debug] data_config_file data_dir base_dir
python df / train . py path / to / dataset . cfg path / to / data_dir / path / to / base_dir / Pour reproduire toutes les métriques, nous recommandons pour utiliser l'implémentation Python via pip install deepfilternet .
Si vous utilisez ce cadre, veuillez citer: DeepFilternet: un cadre d'amélioration de la parole de faible complexité pour l'audio en bande complet sur la base d'un filtrage profond
@inproceedings { schroeter2022deepfilternet ,
title = { {DeepFilterNet}: A Low Complexity Speech Enhancement Framework for Full-Band Audio based on Deep Filtering } ,
author = { Schröter, Hendrik and Escalante-B., Alberto N. and Rosenkranz, Tobias and Maier, Andreas } ,
booktitle = { ICASSP 2022 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) } ,
year = { 2022 } ,
organization = { IEEE }
}Si vous utilisez le modèle DeepFilternet2, veuillez citer: DeepFilternet2: vers une amélioration de la parole en temps réel sur les appareils intégrés pour l'audio en bande complet
@inproceedings { schroeter2022deepfilternet2 ,
title = { {DeepFilterNet2}: Towards Real-Time Speech Enhancement on Embedded Devices for Full-Band Audio } ,
author = { Schröter, Hendrik and Escalante-B., Alberto N. and Rosenkranz, Tobias and Maier, Andreas } ,
booktitle = { 17th International Workshop on Acoustic Signal Enhancement (IWAENC 2022) } ,
year = { 2022 } ,
}Si vous utilisez le modèle DeepFilternet3, veuillez citer: DeepFilternet: amélioration de la parole en temps réel motivé perceptuellement
@inproceedings { schroeter2023deepfilternet3 ,
title = { {DeepFilterNet}: Perceptually Motivated Real-Time Speech Enhancement } ,
author = { Schröter, Hendrik and Rosenkranz, Tobias and Escalante-B., Alberto N. and Maier, Andreas } ,
booktitle = { INTERSPEECH } ,
year = { 2023 } ,
}Si vous utilisez les algorithmes de formation de faisceau multi-trames. Veuillez citer un filtrage multi-trame profond pour les aides auditives
@inproceedings { schroeter2023deep_mf ,
title = { Deep Multi-Frame Filtering for Hearing Aids } ,
author = { Schröter, Hendrik and Rosenkranz, Tobias and Escalante-B., Alberto N. and Maier, Andreas } ,
booktitle = { INTERSPEECH } ,
year = { 2023 } ,
}DeepFilternet est gratuit et open source! Tout le code de ce référentiel est à double licence sous:
à votre option. Cela signifie que vous pouvez sélectionner la licence que vous préférez!
À moins que vous ne soyez explicitement indiqué autrement, toute contribution intentionnellement soumise pour inclusion dans les travaux par vous, telle que définie dans la licence Apache-2.0, doit être autorisée à double licence comme ci-dessus, sans aucune condition supplémentaire.