Un marco de mejora del habla de baja complejidad para audio de banda completa (48 kHz) que usa un filtrado profundo.
Para la integración de Pipewire como un micrófono de supresión de ruido virtual, mira aquí.
Para ejecutar la demostración (solo Linux) use:
cargo +nightly run -p df-demo --features ui --bin df-demo --releaseNueva demostración de DeepFilternet: DeepFilternet: mejora del habla en tiempo real de motivación perceptiva
Nuevo documento de filtrado de marco múltiple: filtrado múltiple profundo para audífonos
Versión en tiempo real y un complemento LADSPA
deep-filter audio-file.wavDeepFilternet2 Paper: DeepFilternet2: Hacia la mejora del habla en tiempo real en dispositivos integrados para audio de banda completa
Documento original de DeepFilternet: DeepFilternet: un marco de mejora del habla de baja complejidad para audio de banda completa basado en filtrado profundo
Descargue un binario de filtro profundo precompilado desde la página de lanzamiento. Puede usar deep-filter para suprimir el ruido en archivos de audio .wav ruidosos. Actualmente, solo se admiten archivos WAV con una tasa de muestreo de 48 kHz.
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 desea utilizar el backend de Pytorch, por ejemplo, para el procesamiento de GPU, consulte más abajo para el uso de Python.
Este marco admite Linux, MacOS y Windows. El entrenamiento solo se prueba bajo Linux. El marco está estructurado de la siguiente manera:
libDF contiene código de óxido utilizado para la carga y el aumento de datos.DeepFilterNet contiene capacitación, evaluación y visualización del código DeepFilternet, así como pesos del modelo de petróleo.pyDF contiene un envoltorio de pitón de bucle de procesamiento Libdf STFT/ISTFT.pyDF-data contiene un envoltorio de pitón de la funcionalidad del conjunto de datos LIBDF y proporciona un cargador de datos de Pytorch.ladspa contiene un complemento LADSPA para la supresión de ruido en tiempo real.models contienen previamente el uso en DeepFilternet (Python) o Libdf/Deep-Filter (Rust)Instale la rueda de pitón de DeepFilternet a través de 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]Para mejorar los archivos de audio ruidosos utilizando DeepFilternet Run
# Specify an output directory with --output-dir [OUTPUT_DIR]
deepFilter path/to/noisy_audio.wav Instale la carga a través de Rustup. El uso de una conda o virtualenv recomendado. Lea los comentarios y solo ejecute los comandos que necesita.
Instalación de dependencias de Python y 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.tomlPara mejorar los archivos de audio ruidosos utilizando 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 )Vea aquí para obtener un ejemplo completo.
El punto de entrada es DeepFilterNet/df/train.py . Espera un directorio de datos que contiene un conjunto de datos HDF5, así como un archivo JSON de configuración del conjunto de datos.
Por lo tanto, primero debe crear sus conjuntos de datos en formato HDF5. Cada conjunto de datos generalmente solo contiene entrenamiento, validación o conjunto de pruebas de ruido, habla o RIR.
# 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 . hdf5Todos los conjuntos de datos deben estar disponibles en una carpeta de conjunto de datos para el script del tren.
El archivo de configuración del conjunto de datos debe contener 3 entradas: "Train", "Válido", "Prueba". Cada uno de ellos contiene una lista de conjuntos de datos (por ejemplo, un discurso, ruido y un conjunto de datos RIR). Puede usar múltiples conjuntos de datos de voz o ruido. Opcionalmente, se puede especificar un factor de muestreo que se puede usar para exponer/poner en exámenes bajo el conjunto de datos. Digamos, tiene un conjunto de datos específico con ruidos transitorios y desea aumentar la cantidad de ruidos no estacionarios mediante sobremuestreo. En la mayoría de los casos, desea establecer este factor en 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
]
]
} Finalmente, comience el guión de entrenamiento. El script de entrenamiento puede crear un modelo base_dir si no existente utilizado para registrar, algunas muestras de audio, puntos de control de modelo y configuración. Si no se encuentra ningún archivo de configuración, creará una configuración predeterminada. Consulte DeepFilternet/Pretherened_models/DeepFilternet para un archivo de configuración.
# 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 / Para reproducir cualquier métrica, recomendamos usar la implementación de Python a través de pip install deepfilternet .
Si usa este marco, cite: DeepFilternet: un marco de mejora del habla de baja complejidad para el audio de banda completa basado en un filtrado profundo
@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 usa el modelo DeepFilternet2, cite: DeepFilternet2: Hacia la mejora del habla en tiempo real en dispositivos integrados para audio de banda completa
@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 usa el modelo DeepFilternet3, cite: DeepFilternet: mejora del habla en tiempo real con percepción motivada
@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 usa los algoritmos de formación de rayos múltiples. Cite un filtrado profundo de múltiples marcos para audífonos
@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 es gratuito y de código abierto! Todo el código de este repositorio está de doble licencia en cualquiera de los dos:
a tu opción. ¡Esto significa que puede seleccionar la licencia que prefiera!
A menos que declare explícitamente lo contrario, cualquier contribución presentada intencionalmente para su inclusión en el trabajo por usted, como se define en la licencia Apache-2.0, se debe tener doble licencia como se indicó anteriormente, sin ningún término o condiciones adicionales.