尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
DeepFilterNet ONNX 导出与跨平台部署:从导出命令到三条集成路径的完整教程
DeepFilterNet ONNX 导出与跨平台部署从导出命令到三条集成路径的完整教程【免费下载链接】DeepFilterNetNoise supression using deep filtering项目地址: https://gitcode.com/GitHub_Trending/de/DeepFilterNetDeepFilterNet 是一个面向 48kHz 全频带音频的低复杂度实时降噪语音增强框架。如果你想在 Python 服务、Rust/C 程序或移动端里调用它的降噪能力又不想把整个 PyTorch 训练栈带进产品把模型导出成 ONNX 是最省事的路径。这篇教程带你走完完整动线选模型、装依赖、执行导出、验证一致性再落到三条平台集成路线上。先选模型DeepFilterNet2、DeepFilterNet3 还是低延迟版仓库提供三个预训练模型通过-m参数切换DeepFilterNet3默认模型也是当前主线降噪能力最强DeepFilterNet2上一代模型。注意 Rust 运行时已将其标记为 deprecated会直接报错要求回退旧版 libDF v0.3.1它只适合走 Python/ONNX 路线低延迟变体文件名带_ll后缀的模型如DeepFilterNet3_ll_onnx.tar.gzlibDF提供default-model-llfeature 可直接内嵌该模型做默认加载。选型建议离线批处理、延迟不敏感的链路用标准版DeepFilterNet3实时链路或嵌入式设备优先评估_ll版本并用本文的校验流程确认精度可接受。如果你根本不打算重新训练models/目录里已经放好了各模型的 ONNX 产物可以直接下载、跳过导出。准备环境克隆仓库并安装导出依赖git clone https://gitcode.com/GitHub_Trending/de/DeepFilterNet cd DeepFilterNet pip install torch torchaudio pip install deepfilternet pip install onnx onnxruntime onnxsim MonkeyTypedeepfilternet包会带上df模块和 Rust 编译的 STFT/ISTFT 封装libdf导出脚本用它做特征提取onnx/onnxruntime/onnxsim分别负责导出、校验推理和模型简化MonkeyType是导出脚本启动时会强制检查的依赖缺了会直接退出。如果你想用仓库内代码而不是 PyPI 版本按 README 的 Manual Installation 一节操作设置PYTHONPATH$PWD/DeepFilterNet并用maturin develop --release -m pyDF/Cargo.toml编译 libdf。把 PyTorch 模型导出成 ONNX核心命令在仓库根目录执行python DeepFilterNet/df/scripts/export.py -m DeepFilterNet3 --simplify ./onnx_export导出脚本 会把模型拆成三段独立导出编码器enc、ERB 解码器erb_dec、深度滤波解码器df_dec。拆开的原因很实际——运行时本来就是编码器 → 两个解码器的顺序调用拆开后每段可以单独量化、单独优化。脚本还会顺带跑一遍随机测试样本若当前目录存在out/增强结果会存到out/enhanced.wav方便你听一下。关键参数如下--help可查全部参数作用默认值export_dir位置参数ONNX 输出目录不存在会自动创建必填-m, --model-base-dir预训练模型名DeepFilterNet/DeepFilterNet2/DeepFilterNet3或本地模型目录DeepFilterNet3--simplify导出后用 onnxsim 简化计算图关闭--opsetONNX 算子集版本12--no-check跳过 ONNX 与 PyTorch 输出的一致性校验校验开启-e, --epoch加载哪个 checkpointbest/latest/ 整数best导出完成后目录结构大致是onnx_export/ ├── enc.onnx / erb_dec.onnx / df_dec.onnx # 三个子模型 ├── config.ini / version.txt # 配置与版本形如 DeepFilterNet3_epoch_best ├── enc_input.npz … df_dec_output.npz # 参考输入输出供一致性复验 └── DeepFilterNet3_onnx.tar.gz # 打包产物Rust/C 运行时直接吃这个导出后先跑一致性校验check默认开启只有想跳过才加--no-check。它对每个子模型做三件事onnx.checker.check_model(..., full_checkTrue)做图结构静态检查用 ONNX Runtime跨平台的模型推理引擎的CPUExecutionProvider会话实际推理一遍对每个输出张量执行np.testing.assert_allclose(torch_out, onnx_out, rtol1e-6, atol1e-5)逐输出比对。命令跑完之后如果日志里出现Elements not close for xxx警告说明该输出没对上——先固定 onnxruntime 版本重跑再考虑调整--opset不建议直接跳过。脚本同时把参考输入输出存成.npz文件之后任何改动量化、换 opset都可以用仓库自带的 scripts/assert_close_npz.py 离线复验不必重新导出。在你的应用里加载 ONNX 模型三段式结构决定了集成时要按enc → erb_dec / df_dec的顺序喂数据帧参数以config.ini为准默认 48kHz、fft_size 960、hop 480即每 10ms 一帧。PythonONNX Runtime 直连三个子模型import onnxruntime as ort enc ort.InferenceSession(onnx_export/enc.onnx) out enc.run( [e0, e1, e2, e3, emb, c0, lsnr], {feat_erb: feat_erb, feat_spec: feat_spec}, )enc.onnx的输入是 ERB 特征feat_erb和复数谱feat_spec实部/虚部放在通道维输出里e0-e3是逐层编码器特征emb是共享嵌入c0是深度滤波分支的输入。接着erb_dec.onnx输入emb, e3, e2, e1, e0输出掩码m和df_dec.onnx输入emb, c0输出滤波系数coefs依次接管。完整的逐帧循环STFT → 特征 → 推理 → 掩码/滤波 → ISTFT在 libDF/src/tract.rs 里都有实现照着抄最可靠。如果只做原型验证也可以直接用 Python API 绕过 ONNXfrom df import enhance, init_df model, df_state, _ init_df() enhanced enhance(model, df_state, noisy_audio)Rust / C复用 libDF 的 tract 运行时Rust 侧不需要手写推理循环libDF的tractfeature 已实现读 tar.gz → 建推理会话 → 逐帧处理全流程use libdf::tract::{DfParams, DfTract, RuntimeParams}; let params DfParams::new(models/DeepFilterNet3_onnx.tar.gz.into())?; let mut df DfTract::new(params, RuntimeParams::default())?; // 每帧: df.process(noisy.view(), enh.view_mut())? // 均为 [n_ch, 480] 的 f32 矩阵注意DfParams::new接收的是 tar.gz 整体内部解析enc.onnx、erb_dec.onnx、df_dec.onnx与config.ini所以直接用导出脚本生成的压缩包或 models/ 里的文件即可。C/C 侧则开启capifeature入口是 libDF/src/capi.rs 的df_create(path, atten_lim, log_level)头文件可用仓库根目录的cbindgen.toml生成。AndroidONNX Runtime Mobile 路线仓库没有现成的 Android 工程可行做法是把三个 .onnx 文件打进 APK 资源用 ONNX Runtime Androidonnxruntime-android在端侧建三个 session音频先重采样到 48kHz按 480 采样一帧地处理调用顺序与 Python 一节完全一致。如果端侧推理性能不达标备选方案是把 libDF 的capifeature 用 NDK 编成 so 直接调用此时推理走的是 tract 而非 ONNX Runtime。上线前的调优清单Execution Provider默认CPUExecutionProvider够用有 GPU 的机器可把CUDAExecutionProvider放到 providers 列表前面收益主要体现在离线批处理实时链路一般仍留在 CPU。模型简化--simplify走 onnxsim图会变小、部分算子融合简化失败时脚本会保留原文件并打日志不会静默丢结果。量化导出脚本没有内置量化参数需要时可用 onnxruntime 的量化工具对产物做 INT8 后训练量化再用导出的.npz参考数据复验输出偏差是否可接受。opset 版本默认 12 兼容性最好除非目标运行时明确要求不要随手抬高版本抬完务必重跑校验。延迟预算每帧 10ms480 采样 48kHzDeepFilterNet3 还有若干帧 lookaheadconfig.ini中conv_lookahead/df_lookahead实时链路要把这部分算进去延迟敏感就换_ll模型。批处理输入通道维是单通道设计离线批量处理按逐文件、逐帧循环即可不要试图塞 batch 维。常见报错速查表现象原因处理脚本报 Please install it via $ pip install MonkeyType 并退出缺少 MonkeyType 依赖pip install MonkeyType后重跑日志出现Elements not close for xxx某子模型 ONNX 输出与 PyTorch 不一致固定 onnxruntime 版本重跑调整--opset后必须重新校验日志出现Failed to simplify ... Skippingonnxsim 简化失败已保留未简化文件升级 onnxsim或去掉--simplify重新导出Rust 端报 DeepFilterNet2 models are deprecated ... use version v0.3.1当前 libDF 不再支持 DFN2 模型换DeepFilterNet3_onnx.tar.gz或_ll版本DfParams::new打开文件失败传了目录或 zip运行时只认 tar.gz用导出脚本生成的*_onnx.tar.gz增强后残留明显噪声或出现 artifactspost-filter / 衰减限制参数不当调整--pf或 Rust 端RuntimeParams的post_filter_beta、atten_lim_db回顾与资源整条动线回顾git clone→ 安装依赖 →python DeepFilterNet/df/scripts/export.py -m DeepFilterNet3 --simplify ./onnx_export→ 确认日志里没有Elements not close警告 → 按目标平台从 Python / Rust / Android 三条路中挑一条集成。后续改动模型后随时可以用.npz参考数据复验。相关入口导出脚本导出、校验、简化、打包一条龙预训练模型各模型检查点与 ONNX tar.gz 产物Rust 推理运行时逐帧处理主循环C/C 接口capifeature 入口Python 增强入口不碰 ONNX 时的快速验证路径一致性对比脚本量化或改 opset 后的离线复验工具【免费下载链接】DeepFilterNetNoise supression using deep filtering项目地址: https://gitcode.com/GitHub_Trending/de/DeepFilterNet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

CloudCompare点云处理实战:从激光雷达数据到OBJ建模全流程

CloudCompare点云处理实战:从激光雷达数据到OBJ建模全流程

简介:CloudCompare是一款面向三维点云处理领域的开源跨平台软件,适用于测绘、逆向工程、计算机视觉及地理信息系统(GIS)等方向的研究者与工程师,可高效完成法向量计算与优化、泊松曲面重建、点云滤波、配准与可视化等核…

📅 2026/10/17 1:58:56
Flutter开发OpenHarmony离线Web开发助手App:JavaScript参考模块实战

Flutter开发OpenHarmony离线Web开发助手App:JavaScript参考模块实战

如果你手里同时握着几张牌:一段还算扎实的Flutter开发经验、一台能跑OpenHarmony的设备,以及“写JavaScript时总得翻语法”的老毛病,那么把这三种需求压成一个离线App,会是件相当顺手的事。这篇就是我从零搭一个Web开发助手App的实…

📅 2026/10/17 1:58:56
SQL Developer 4.0.3.16.84 配置与避坑实战指南

SQL Developer 4.0.3.16.84 配置与避坑实战指南

简介:Oracle SQL Developer 4.0.3.16.84-x64 是 Oracle 官方推出的免费数据库图形化管理工具,面向开发人员、DBA 及数据分析人员,适用于连接、查询、建模、迁移、调优等日常操作,界面直观、对新手友好。压缩包共 2000 个文件&…

📅 2026/10/17 1:53:55
MORE NEWS

更多资讯

📰

让AI放心改代码:claude-delegator的read-only与workspace-write沙箱双模式安全机制详解

【免费下载链接】claude-delegator Delegate tasks to Codex and Gemini directly from within Claude Code. 项目地址: https://gitcode.com/gh_mirrors/cl/claude-delegator 点击查看 免费下载 claude-delegator 是一个让 Claude Code 能把任务委派给 Codex&…

📰

Scrapy入门实战:从创建项目到跑通第一个爬虫的全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Python进阶与并发编程07:CPU工作为什么要换进程,以及为什么换完可能更慢

Python进阶与并发编程07:CPU工作为什么要换进程,以及为什么换完可能更慢 报价系统不一定只等待网络。假设我们还要给每个SKU生成一份校验摘要,算法包含大量Python整数运算。这个计算与访问供应商相互独立,可以按商品分开执行。上一…

📰

MySQL COUNT函数全解析:三种形态、统计语义与性能优化

1. 先说结论:COUNT的三种形态,用错了数据就是错的MySQL里的COUNT函数,表面上看就是"数个数",但真的落到业务里,它可能是所有聚合函数里最容易写错的一个。我见过不少线上统计报表对不上账的情况,…

📰

SpringBoot整合MyBatis与Thymeleaf实现CRUD实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

2026.9.29:使用 Milvus Operator 在 Kubernetes 中运行 Milvus

使用 Milvus Operator 在 Kubernetes 中运行 Milvus 使用 Milvus Operator 在 Kubernetes 中运行 Milvus 官方文档教程 如何安装k8s集群? 2026.9.22:3台服务器安装kubernetes集群最新版 概述 Milvus Operator 是一套解决方案,可帮助您在目标 Kubernetes(K8s)集群中部署…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬