首页 / 资讯中心 / 文章详情

DeepFilterNet ONNX 导出完整指南:从一条命令到跨平台部署

DeepFilterNet ONNX 导出完整指南:从一条命令到跨平台部署 ★ FEATURED ARTICLE
DeepFilterNet ONNX 导出完整指南从一条命令到跨平台部署【免费下载链接】DeepFilterNetNoise supression using deep filtering项目地址: https://gitcode.com/GitHub_Trending/de/DeepFilterNet你要做的是把 DeepFilterNet 音频降噪模型转成一套可跨平台部署的 ONNX 组件。DeepFilterNet ONNX 导出的核心只有一个脚本一条命令就能拿到三个 .onnx 组件加 config.ini 与 version.txt随后可以直接被 ONNX Runtime 或 Rust 运行时 tract 加载接入桌面、移动、服务器三类场景。一、动手前先确认三件事环境 / 依赖 / 模型动手前先确认三件事Python 依赖齐不齐、libdf Rust 轮子装没装、预训练模型目录是否可用。先把仓库克隆下来git clone https://gitcode.com/GitHub_Trending/de/DeepFilterNet然后按下表逐项核对事项为什么需要确认方式PyTorch 2.0导出脚本基于 torch.onnx.export 运行原模型pip show torch看版本onnx / onnxruntime / onnxsim结构校验、数值验证、onnxsim 模型简化pip list全部存在libdf wheelSTFT、ERB 特征提取由 Rust 实现export.py 直接 importpip show deepfilterlib已安装预训练模型需要加载 checkpoint 与 config.inimodels/ 或缓存目录内有目标模型文件夹✅ 前四项依赖可以一条命令装齐libdf wheel 需要在仓库根目录编译安装pip install torch2.0 torchaudio onnx onnxruntime onnxsim MonkeyType maturin develop --release -m pyDF/Cargo.toml注意 MonkeyType 是硬性依赖缺了脚本会直接退出。-m传 DeepFilterNet2 / DeepFilterNet3 这类名称时脚本会自动下载对应预训练模型也可以指向本地模型目录。二、一条命令完成导出参数与产物速览导出入口是 DeepFilterNet/df/scripts/export.py加上目标目录直接执行即可python DeepFilterNet/df/scripts/export.py -m DeepFilterNet3 \ --simplify --opset 14 ./onnx_export参数一览参数说明export_dir位置参数导出目标目录不存在会自动创建-m模型目录或预训练名本地没有则自动下载--simplify导出后用 onnxsim 逐个组件简化并回写--opsetONNX opset 版本命令行默认 12--no-check跳过一致性校验不建议关闭--epoch指定 checkpoint epoch默认 best产物一览文件用途enc.onnx编码器输入 feat_erb feat_spec输出 e0~e3、emb、c0、lsnrerb_dec.onnxERB 域解码器输入恰好是编码器输出的 emb、e0~e3输出掩码 mdf_dec.onnx深滤波解码器输入 emb c0输出滤波系数 coefsconfig.ini模型配置自动从模型目录拷贝version.txt模型名与 epoch如DeepFilterNet3_epoch_123*_input.npz/*_output.npz各组件的随机输入输出样例供事后复核{model_name}_onnx.tar.gz打包上述 5 个部署文件的分发包拆成三块的思路是enc 是共享上游两个解码器各自独立出结果资源受限的设备可以只挑需要的组件加载。所有组件在时间维都声明了动态轴 S任意长度的音频无需重新导出。脚本内部还支持整模型一次性导出但默认走组件化路径。三、导出之后怎么确认模型可用脚本对每个组件都自动做了两层验证你只需盯日志里的警告。第一层用 onnx.checker 做 full_check 结构校验第二层用 ONNX Runtime 实际跑一遍再与 PyTorch 原模型输出逐一对比容差是 rtol1e-6、atol1e-5。测试输入是一段 1 秒的随机音频对应样例都存进了 npz 文件。⚠️ 若日志出现Elements not close for ...说明误差超限应提高 opset 后重新导出。想手动复核时几行代码就够import numpy as np import onnxruntime as ort sess ort.InferenceSession(onnx_export/enc.onnx, providers[CPUExecutionProvider]) x_erb np.random.randn(1, 1, 13, 48).astype(np.float32) x_spec np.random.randn(1, 2, 13, 48).astype(np.float32) outs sess.run(None, {feat_erb: x_erb, feat_spec: x_spec}) print([o.shape for o in outs]) # e0~e3, emb, c0, lsnr其中 13 是特征维默认配置下 ERB 频带与 DF bins 各 13 个48 是帧数属于动态轴可以任意。八个输出张量形状符合预期模型即可用。要提醒的是STFT/ISTFT 与特征提取并不在 ONNX 内部由 libDFRust负责完整降噪管线需要按 enc → erb_dec / df_dec 的顺序自行组装三个组件。四、按你的部署目标选路径桌面 / 移动 / 服务器同一套导出产物有三个典型去向先查表定方向再看要点。场景推荐方案项目内参考位置Linux 桌面实时降噪Rust 桌面 demodemo/系统级麦克风降噪PipeWireLADSPA 插件 虚拟麦克风ladspa/Web / JS 环境libDF wasm 构建libDF/src/wasm.rs服务器 / 多语言服务C API或 ONNX Runtime 自行组装libDF/src/capi.rs桌面端。demo/ 下的程序用 cargo 运行实时处理麦克风输入推理引擎是 libDF 自带的 Rust ONNX 运行时 tract不需要额外部署 ONNX Runtime。想要全局麦克风降噪时ladspa/ 的插件配合 filter-chain-configs 里的 PipeWire 配置能生成虚拟降噪麦克风会议软件可以直接调用。移动端。libDF 的 wasm feature 能把完整降噪循环含 ONNX 推理编译成 wasm 包仓库内还有配套构建脚本适合网页或 JS 容器场景。如果坚持用 ONNX Runtime Mobile 直接加载这三个 .onnx注意它们只含神经网络部分STFT、ERB 特征提取与合成需要你在端上单独实现所以 wasm 或 Rust 交叉编译往往更省事。服务器端。libDF/src/capi.rs 暴露了 pkg-config 名为 libdeepfilter 的 C 接口任何语言都能嵌入且默认内置模型包。若服务只需要纯网络推理用 ONNX Runtime 或 TensorRT 加载三个组件、自行组装管线同样可行。五、排障速查报错与性能问题一次看完导出与部署阶段最常遇到的问题都落在下表里按现象直接查。现象原因处理启动时提示安装 MonkeyTypeexport.py 硬依赖 monkeytypepip install MonkeyTypeonnx checker / onnxsim 报错opset 偏低运行时不支持部分算子调高--opset如 14重新导出日志出现Elements not close for ...ONNX 与 PyTorch 输出超出容差换更高 opset 重新导出并用 npz 样例复核简化失败回退保存原模型onnxsim 产出无效图看日志定位或升级 onnxsim 后手动简化推理不满足实时opset 过旧或单帧计算偏重调高 opset或考虑 int8 模型量化加载时模型与配置不匹配onnx 包与 config.ini 版本混用用 version.txt 核对 tar.gz 包一致性不确定选哪个预训练各版本侧重点不同用 models/ 现成 ONNX 包通用选 DeepFilterNet2/3低延迟选_ll变体六、行动清单按下面五条收尾DeepFilterNet ONNX 导出即完成核对 torch、onnx、onnxruntime、onnxsim、MonkeyType 与 libdf wheel 均已就位执行导出命令记得带--simplify并记录所用 opset检查日志无Elements not close警告、无简化失败回退跑一遍最小 ONNX Runtime 示例确认输出张量形状正确确认 tar.gz 包内五个文件齐全再按部署场景选定集成路径拿到导出产物后若目标设备仍不满足实时性可尝试低延迟ll变体模型或模型量化整条链路依然是同一条命令。【免费下载链接】DeepFilterNetNoise supression using deep filtering项目地址: https://gitcode.com/GitHub_Trending/de/DeepFilterNet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站