Uma estrutura de aprimoramento de fala de baixa complexidade para áudio de banda inteira (48kHz) usando na filtragem profunda.
Para a integração da Pipewire como um microfone de supressão de ruído virtual aqui.
Para executar a demonstração (somente Linux), use:
cargo +nightly run -p df-demo --features ui --bin df-demo --releaseNOVA DEEPFILTERNET Demo: DeepFilternet: Melhoria de fala em tempo real motivada pela percepção
Novo papel de filtragem com vários quadros: filtragem profunda de vários quadros para aparelhos auditivos
Versão em tempo real e um plugin Ladspa
deep-filter audio-file.wavDeepFilternet2 Paper: DeepFilternet2: Rumo ao aprimoramento da fala em tempo real em dispositivos incorporados para áudio de banda inteira
Artigo original do DeepFilternet: DeepFilternet: Uma estrutura de aprimoramento de fala de baixa complexidade para áudio de banda inteira com base em filtragem profunda
Faça o download de um binário de filtro profundo pré-compilado na página de lançamento. Você pode usar deep-filter para suprimir o ruído em arquivos de áudio .wav. Atualmente, apenas arquivos WAV com uma taxa de amostragem de 48kHz são suportados.
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 informationSe você deseja usar o back -end do Pytorch, por exemplo, para o processamento da GPU, consulte mais abaixo para o uso do Python.
Essa estrutura suporta Linux, MacOS e Windows. O treinamento é testado apenas no Linux. A estrutura está estruturada da seguinte maneira:
libDF contém código de ferrugem usado para carregamento e aumento de dados.DeepFilterNet contém treinamento, avaliação e visualização do código DeepFilternet, bem como pesos pré -treinados do modelo.pyDF contém um invólucro python do loop de processamento Libdf STFT/ISTFT.pyDF-data contém um invólucro python da funcionalidade do conjunto de dados libdf e fornece um carregador de dados Pytorch.ladspa contém um plug-in Ladspa para supressão de ruído em tempo real.models contêm pré-terenciados para uso em DeepFilternet (Python) ou Libdf/Filter Deep (ferrugem)Instale a roda de 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]Para aprimorar arquivos de áudio barulhentos usando o DeepFilternet Run
# Specify an output directory with --output-dir [OUTPUT_DIR]
deepFilter path/to/noisy_audio.wav Instale a carga via Rustup. Uso de um conda ou virtualenv recomendado. Leia os comentários e execute apenas os comandos necessários.
Instalação de dependências Python e 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 aprimorar arquivos de áudio barulhentos usando o 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 )Veja aqui para um exemplo completo.
O ponto de entrada é DeepFilterNet/df/train.py . Ele espera um diretório de dados contendo conjunto de dados HDF5, bem como um arquivo JSON de configuração do conjunto de dados.
Portanto, você precisa primeiro criar seus conjuntos de dados no formato HDF5. Cada conjunto de dados normalmente mantém apenas treinamento, validação ou conjunto de testes de ruído, fala ou 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 . hdf5Todos os conjuntos de dados devem ser disponibilizados em uma pasta de dados para o script de trem.
O arquivo de configuração do conjunto de dados deve conter 3 entradas: "Trem", "Válido", "Teste". Cada um deles contém uma lista de conjuntos de dados (por exemplo, um discurso, ruído e um conjunto de dados RIR). Você pode usar vários conjuntos de dados de fala ou ruído. Opcionalmente, pode-se especificar um fator de amostragem que pode ser usado para superar/amossar o conjunto de dados. Digamos, você tem um conjunto de dados específico com ruídos transitórios e deseja aumentar a quantidade de ruídos não estacionários por amostragem. Na maioria dos casos, você deseja definir esse fator como 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, inicie o script de treinamento. O script de treinamento pode criar um modelo base_dir se não estiver existente usado para registro, algumas amostras de áudio, pontos de verificação do modelo e configuração. Se nenhum arquivo de configuração for encontrado, ele criará uma configuração padrão. Consulte DeepFilternet/Pretread_models/DeepFilternet para um arquivo de configuração.
# 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 reproduzir qualquer métrica, recomendamos o uso da implementação do Python via pip install deepfilternet .
Se você usar essa estrutura, cite: DeepFilternet: uma estrutura de aprimoramento de fala de baixa complexidade para áudio de banda inteira com base em filtragem profunda
@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 }
}Se você usa o modelo DeepFilternet2, cite: DeepFilternet2: Rumo ao aprimoramento da fala em tempo real em dispositivos incorporados para áudio de banda inteira
@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 } ,
}Se você usar o modelo DeepFilternet3, cite: DeepFilternet: Melhoramento da fala em tempo real motivado por motivação perceptiva
@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 } ,
}Se você usar os algoritmos de formação de feixe de vários quadros. Cite filtragem de múltiplos quadros profunda para aparelhos auditivos
@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 é gratuito e de código aberto! Todo o código deste repositório é licenciado por dupla:
por sua opção. Isso significa que você pode selecionar a licença que preferir!
A menos que você declare explicitamente o contrário, qualquer contribuição intencionalmente enviada para inclusão no trabalho por você, conforme definida na licença Apache-2.0, será licenciado como acima, sem termos ou condições adicionais.