如何用 NeMo MarbleNet 完成语音活动检测(VAD)推理

发布时间:2026/9/14 11:54:31

如何用 NeMo MarbleNet 完成语音活动检测(VAD)推理 如何用 NeMo MarbleNet 完成语音活动检测VAD推理【免费下载链接】SpeechA scalable generative AI framework built for researchers and developers working on Large Language Models, Multimodal, and Speech AI (Automatic Speech Recognition and Text-to-Speech)项目地址: https://gitcode.com/GitHub_Trending/nem/Speech你手上有一批音频需要判断哪些时间区间里有人说话并得到带起止时间的语音片段。NeMo Speech 仓库中的 MarbleNet 就是为语音活动检测VAD设计的端到端神经网络Frame-VAD 对每个 20ms 帧输出语音/非语音概率再经后处理生成 RTTM 格式的语音片段文件。本文走仓库examples/asr/speech_classification目录中的默认 Frame-VAD 推理路径frame_vad_infer.py 预训练模型vad_multilingual_frame_marblenet覆盖输入准备、执行推理、核对输出、带 groundtruth 评估的完整过程。先了解 MarbleNet VAD 模型MarbleNet 基于 MatchboxNet是 1D 时间-通道可分离卷积网络模型族命名为MarbleNet_[BxRxC]B 个 block每个 block 含 R 个卷积子块C 为通道数每个子块包含 1-D 可分离卷积、batch normalization、ReLU 和 dropout在 AVA speech 数据集上达到 state-of-the-art 性能由nemo.collections.asr.models.EncDecClassificationModel实例化详见 models.rst。仓库中有两类 VAD 模型Frame-VAD逐帧预测默认每 20ms 帧一个概率和 Segment-VAD每段音频给一个标签默认段长 0.63s。本文主路径是 Frame-VADSegment-VAD 放在文末替代路线。推理脚本自动选择设备有 CUDA 用 CUDA否则用 CPU见 frame_vad_infer.py。准备输入 manifest推理输入是一个 manifest json 文件每行一个 Python 字典audio_filepath、offset、duration为必需字段文档示例/path/to/...需替换为你环境中的实际音频路径{audio_filepath: /path/to/audio_file1, offset: 0, duration: 10000} {audio_filepath: /path/to/audio_file2, offset: 0, duration: 10000}注意事项音频文件名必须唯一。脚本以文件名主干stem作为 key 匹配输入与输出重名会导致输出对应关系混乱。duration的取值单位在文档示例中并不统一脚本 docstring 示例写的是10000而配置文件注释示例写的是1.23秒。按配置文件注释示例它是秒为时长的单位自己写 manifest 时填入音频的实际时长。推理配置固定sample_rate: 16000音频会按 16kHz 采样率处理见 frame_vad_infer_postprocess.yaml。执行 Frame-VAD 推理主路径环境要求Python 中已安装 torch 和 NeMo含 ASR collection。在examples/asr/speech_classification目录下运行文档命令的相对路径基于该目录python frame_vad_infer.py \ --config-path../conf/vad --config-nameframe_vad_infer_postprocess \ input_manifest/path/to/manifest.json \ output_dir/path/to/outputinput_manifest上一步准备好的 manifest。注意speech_classification README 的示例写的是dataset但脚本代码与 docstring 实际校验的是input_manifest未提供会直接抛ValueError本文按代码为准。output_dir结果输出目录脚本自动创建如果目录已存在日志会警告该目录仅适合在后处理参数调参时复用。模型来自配置的vad.model_path默认vad_multilingual_frame_marblenet可以填预训练模型名也可以填本地.nemo文件路径。脚本默认开启长音频自动切分prepare_manifest.split_duration: 400秒以避免 CUDA OOM。运行中会按顺序看到这些日志说明各阶段已完成Split long audio file to avoid CUDA memory issue切分长音频Loading manifest file ...加载 manifestFinish generating VAD frame level prediction. You can find the prediction in dir帧级预测完成Converting frame level prediction to RTTM files.后处理生成语音片段Finished writing VAD output to manifest: path和Done!推理结束核对输出与验证结果输出目录下的产物如下内容位置帧级预测output_dir/frame_preds/语音片段RTTM 格式output_dir/rttm_preds/输出 manifestoutput_dir/manifest_vad_output.json输出 manifest 是在输入 manifest 基础上为每条记录追加rttm_filepath字段指向该音频的 RTTM 文件如果某个 RTTM 文件没找到日志会打印警告该字段写为空字符串。配置中vad.use_rttm默认为True输出 RTTM 格式改成False则输出起止时间表格而非 RTTM。直接打开 RTTM 文件即可查看该音频检测到的语音片段起止时间。也可以用仓库提供的函数把波形和 VAD 标签画在一起核对文档示例audio_file、rttm_file从输出 manifest 中取duration1000为示例值from nemo.collections.asr.parts.utils.vad_utils import plot_sample_from_rttm plot_sample_from_rttm( audio_file/path/to/audio_file.wav, rttm_file/path/to/rttm_file.rttm, offset0.0, duration1000, save_pathvad_pred.png )有 groundtruth 时评估 AUROC 与 DER如果你的 manifest 带标注可以量化模型检测效果在 frame_vad_infer_postprocess.yaml 中把evaluate设为true默认false在 manifest 中提供 groundtruth两种方式任选其一文档示例{audio_filepath: /path/to/audio_file1.wav, offset: 0, duration: 10000, label: 0 1 0 0 0 1 1 1 0}{audio_filepath: /path/to/audio_file1.wav, offset: 0, duration: 10000, rttm_filepath: /path/to/rttm_file1.rttm}脚本在日志末尾输出评估结果日志格式示例具体数值由运行时计算不是固定值AUROC: 0.xxxx DetERx.xxxx, False Alarmx.xxxx, Missx.xxxx with params: {...当前 postprocessing 参数...}可选调整语音段后处理参数配置中vad.parameters.postprocessing控制帧级预测如何转成语音段默认值为含义见配置文件注释onset: 0.3/offset: 0.3检测语音开始、结束的阈值pad_onset: 0.2/pad_offset: 0.2每个语音段前后追加的时长min_duration_on: 0.2/min_duration_off: 0.2删除过短语音段 / 过短非语音段的阈值filter_speech_first: True。配置文件注释明确提醒这些参数未在大数据集上调整过使用默认参数需留意。调参时脚本允许复用已有输出目录检测到目录已存在时会打印警告提示该目录仅用于调参场景。替代路线Segment-VAD 与 ASRVAD 脚本Segment-VAD可选对每段音频默认窗口 0.63s、步进 0.08s预测单个标签模型为vad_multilingual_marblenet在examples/asr/speech_classification目录下运行python vad_infer.py \ --config-path../conf/vad \ --config-namevad_inference_postprocessing \ dataset/path/to/manifest.json说明原 README 中这条命令缺少行尾续行符此处已修正形式。帧级预测输出到vad_frame默认输出 manifest 为vad_out.json见 vad_inference_postprocessing.yaml。ASRVAD 脚本的 VAD-only 模式可选examples/asr/asr_vad 提供speech_to_text_with_vad.py可同时跑 ASR 和 VAD也可以只跑 VAD。只跑 VAD 时设asr_modelNone并同时指定vad_model和vad_configpython speech_to_text_with_vad.py \ manifest_filepath/path/to/MANIFEST.json \ vad_modelvad_multilingual_frame_marblenet \ asr_modelNone \ vad_config../conf/vad/frame_vad_infer_postprocess.yaml该脚本除 manifest 外也支持直接传入音频目录audio_diraudio_type默认wav。限制与注意长音频默认每 400 秒切分一次推理切分点附近的帧因上下文被截断表现可能变差若仍遇到 CUDA 内存不足把prepare_manifest.split_duration调小。Frame-VAD 要求shift_length_in_sec为 0.02、window_length_in_sec为 0预训练 NeMo VAD 模型的固定约束见配置注释。配置中的smoothing和overlap对 Frame-VAD 标记为 Deprecated可忽略。进一步参考speech_classification READMEFrame-VAD / Segment-VAD 的训练、推理与评估说明asr_vad READMEASRVAD 推理管线的输入输出与 RTTM 用法frame_vad_infer.py本文主路径脚本的完整参数与日志逻辑【免费下载链接】SpeechA scalable generative AI framework built for researchers and developers working on Large Language Models, Multimodal, and Speech AI (Automatic Speech Recognition and Text-to-Speech)项目地址: https://gitcode.com/GitHub_Trending/nem/Speech创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/14 11:54:31

Agent Suite办公智能体落地指南:多智能体编排与工作流实践

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

2026/9/14 11:54:31

SSM+JSP网上招投标系统实战:事务控制与多角色协同设计

简介:这是一套面向计算机专业本科生的Java毕业设计实战项目,基于SSM(SpringSpringMVCMyBatis)框架与JSP/HTML前端技术开发的网上招投标系统,适用于毕业设计、课程设计及期末大作业场景,代码含详细注释&…

2026/9/14 12:44:36

基于轻量化CNN的草莓品质检测系统设计与实现

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

2026/9/14 12:44:36

低代码平台核心技术解析与企业实践指南

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

2026/9/14 12:44:35

贪心算法实现文本两端对齐的技术解析

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

2026/9/14 12:44:35

Android序列化方案对比:Serializable、Parcelable与kotlinx.serialization

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

2026/9/14 12:44:35

ReasoningBank:复杂推理NLP框架解析与实践

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

2026/9/14 12:39:35

GeneratePress 图片对齐精调:CSS 覆盖实战指南

如果你折腾过 GeneratePress(后面统一叫 GP),应该能感受到它最大的特点就是“省心”:轻量、加载快、默认样式干净。但干净的另一面是什么?就是很多东西你得自己动手补。尤其是图片对齐这个事儿,默认情况下它…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码