尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
NeMo 说话人日志(Speaker Diarization)数据集准备实战指南:Manifest 格式、长音频切分与训练/推理数据构建
NeMo 说话人日志Speaker Diarization数据集准备实战指南Manifest 格式、长音频切分与训练/推理数据构建【免费下载链接】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本篇指南聚焦 NeMoSpeech仓库中说话人日志系统的数据准备工作系统讲解训练与推理共用的 JSON-lines manifest 格式、pathfiles_to_diarize_manifest.py脚本的完整用法、RTTM/UEM/CTM 标注格式规范以及长音频按offset/duration虚拟切分、num_speakers语义与说话人数量覆盖等关键数据工程要点。读完后你可以独立完成端到端Sortformer与级联VADEmbeddingClustering两种日志系统的数据构建与推理数据准备并理解 NeMo dataloader 底层的窗口化标注实现。一、总览训练与推理共用的 Manifest 格式说话人日志训练需要一个JSON-lines 格式的 manifest 文件每一行描述一个训练片段指向一个音频文件及其对应的 RTTMRich Transcription Time Marked真值标签文件。训练与推理使用完全相同的 manifest 格式这是 NeMo 说话人任务数据约定的核心。原始文档中给出的单行 manifest 示例如下{audio_filepath: /path/to/abcd01.wav, offset: 0, duration: 90, label: infer, text: -, num_speakers: 2, rttm_filepath: /path/to/rttm/abcd01.rttm}从 NeMo 源码 manifest_utils.py 中的create_manifest函数可以看到由脚本生成的 manifest 每行实际包含如下完整字段集合{ audio_filepath: /path/to/abcd01.wav, offset: 0, duration: 90.0, label: infer, text: -, num_speakers: 2, rttm_filepath: /path/to/rttm/abcd01.rttm, uem_filepath: null, ctm_filepath: null }几个源码层面的细节值得注意num_speakers由 RTTM 自动统计create_manifest会读取对应 RTTM 文件用Counter统计不同说话人 ID 的数量写入 manifest若未提供 RTTM 文件则为nulltext字段的缺省值是-未提供转写文件时脚本不会报错而是填充占位符---add_duration通过 librosa 计算时长脚本会逐文件加载音频librosa.load后librosa.get_duration把真实时长写入 manifest因此对大文件目录该选项会显著拖慢生成速度但能确保 manifest 中duration与音频真实长度一致。二、用pathfiles_to_diarize_manifest.py生成 ManifestNeMo 提供脚本 pathfiles_to_diarize_manifest.py用于从「音频路径列表 RTTM 路径列表」等文本清单直接生成 manifest。2.1 训练场景的最小用法原始文档给出的训练 manifest 生成命令三个参数均为必需python NeMo_git_root/scripts/speaker_tasks/pathfiles_to_diarize_manifest.py \ --add_duration \ --paths2audio_files/path/to/audio_file_path_list.txt \ --paths2rttm_files/path/to/rttm_file_list.txt \ --manifest_filepath/path/to/train_manifest.json其中--paths2audio_files与--manifest_filepath是必填参数--paths2rttm_files在训练场景中必须提供。音频与 RTTM 文件按基础文件名base filename配对例如abcd01.wav对应abcd01.rttm。对应的路径列表文件内容示例audio_file_path_list.txt/path/to/abcd01.wav /path/to/abcd02.wavrttm_file_path_list.txt/path/to/abcd01.rttm /path/to/abcd02.rttm命名约束所有提供的文件音频、RTTM、文本必须共享同一基础名且每个基础名在整个数据集中必须唯一。这一点在脚本源码的模块注释中同样被强调“make sure basename for each file is unique and rttm files also has the corresponding base name for mapping”。2.2 推理场景的完整用法推理同时支持端到端与级联系统的 manifest 生成支持更多可选文件类型。原始文档给出的完整命令如下python pathfiles_to_diarize_manifest.py \ --paths2audio_files /path/to/audio_file_path_list.txt \ --paths2txt_files /path/to/transcript_file_path_list.txt \ --paths2rttm_files /path/to/rttm_file_path_list.txt \ --paths2uem_files /path/to/uem_file_path_list.txt \ --paths2ctm_files /path/to/ctm_file_path_list.txt \ --manifest_filepath /path/to/manifest_output/input_manifest.json与argparse定义见脚本源码对照全部参数及语义如下参数是否必需说明--paths2audio_files必需音频文件绝对路径清单文本文件--manifest_filepath必需输出 manifest 文件路径--paths2txt_files可选真值转写文件清单用于“日志 ASR”联合推理的转写比对--paths2rttm_files可选RTTM 真值清单提供后自动启动 DER 评估--paths2uem_files可选UEM 计分区间清单--paths2ctm_files可选CTM 词级时间戳清单用于词级日志评估--add_duration可选通过加载音频计算并写入真实时长生成后推理时把 manifest 绝对路径通过 Hydra 配置传入diarizer节点下的必填项diarizer.manifest_filepathpath/to/manifest/input_manifest.json完整的推理侧 Hydra 配置VAD、Speaker Embedding、Clustering、ASR 各模块参数请参考 configs.rst 以及examples/speaker_tasks/diarization/conf/下的示例 YAML。三、标注文件格式详解RTTM、UEM 与 CTM3.1 RTTMRich Transcription Time MarkedRTTM 提供逐说话人的语音活动时间戳每行结构为SPEAKER TS3012d.Mix-Headset 1 32.679 0.671 NA NA MTD046ID NA NA各字段依次为类型SPEAKER、会话名、通道 ID、起始时间、持续时间、NA、NA、说话人 ID、NA、NA。在训练数据加载过程中RTTM 行会经过 audio_to_diar_label.py 中的convert_rttm_line/extract_frame_info_from_rttm解析为(start, end, speaker)三元组再转换为帧级多通道 one-hot 标签矩阵每个说话人一行列的激活图并进一步聚合到模型的目标帧率上。源码中还会自动跳过 start end 的非法 RTTM 行因此制作标注数据时即使存在个别坏行也不会直接中断训练但会静默丢失对应区间。3.2 UEM计分区间文件UEM 用于指定评估时真正计分的音频区间行格式为uniq-id channel ID start time end time其中通道 ID 固定为 1TS3012d.Mix-Headset 1 12.31 108.98 TS3012d.Mix-Headset 1 214.00 857.09典型用途是排除长录音中无人说话的开头/结尾或剔除设备未开启的区间避免这些区间拉高 DER。3.3 CTM词级时间戳文件CTM 用于词级日志结果与词时间戳对齐的评估行格式为session name channel ID start time duration word confidence type of token speakerTS3012d.Mix-Headset 1 12.879 0.32 okay NA lex MTD046ID TS3012d.Mix-Headset 1 13.203 0.24 yeah NA lex MTD046ID注意事项speaker必须与 RTTM 中的说话人 ID完全一致评估日志结果不需要置信度故confidence填NAtoken 类型为词时type of token填lex。四、Manifest 各字段说明推理场景推理输入 manifest 的完整一行示例{audio_filepath: /path/to/abcd.wav, offset: 0, duration: null, label: infer, text: -, num_speakers: null, rttm_filepath: /path/to/rttm/abcd.rttm, uem_filepath: /path/to/uem/abcd.uem}逐字段说明audio_filepath必需音频文件绝对路径字符串num_speakers可选已知说话人数量时填整数未知时填null。在级联系统的聚类的oracle_num_speakers: True场景下会使用该值见 configs.rst 中 clustering 配置rttm_filepath可选提供后自动发起日志评估DER 等指标text可选用于“日志 ASR”推理时提供真值转写字符串例如{text: this is an example transcript}uem_filepath可选指定计分区间见第 3.2 节ctm_filepath可选词级评估见第 3.3 节。除audio_filepath外所有字段均可缺省按需组合即可覆盖不同推理设置。五、长音频处理offset/duration 虚拟切分长录音不需要物理切分成多个短文件。NeMo 的日志 dataloader 只会读取每条 manifest 记录中offset与duration指定的音频区间对应的 RTTM 文件也会自动窗口化windowed到相同时间范围无需为每个片段单独制作 RTTM。切分长录音的做法是创建多条 manifest 记录引用同一个音频文件和同一个 RTTM 文件但赋予不同的offset/duration。每条记录必须带有唯一的uniq_id以便 dataloader 区分来自同一源文件的不同片段。推荐的命名约定是base_name#index#offset#duration。原始文档中把一段 45 分钟录音EN2001a.Mix-Headset.wav按 90 秒窗口切分后其中一条记录示例如下整段会话有 4 位说话人但该片段内只有 3 位活跃{uniq_id: EN2001a.Mix-Headset#116#932.92#90.0, offset: 932.92, duration: 90, num_speakers: 3, audio_filepath: /path/to/wav/EN2001a.Mix-Headset.wav, rttm_filepath: /path/to/rttm/EN2001a.Mix-Headset.rttm}从源码结构看这一机制的实现链路是manifest 由 collections.py 中的EndtoEndDiarizationSpeechLabel解析出每条样本的offset/duration随后 audio_to_diar_label.py 中的extract_frame_info_from_rttm(offset, duration, rttm_lines)只保留与该时间窗相交的 RTTM 区间并把起止时间裁剪到窗口内start, end max(start, rttm_stt), min(end, rttm_end)get_frame_targets_from_rttm再把裁剪后的区间栅格化为帧级标签。get_uniq_id_with_range方法则进一步以文件基名_offset_endtime毫秒精度的形式为训练样本生成唯一 ID印证了文档中“同一源文件产生多个训练样本时必须可区分”的约束。六、num_speakers与部分说话人出现一个训练片段可能只包含整段录音中部分说话人。num_speakers字段应反映该片段中实际活跃的说话人数而不是整个会话的总人数如第五节示例中会话共 4 人片段记 3 人。实操上num_speakers是可选字段——dataloader 可以从片段时间窗内的 RTTM 标签自动推断说话人数。原始文档将其归因于audio_to_diar_label.py中的DiarizationLabelDataset类按当前仓库源码核实该文件中的端到端日志数据集类实际名为AudioToSpeechE2ESpkDiarDataset内部基类_AudioToSpeechE2ESpkDiarDataset其parse_rttm_for_targets_and_lens等方法正是从 RTTM 窗口化标签生成训练目标的过程推断逻辑一致。此外源码还有一个值得留意的边界行为当片段内说话人数超过模型配置的max_num_of_spks时get_frame_targets_from_rttm会发出 warning 并只保留前max_spks位说话人“Only {max_spks} first speakers remain, and this will affect frame metrics!”。这解释了为什么训练时片段内说话人数与模型上限对齐很重要——超限片段不会报错但标签会被静默截断影响训练质量。七、训练数据的说话人数量覆盖模型无法泛化到训练中从未遇到过的说话人数量。若目标场景最多涉及N位说话人训练集必须包含从 1 到 N 的每一个说话人数出现的片段。当高说话人数的自然数据稀缺时原始文档给出三种补充手段**过采样Oversampling**包含更多说话人的片段数据增强Augmenting用模拟多人混合语音如基于 LibriSpeech 的合成混合补足。仓库中 multispeaker_simulator.py 与配套教程 Multispeaker_Simulator.ipynb 提供了合成多说话人混音数据的工具链按说话人数量扩展数据量例如 1 人片段 100 小时、2 人片段 200 小时、3 人片段 300 小时以此类推。训练与推理场景的说话人数量分布匹配对取得好的日志性能至关重要。八、训练 vs 推理两种数据准备路径的差异小结维度端到端End-to-End训练推理端到端 级联通用manifest 必需字段audio_filepathrttm_filepath仅audio_filepath生成脚本pathfiles_to_diarize_manifest.py--paths2audio_files、--paths2rttm_files、--manifest_filepath均必需常加--add_duration同一脚本txt/uem/ctm 等参数按需提供长音频切分多条记录共享同一音频/RTTMoffset/durationuniq_id区分单条记录即可offset/duration支持局部推理级联系统额外数据不适用端到端训练 manifest 之外级联训练还需进一步加工为“成对双说话人会话”文件原始文档仅作提示具体流程见examples/speaker_tasks/diarization/下的训练入口与配置需要提醒的是原始文档在级联训练处仅提示“manifest 应进一步加工以生成 pairwise two-speaker session files”未展开具体步骤如果你使用的是级联VADEmbeddingClustering路线建议结合 configs.rst 中的train_ds配置项与examples/speaker_tasks/diarization/conf/下的 YAML 继续查证字段含义。九、实操检查清单在把 manifest 交给 NeMo 训练/推理流程前建议逐项核对基名唯一性每个音频文件的基础名在全数据集中唯一RTTM/TXT/UEM/CTM 文件与音频严格同基名、仅扩展名不同脚本以基名为 key 配对重名会被静默覆盖RTTM 合法性确认每行duration 0即 start end非法行会被 dataloader 跳过而非报错说话人 ID 一致性RTTM 与 CTM 中的 speaker ID 字符串必须完全一致num_speakers语义记录的是片段内活跃人数可留空由 RTTM 推断确保片段内人数不超过模型max_num_of_spks说话人数量覆盖训练集覆盖 1..N 全部说话人数并按第 7 节策略补足高人数数据时长字段使用--add_duration生成后抽查若干条duration与ffprobe/真实音频长度一致。按以上流程构建的 manifest 可直接用于 neural_diarizer 训练入口 及examples/speaker_tasks/diarization/conf/inference/下的推理配置完成从数据准备到日志系统训练/评估的完整闭环。【免费下载链接】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),仅供参考
RELATED

相关推荐

awesome-copilot 的 draw.io 形状库完全指南:内置库、样式字符串与自定义库实战

awesome-copilot 的 draw.io 形状库完全指南:内置库、样式字符串与自定义库实战

awesome-copilot 的 draw.io 形状库完全指南:内置库、样式字符串与自定义库实战 【免费下载链接】awesome-copilot Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot. 项目地址: https://gi…

📅 2026/9/13 9:19:37
N8N与AI智能体集成:从部署到实战开发指南

N8N与AI智能体集成:从部署到实战开发指南

1. N8N与AI智能体的技术演进全景在自动化工具领域,N8N作为开源工作流平台已经完成了从简单任务编排到AI智能体集成的质变。我首次接触N8N是在2019年处理电商订单自动化时,当时它仅支持基础的HTTP请求和数据库操作。而如今最新版本已内置LLM节点&#xff…

📅 2026/9/13 9:19:37
目标检测毕业设计:YOLOv8应用与高通过率选题指南

目标检测毕业设计:YOLOv8应用与高通过率选题指南

1. 项目概述:目标检测毕业设计的黄金窗口期2026届计算机视觉方向的毕业生正面临一个绝佳的技术窗口期——目标检测领域经过YOLOv8、DETR等模型的迭代,算法成熟度与易用性已达到本科生可驾驭的水平。我在指导近三年毕业设计时发现,选择合理的目…

📅 2026/9/13 9:19:37
MORE NEWS

更多资讯

📰

OmniRoute 发布检查清单:从版本号、OpenAPI 契约到 CI 同步守卫的完整发布流程

OmniRoute 发布检查清单:从版本号、OpenAPI 契约到 CI 同步守卫的完整发布流程 【免费下载链接】OmniRoute Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150 free), 1200 models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Wo…

📰

形参对实参的影响:值传递与引用传递的工程实践指南

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

📰

marimo 云服务示例实战:用 uv 沙箱运行 GCP 数据应用,用 Modal 部署 GPU 笔记本与应用

marimo 云服务示例实战:用 uv 沙箱运行 GCP 数据应用,用 Modal 部署 GPU 笔记本与应用 【免费下载链接】marimo A reactive notebook for Python — run reproducible experiments, query with SQL, execute as a script, deploy as an app, and version…

📰

AI Agent多意图路由与查询分发技术解析

1. AI Agent架构中的核心挑战与解决方案在构建现代AI智能体系统时,我们常常面临一个根本性矛盾:用户习惯用自然语言表达需求,而系统底层需要结构化指令才能精准执行。这种语义鸿沟直接影响了AI Agent的实用性和用户体验。以一个典型IT支持场景…

📰

超帧(HyperFrame)设计指南:解决多传感器数据同步与封装的工程方法论

干了这么多年数据采集和实时系统,我慢慢发现一个规律:凡是涉及多路数据同步的场景,不管前端怎么折腾,最后几乎都会收敛到同一个思路上——把多个杂乱无章的帧,打包成一个更大的结构来统一处理。这个结构就是 hyperfram…

📰

CogVideoX LoRA 微调手把手:单卡完成定制视频生成的完整路径

CogVideoX LoRA 微调手把手:单卡完成定制视频生成的完整路径 【免费下载链接】CogVideo text and image to video generation: CogVideoX (2024) and CogVideo (ICLR 2023) 项目地址: https://gitcode.com/GitHub_Trending/co/CogVideo CogVideoX 是清华大学…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬