Ein Sprachverbesserungsrahmen mit niedriger Komplexität für Audio (48 kHz) bei der Tiefenfilterung.
Für die PipeWire -Integration als virtuelle Rauschunterdrückungsmikrofon -Look hier.
So führen Sie die Verwendung der Demo (nur Linux) aus:
cargo +nightly run -p df-demo --features ui --bin df-demo --releaseNeue DeepFilternet Demo: DeepFilternet: Wahrnehmungsmotivierte Echtzeit-Sprachverbesserung
Neues Multi-Rahmen-Filterpapier: Deep Multi-Rame-Filterung für Hörgeräte
Echtzeitversion und ein LADSPA-Plugin
deep-filter audio-file.wavDeepFilternet2 Papier: DeepFilternet2: Auf dem Weg zu Echtzeit-Sprachverbesserung auf eingebetteten Geräten für Audio mit Vollband
Original DeepFilternet Paper: DeepFilternet: Ein Rahmen für die Verstärkung der Sprachverstärkung mit geringer Komplexität für Ganzband-Audio basiert auf Deep Filtering
Laden Sie eine vorgefertigte Deep-Filter-Binärin von der Versionsseite herunter. Sie können deep-filter verwenden, um das Rauschen in lautem Audiodateien zu unterdrücken. Derzeit werden nur WAV -Dateien mit einer Stichprobenrate von 48 kHz unterstützt.
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 informationWenn Sie das Pytorch -Backend -EG für die GPU -Verarbeitung verwenden möchten, finden Sie weiter unten für die Python -Verwendung.
Dieses Framework unterstützt Linux, MacOS und Windows. Das Training wird nur unter Linux getestet. Das Rahmen ist wie folgt strukturiert:
libDF enthält Rostcode für das Laden und Augmentation von Daten.DeepFilterNet enthält Training, Bewertung und Visualisierung von DeepFilternet -Code sowie vorbereitete Modellgewichte.pyDF enthält einen Python -Wrapper aus libdf stft/iStft -Verarbeitungsschleife.pyDF-data enthält einen Python-Wrapper der LIBDF-Datensatzfunktionalität und bietet einen Pytorch-Datenlader.ladspa enthält ein LADSPA-Plugin für Echtzeit-Rauschunterdrückung.models enthält vorgezogen für die Verwendung in DeepFilternet (Python) oder libdf/Deep-Filter (Rost)Installieren Sie das DeepFilternet Python Wheel über 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]Um laute Audiodateien mit DeepFilternet -Lauf zu verbessern
# Specify an output directory with --output-dir [OUTPUT_DIR]
deepFilter path/to/noisy_audio.wav Installieren Sie die Fracht über Rustup. Verwendung eines conda oder virtualenv empfohlen. Bitte lesen Sie die Kommentare und führen Sie nur die Befehle aus, die Sie benötigen.
Installation von Python -Abhängigkeiten und 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.tomlUm laute Audiodateien mit DeepFilternet -Lauf zu verbessern
$ 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 )Hier finden Sie ein vollständiges Beispiel.
Der Einstiegspunkt ist DeepFilterNet/df/train.py . Es wird ein Datenverzeichnis erwartet, das HDF5 -Datensatz sowie eine Datensatzkonfiguration -JSON -Datei enthält.
Sie müssen also zunächst Ihre Datensätze im HDF5 -Format erstellen. Jeder Datensatz enthält in der Regel nur Trainings-, Validierungs- oder Testsatz von Rauschen, Sprache oder RIRs.
# 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 . hdf5Alle Datensätze sollten in einem Datensatzordner für das Zugskript verfügbar sein.
Die Dataset -Konfigurationsdatei sollte 3 Einträge enthalten: "Zug", "gültig", "Test". Jeder dieser enthält eine Liste von Datensätzen (z. B. Sprache, Rauschen und RIR -Datensatz). Sie können mehrere Sprach- oder Rauschdatensatz verwenden. Optional kann ein Stichprobenfaktor angegeben werden, mit dem der Datensatz übertrieben/unterab. Angenommen, Sie haben einen bestimmten Datensatz mit vorübergehenden Geräuschen und möchten die Menge an nicht stationären Geräuschen durch Überabtastung erhöhen. In den meisten Fällen möchten Sie diesen Faktor auf 1 setzen.
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
]
]
} Schließlich starten Sie das Trainingsskript. Das Trainingsskript kann ein Modell base_dir erstellen, wenn nicht zur Protokollierung, einige Audio -Beispiele, Modell -Checkpoints und Konfiguration vorhanden ist. Wenn keine Konfigurationsdatei gefunden wird, wird eine Standardkonfiguration erstellt. Eine Konfigurationsdatei finden Sie unter DeepFilternet/PretRainained_Models/DeepFilternet.
# 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 / Um Metriken zu reproduzieren, empfehlen wir, die Python -Implementierung über pip install deepfilternet zu verwenden.
Wenn Sie diesen Framework verwenden, zitieren Sie bitte: DeepFilternet: Ein Sprachverbesserungsrahmen mit geringer Komplexitäts-Audio basierend auf Deep Filtering
@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 }
}Wenn Sie das DeepFilternet2-Modell verwenden, zitieren Sie bitte: DeepFilternet2: Auf dem Weg zu Echtzeit-Sprachverbesserung auf eingebetteten Geräten für Audio-Vollband-Audio
@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 } ,
}Wenn Sie das DeepFilternet3-Modell verwenden, zitieren Sie bitte: DeepFilternet: Perzeptuell motivierte Echtzeit-Sprachverbesserung
@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 } ,
}Wenn Sie die Multi-Frame-Beamforming-Algorithmen verwenden. Bitte zitieren Sie eine tiefe Multi-Frame-Filterung für Hörgeräte
@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 ist kostenlos und Open Source! Der gesamte Code in diesem Repository ist unter beiden zwei lizenziert:
nach Ihrer Option. Dies bedeutet, dass Sie die Lizenz auswählen können, die Sie bevorzugen!
Sofern Sie nicht ausdrücklich anders angeben, ist ein Beitrag, der absichtlich zur Aufnahme in die Arbeit von Ihnen eingereicht wird, wie in der Lizenz Apache-2.0 definiert, ohne zusätzliche Bedingungen doppelt lizenziert wie oben.