Project Icon

DeepFilterNet

用于全频段音频(48kHz)的低复杂度语音增强框架

DeepFilterNet是一个低复杂度的全频段音频(48kHz)实时语音增强框架,支持Linux、MacOS和Windows。该项目包含用于数据加载和增强的Rust代码模块,以及Python接口和预训练模型。它还支持LADSPA插件,用于实时噪声抑制,并提供详细的安装和使用指南,适用于终端命令行、Python脚本和深度学习模型训练等多种应用场景。

DeepFilterNet

一个低复杂度的全频带音频(48kHz)语音增强框架,基于深度过滤技术。

deepfilternet3

作为虚拟噪声抑制麦克风的PipeWire集成请参见这里

演示

https://github.com/Rikorose/DeepFilterNet/assets/16517898/79679fd7-de73-4c22-948c-891927c7d2ca

要运行演示(仅限Linux),使用:

cargo +nightly run -p df-demo --features ui --bin df-demo --release

新闻

使用方法

deep-filter

发布页面下载预编译的deep-filter二进制文件。 你可以使用deep-filter在嘈杂的.wav音频文件中抑制噪音。目前,仅支持采样率为48kHz的wav文件。

使用方法:
    deep-filter [OPTIONS] [FILES]...

参数:
    <FILES>...

选项:
    -D, --compensate-delay
            补偿STFT和模型前瞻的延迟
    -h, --help
            打印帮助信息
    -m, --model <MODEL>
            模型tar.gz路径。默认为DeepFilterNet2。
    -o, --out-dir <OUT_DIR>
            [默认: out]
    --pf
            启用后滤波器
    -v, --verbose
            日志详细程度
    -V, --version
            打印版本信息

如果你想使用PyTorch后端,例如进行GPU处理,请参见下面的Python用法。

DeepFilterNet框架

这个框架支持Linux、MacOS和Windows。训练仅在Linux下测试过。框架结构如下:

  • libDF包含用于数据加载和增强的Rust代码。
  • DeepFilterNet包含DeepFilterNet代码训练、评估和可视化以及预训练模型权重。
  • pyDF包含libDF STFT/ISTFT处理循环的Python封装。
  • pyDF-data包含libDF数据集功能的Python封装,并提供PyTorch数据加载器。
  • ladspa包含一个用于实时噪声抑制的LADSPA插件。
  • models包含在DeepFilterNet(Python)或libDF/deep-filter(Rust)中使用的预训练模型。

DeepFilterNet Python: PyPI

通过pip安装DeepFilterNet Python轮:

# 安装来自pytorch.org的cpu/cuda pytorch(>=1.9)依赖,例如:
pip install torch torchaudio -f https://download.pytorch.org/whl/cpu/torch_stable.html
# 安装DeepFilterNet
pip install deepfilternet
# 或安装包括数据加载功能的DeepFilterNet进行训练(仅限Linux)
pip install deepfilternet[train]

使用DeepFilterNet增强嘈杂的音频文件

# 使用--output-dir [OUTPUT_DIR]指定输出目录
deepFilter path/to/noisy_audio.wav

手动安装

通过rustup安装cargo。建议使用condavirtualenv。 请阅读注释并仅执行你需要的命令。

安装Python依赖和libDF:

cd path/to/DeepFilterNet/  # 进入仓库目录
# 推荐:安装或激活一个Python环境
# 必须:从pytorch.org安装cpu/cuda pytorch(>=1.8)依赖,例如:
pip install torch torchaudio -f https://download.pytorch.org/whl/cpu/torch_stable.html
# 安装用于编译libdf和DeepFilterNet Python轮的构建依赖
pip install maturin poetry

# 安装其余DeepFilterNet Python依赖
# *选项A:* 在你的环境中全局安装DeepFilterNet Python轮。如果你希望按现有方式使用此仓库且不在此仓库内开发,请执行此操作。
poetry -C DeepFilterNet install -E train -E eval
# *选项B:* 如果你希望在本仓库内开发,仅安装依赖并使用仓库版本
poetry -C DeepFilterNet install -E train -E eval --no-root
export PYTHONPATH=$PWD/DeepFilterNet # 并正确设置Python路径

# 构建并安装enhance.py所需的libdf Python包
maturin develop --release -m pyDF/Cargo.toml
# *可选*: 安装带有数据集和数据加载功能的libdfdata Python包以进行训练
# 需要的构建依赖:HDF5头文件(例如Ubuntu: libhdf5-dev)
maturin develop --release -m pyDF-data/Cargo.toml
# 如果你遇到HDF5问题,可以尝试静态构建和链接HDF5:
maturin develop --release --features hdf5-static -m pyDF-data/Cargo.toml

从命令行使用DeepFilterNet

使用DeepFilterNet增强嘈杂的音频文件

$ python DeepFilterNet/df/enhance.py --help
使用方法: 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 ...]

位置参数:
  noisy_audio_files     噪音文件列表,与干净的语音文件混合。

可选参数:
  -h, --help            显示此帮助信息并退出
  --model-base-dir MODEL_BASE_DIR, -m MODEL_BASE_DIR
                        包含检查点和配置的模型目录。
                        要加载预训练模型,你可以只提供模型名称,例如`DeepFilterNet`。
                        默认情况下,加载预训练的DeepFilterNet2模型。
  --pf                  在非常嘈杂的部分稍微过度衰减的后滤波器。
  --output-dir OUTPUT_DIR, -o OUTPUT_DIR
                        增强音频文件将被存储的目录。
  --log-level LOG_LEVEL
                        日志详细程度。可以是(debug,info,error,none)之一。
  --compensate-delay, -D
                        添加一些填充以补偿实时STFT/ISTFT实现引入的延迟。

# 使用原始DeepFilterNet增强音频
python DeepFilterNet/df/enhance.py -m DeepFilterNet path/to/noisy_audio.wav

# 使用DeepFilterNet2增强音频
python DeepFilterNet/df/enhance.py -m DeepFilterNet2 path/to/noisy_audio.wav

在你的Python脚本中使用DeepFilterNet

from df import enhance, init_df
模型, df_state, _ = init_df()  # 加载默认模型
增强音频 = enhance(模型, df_state, 嘈杂音频)

参见 此处 获取完整示例。

训练

入口点是 DeepFilterNet/df/train.py。它需要一个包含 HDF5 数据集和数据集配置 JSON 文件的数据目录。

因此,您首先需要以 HDF5 格式创建数据集。每个数据集通常仅包含噪声、语音或房间脉冲响应的训练集、验证集或测试集。

# 安装创建数据集的额外依赖
pip install h5py librosa soundfile
# 进入 DeepFilterNet Python 包
cd path/to/DeepFilterNet/DeepFilterNet
# 准备包含 .wav 文件路径的文本文件(例如名为 training_set.txt)
#
# 用法: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
#
# 其中:
#   type: 可以是 `speech`、`noise`、`rir` 之一
#   audio_files: 包含要包含在数据集中的音频文件路径的文本文件
#   hdf5_db: 输出 HDF5 数据集。
python df/scripts/prepare_data.py --sr 48000 speech training_set.txt TRAIN_SET_SPEECH.hdf5

所有数据集应在一个数据集文件夹中以供训练脚本使用。

数据集配置文件应包含 3 个条目:"train"(训练)、"valid"(验证)、"test"(测试)。每个条目包含一个数据集列表(例如语音、噪声和房间脉冲响应数据集)。您可以使用多个语音或噪声数据集。可以选择性地指定采样因子,用于过采样或欠采样数据集。例如,您有一个带有短暂噪声的特定数据集,并希望通过过采样来增加非稳态噪声的数量。在大多数情况下,您希望将此因子设置为 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
    ]
  ]
}

最后,启动训练脚本。训练脚本可能会创建一个模型 base_dir,用于记录日志、存储一些音频样本、模型检查点和配置。如果没有找到配置文件,它将创建一个默认配置文件。参见 DeepFilterNet/pretrained_models/DeepFilterNet 获取配置文件。

# 用法: 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/

引用指南

为了重现任何指标,我们建议使用通过 pip install deepfilternet 安装的 Python 实现。

如果您使用此框架,请引用:DeepFilterNet: A Low Complexity Speech Enhancement Framework for Full-Band Audio based on 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}
}

如果您使用 DeepFilterNet2 模型,请引用:DeepFilterNet2: Towards Real-Time Speech Enhancement on Embedded Devices for Full-Band 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},
}

如果您使用 DeepFilterNet3 模型,请引用:DeepFilterNet: Perceptually Motivated Real-Time Speech Enhancement

@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},
}

如果您使用多帧波束成形算法,请引用 Deep Multi-Frame Filtering for Hearing Aids

@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 是免费且开源的!此存储库中的所有代码均采用以下双重许可:

您可以选择您喜欢的许可证!

除非您另行明确声明,您有意提交包含在此工作中的任何贡献,按照 Apache-2.0 许可证定义的,应如上双重许可,无需任何附加条款或条件。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号