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

发布时间:2026/11/9 6:09:54

如何用 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/10/25 22:51:21

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/11/7 1:56:57

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

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

2026/11/9 6:08:39

有关电工证培训机构怎么选 官方报名入口在哪儿

有关电工证培训机构怎么选 官方报名入口在哪儿 之前考的证在外省能不能转过来?这是很多特种作业人员最头疼的问题,尤其是像你这样在洛阳涧西区从事水利工程的同事,频繁跨省作业,证书能否在不同省份使用直接影响着工作机会和职业发展。今天就从【有关电工…

2026/11/9 6:08:39

最新国网电工证查询多少钱 外省证能转过来吗

最新国网电工证查询多少钱 外省证能转过来吗 之前考的证在外省能不能转过来?这个问题你肯定问过,而且现在很多人都在问。别急,这篇文章就帮你把【最新国网电工证查询】和【多少钱】这两个关键词讲明白,告诉你怎么转、怎么查、怎么考,甚至还能帮你规划考…

2026/11/9 6:08:39

低压电工证备考方法怎么考,考前押题全攻略

低压电工证备考方法怎么考,考前押题全攻略 之前考的证在外省能不能转过来,这几乎是所有准备考证的朋友最关心的问题。特别是像郑州金水区的应届工程类毕业生,面对工作和考证的双重压力,不仅得了解低压电工证备考方法,还得搞清楚外省证件是否有效。好消息…

2026/11/9 6:03:39

盐城高压电工证考试怎么报名多少钱

盐城高压电工证考试怎么报名多少钱 工地太忙根本没时间复习考试,这是很多电工师傅的真实写照,尤其是那些在盐城、洛阳涧西区等工地一线干活的朋友们,高压电工证考试成了绕不开的门槛。但很多人不知道,其实考试并不像想象中那么难,关键在于怎么高效备考和…

2026/11/9 0:37:55

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/9 0:03:09

建设厅的特种工有哪些含金量高?别交完钱考不过

建设厅的特种工有哪些含金量高?别交完钱考不过 怕考不过白交培训费?别急,先搞清楚建设厅的特种工有哪些含金量高的证,再决定是不是值得投入时间和金钱。 建设厅的特种工证是建筑行业里最基础、也最实用的证书之一,涉及多个作业类别,每种证的 含金量…

2026/11/9 0:03:09

荆门市电工证报名怎么考才靠谱 全国通用证别交冤枉钱

荆门市电工证报名怎么考才靠谱 全国通用证别交冤枉钱 怕考不过白交培训费?荆门市电工证报名前必须知道这些避坑指南。别看网上一堆培训机构广告,真要报个电工证,很多人被坑得一塌糊涂。特别是那些打着“包过”旗号的,最后不是考试不过,就是证不是全国通…

2026/11/9 0:03:09

高空电工作业过程通过率揭秘:怎么选靠谱机构不被坑

高空电工作业过程通过率揭秘:怎么选靠谱机构不被坑 不知道去哪报名怕被中介坑?你不是一个人。现在特种作业证报名渠道五花八门,从线下培训机构到线上代理,真假难辨。尤其是像高空电工作业这类高风险、高门槛的作业类型,证书含金量和考试通过率直接影响你…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

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

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

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