目录一、论文基础信息二、研究背景与现存模型痛点三、CAM 整体架构设计四、实验设置五、实验结果与分析六、论文四大核心创新点七、CAM 为什么现在这么流行八、全文结论九、代码测试一、论文基础信息论文标题CAM: A Fast and Efficient Network for Speaker Verification Using Context-Aware Masking发表来源https://arxiv.org/pdf/2303.003322023.6阿里达摩院 Speech Lab任务文本无关说话人确认Speaker Verification, SV核心目标解决主流高精度声纹模型精度与推理效率无法兼顾的痛点设计一款同时具备高识别精度、低参数量、低计算量、超快推理速度的声纹嵌入提取网络代码开源至阿里 3D-Speaker 仓库GitHub - modelscope/3D-Speaker: A Repository for Single- and Multi-modal Speaker Verification, Speaker Recognition and Speaker Diarization · GitHub。CAM说话人确认-中文-通用-200k-Spkrs二、研究背景与现存模型痛点1. 说话人确认基础流程系统分为两大模块①嵌入提取器将不定长语音转为固定维度说话人特征向量②后端打分模块计算两段语音嵌入的相似度判断是否为同一人。2. 现有主流模型优缺点TDNN/xvector一维时序空洞卷积推理高效但识别精度偏低ECAPA-TDNN融合 Res2Block、SE 通道注意力曾是 SOTA 精度但参数量高达 14.66M、浮点运算量大推理速度慢不适合嵌入式、高并发低算力场景ResNet34时频二维卷积残差网络精度优秀但 FLOPs 极高内存访问开销大推理延迟高原始 D-TDNN借鉴 DenseNet 稠密连接机制相比原生 TDNN 参数更轻量化但精度和 ECAPA/ResNet 存在明显差距初代 CAM 模块给 D-TDNN 增加上下文掩码可抑制噪声、聚焦目标说话人但仅在每个 Dense Block 末尾部署掩码层数不足且仅使用全局池化生成上下文向量丢失语音分段局部特征掩码预测精度有限。3. 待解决核心问题现有高精度模型计算成本高、推理慢轻量化模型精度不足行业缺少精度、参数量、计算开销、实时性四者兼顾的声纹网络。三、CAM 整体架构设计整体分为两大核心组件2D 卷积前端模块 FCM深度窄通道 D-TDNN 骨干网络每一层 D-TDNN 内部嵌入轻量化、多粒度池化改进的 CAM 注意力掩码模块。3.1 前端卷积模块 FCM2D 残差卷积结构4 个残差卷积块所有块通道统一为 32后 3 个残差块在频域维度设置步长 2实现频域 8 倍下采样设计动机原生 TDNN 仅做时序一维卷积难以捕捉局部频域细微说话人特征本文 D-TDNN 采用窄通道设计频域建模能力进一步削弱作用提取高分辨率时频联合特征增强模型对频域偏移、说话人发音差异的鲁棒性弥补窄通道骨干的建模短板输出处理将特征图沿通道、频域维度展平送入 D-TDNN 骨干。3.2 深度窄通道 D-TDNN 骨干核心改进基于原始 D-TDNN 深度不足、通道过宽的缺陷做针对性重构依据结论说话人验证任务中加深网络带来的精度提升远大于加宽通道。原版 D-TDNN2 个 Dense Block6 层 12 层特征增长系数 k64本文改进方案增加至 3 个 Dense Block每层数量扩充为 12、24、16大幅提升网络深度收窄通道增长系数 k 从 64 降至 32控制整体参数量在 D-TDNN 最前端增加 1/2 下采样 TDNN 层降低时序维度、加速计算稠密连接机制每层输出拼接所有前置层特征提升参数利用率关键升级将轻量化 CAM 掩码嵌入每一层 D-TDNN 内部初代 CAM 仅 Block 末尾使用全网络逐层过滤噪声、强化目标说话人特征。3.3 改进型上下文感知掩码 CAM核心创新多粒度池化初代 CAM 仅采用全局平均池化丢失语音分段局部时序特征掩码预测不够精准本文设计全局池化 (GP) 分段池化 (SP) 融合的多粒度方案同时完成轻量化优化。前向流程D-TDNN 内置 FNN 输出特征 X → TDNN 提取局部时序特征 F双粒度上下文向量生成全局池化 GP对整段语音求均值得到全局说话人表征eg分段池化 SP将语音切分为固定 100 帧片段每段单独均值池化得到分段局部表征es掩码生成融合eg与es经两层全连接 Sigmoid 输出逐帧掩码 M特征校准掩码 M 与原始时序特征逐元素相乘抑制无关噪声、放大目标说话人声纹信息轻量化优势相比初代 CAM 参数量大幅降低每层部署几乎无额外计算开销且融合分段池化不会新增参数。四、实验设置4.1 数据集VoxCeleb英文公开集VoxCeleb2 开发集训练5994 位说话人测试集为 Vox1-O / Vox1-E / Vox1-HCN-Celeb中文公开集CN-Celeb12 开发集联合训练2785 位中文说话人训练时将短语音拼接至 6 秒以上注册集多条语音取平均嵌入完成评测。4.2 训练配置输入特征80 维 Fbank25ms 帧长、10ms 帧移数据增强语速扰动0.9/1.0/1.1 倍速、RIR 混响模拟、MUSAN 噪声叠加损失函数AAM-Softmaxmargin0.2scale32优化策略SGD 优化器线性预热 余弦退火学习率0.1~1e-4动量 0.9权重衰减 1e-4训练时随机截取 3 秒语音构建批次评测指标EER等错误率越低性能越好、MinDCF最小检测代价后端采用余弦相似度打分无分数归一化。五、实验结果与分析5.1 整体精度对比Table 1模型参数(M)VoxCeleb-O EERCN-Celeb EERTDNN4.622.31%9.86%D-TDNN2.851.55%8.41%ECAPA14.660.89%7.45%CAM7.180.73%6.78%基线模型TDNN、ECAPA-TDNN、ResNet34、原始 D-TDNN、加深无掩码 D-TDNN-LCAM 全面超越所有主流基线VoxCeleb1-OEER0.973%优于 ECAPA (0.89%)、ResNet34 (0.97%)CN-Celeb 中文测试集EER6.78%优于 ECAPA (7.45%)、ResNet34 (6.97%)参数效率优势CAM 仅 7.18M 参数ECAPA 高达 14.66M参数减半同时 Vox-O 数据集 EER 相对降低 18%消融实验验证模块有效性移除 CAM 掩码Vox-O EER 升至 0.93%CN 升至 7.16%多粒度掩码可使 Vox-O 相对 EER 下降 21%中文集下降 5%移除 FCM 2D 卷积前端全数据集 EER 显著上升证明时频二维卷积是窄通道 D-TDNN 的必要补充。5.2 多粒度池化消融实验Table 2以原始 D-TDNN 为基线对比初代 CAM、单全局池化 CAM、全局 分段融合 CAM初代 CAMEER 小幅下降但参数量上涨 44%参数效率差仅全局池化 (GP) 改进 CAM仅增加 8% 参数精度与初代 CAM 持平GP 分段 SP 融合无任何新增参数CN-Celeb EER 进一步下降证明分段局部时序信息可显著提升掩码精准度。5.3 模型复杂度与推理速度分析Table 3CPU 单线程测试模型参数量 (M)总浮点运算 FLOPs (G)实时因子 RTF越小推理越快ECAPA-TDNN14.663.960.033ResNet346.706.840.032CAM7.181.720.013核心结论CAM 浮点运算量仅为 ECAPA 的 1/2、ResNet34 的 1/4推理速度是 ECAPA、ResNet 的 2 倍以上ResNet 参数量略低但 FLOPs 极高、内存读写开销大实际推理延迟更高。六、论文四大核心创新点深度窄通道 D-TDNN 骨干遵循 “深度收益大于通道宽度” 结论大幅加深网络同时收窄通道控制参数量将 CAM 掩码嵌入每一层 D-TDNN区别于初代仅在 Block 末尾使用。多粒度池化轻量化 CAM 掩码Context-Aware Masking融合全局整段语音表征与分段局部时序表征解决单一全局池化丢失局部特征的缺陷掩码预测更精准且几乎无额外计算开销。2D 残差卷积前端Front-end Convolution Module FCM弥补一维 TDNN 频域建模短板增强模型对频域偏移、发音差异的鲁棒性适配窄通道骨干网络。精度与效率双向最优在中英文两大权威说话人数据集上达到 SOTA 识别精度同时参数量、计算量、推理速度全面优于 ECAPA-TDNN、ResNet34适配嵌入式、高并发、低算力工业场景。七、CAM 为什么现在这么流行CAM 成为很多工业级说话人验证系统默认选择主要原因包括精度高在 VoxCeleb、CN-Celeb 等公开数据集上优于 ECAPA-TDNN。计算效率高参数和 FLOPs 明显低于 ECAPA更适合 CPU 和边缘设备部署。实时性强推理速度快适用于门禁、会议系统、客服、IoT 等实时应用。结构易扩展保留 TDNN 主干只增加轻量模块便于与现有系统集成。八、全文结论本文提出 CAM 轻量化高效声纹嵌入网络通过改进 D-TDNN 骨干、多粒度池化上下文掩码、2D 时频卷积前端三大创新模块在 VoxCeleb、CN-Celeb 标准说话人确认测试集上取得最优识别性能相比 ECAPA-TDNN、ResNet34 等主流高精度模型参数量、浮点运算量大幅降低推理速度提升 2 倍以上可广泛部署于资源受限、高实时性要求的语音业务场景相关代码已开源。九、代码测试from modelscope.pipelines import pipeline sv_pipeline pipeline( taskspeaker-verification, modeliic/speech_campplus_sv_zh-cn_16k-common, model_revisionv1.0.0 ) speaker1_a_wav https://modelscope.cn/api/v1/models/damo/speech_campplus_sv_zh-cn_16k-common/repo?RevisionmasterFilePathexamples/speaker1_a_cn_16k.wav speaker1_b_wav https://modelscope.cn/api/v1/models/damo/speech_campplus_sv_zh-cn_16k-common/repo?RevisionmasterFilePathexamples/speaker1_b_cn_16k.wav speaker2_a_wav https://modelscope.cn/api/v1/models/damo/speech_campplus_sv_zh-cn_16k-common/repo?RevisionmasterFilePathexamples/speaker2_a_cn_16k.wav # 相同说话人语音 result sv_pipeline([speaker1_a_wav, speaker1_b_wav]) print(result) # 不同说话人语音 result sv_pipeline([speaker1_a_wav, speaker2_a_wav]) print(result) # 可以自定义得分阈值来进行识别阈值越高判定为同一人的条件越严格 result sv_pipeline([speaker1_a_wav, speaker2_a_wav], thr0.31) print(result) # 可以传入output_emb参数输出结果中就会包含提取到的说话人embedding result sv_pipeline([speaker1_a_wav, speaker2_a_wav], output_embTrue) print(result[embs], result[outputs]) # 可以传入save_dir参数提取到的说话人embedding会存储在save_dir目录中 result sv_pipeline([speaker1_a_wav, speaker2_a_wav], save_dirsavePath/)
使用上下文感知掩码的快速高效声纹识别网络cam++
发布时间:2026/7/1 5:27:09
目录一、论文基础信息二、研究背景与现存模型痛点三、CAM 整体架构设计四、实验设置五、实验结果与分析六、论文四大核心创新点七、CAM 为什么现在这么流行八、全文结论九、代码测试一、论文基础信息论文标题CAM: A Fast and Efficient Network for Speaker Verification Using Context-Aware Masking发表来源https://arxiv.org/pdf/2303.003322023.6阿里达摩院 Speech Lab任务文本无关说话人确认Speaker Verification, SV核心目标解决主流高精度声纹模型精度与推理效率无法兼顾的痛点设计一款同时具备高识别精度、低参数量、低计算量、超快推理速度的声纹嵌入提取网络代码开源至阿里 3D-Speaker 仓库GitHub - modelscope/3D-Speaker: A Repository for Single- and Multi-modal Speaker Verification, Speaker Recognition and Speaker Diarization · GitHub。CAM说话人确认-中文-通用-200k-Spkrs二、研究背景与现存模型痛点1. 说话人确认基础流程系统分为两大模块①嵌入提取器将不定长语音转为固定维度说话人特征向量②后端打分模块计算两段语音嵌入的相似度判断是否为同一人。2. 现有主流模型优缺点TDNN/xvector一维时序空洞卷积推理高效但识别精度偏低ECAPA-TDNN融合 Res2Block、SE 通道注意力曾是 SOTA 精度但参数量高达 14.66M、浮点运算量大推理速度慢不适合嵌入式、高并发低算力场景ResNet34时频二维卷积残差网络精度优秀但 FLOPs 极高内存访问开销大推理延迟高原始 D-TDNN借鉴 DenseNet 稠密连接机制相比原生 TDNN 参数更轻量化但精度和 ECAPA/ResNet 存在明显差距初代 CAM 模块给 D-TDNN 增加上下文掩码可抑制噪声、聚焦目标说话人但仅在每个 Dense Block 末尾部署掩码层数不足且仅使用全局池化生成上下文向量丢失语音分段局部特征掩码预测精度有限。3. 待解决核心问题现有高精度模型计算成本高、推理慢轻量化模型精度不足行业缺少精度、参数量、计算开销、实时性四者兼顾的声纹网络。三、CAM 整体架构设计整体分为两大核心组件2D 卷积前端模块 FCM深度窄通道 D-TDNN 骨干网络每一层 D-TDNN 内部嵌入轻量化、多粒度池化改进的 CAM 注意力掩码模块。3.1 前端卷积模块 FCM2D 残差卷积结构4 个残差卷积块所有块通道统一为 32后 3 个残差块在频域维度设置步长 2实现频域 8 倍下采样设计动机原生 TDNN 仅做时序一维卷积难以捕捉局部频域细微说话人特征本文 D-TDNN 采用窄通道设计频域建模能力进一步削弱作用提取高分辨率时频联合特征增强模型对频域偏移、说话人发音差异的鲁棒性弥补窄通道骨干的建模短板输出处理将特征图沿通道、频域维度展平送入 D-TDNN 骨干。3.2 深度窄通道 D-TDNN 骨干核心改进基于原始 D-TDNN 深度不足、通道过宽的缺陷做针对性重构依据结论说话人验证任务中加深网络带来的精度提升远大于加宽通道。原版 D-TDNN2 个 Dense Block6 层 12 层特征增长系数 k64本文改进方案增加至 3 个 Dense Block每层数量扩充为 12、24、16大幅提升网络深度收窄通道增长系数 k 从 64 降至 32控制整体参数量在 D-TDNN 最前端增加 1/2 下采样 TDNN 层降低时序维度、加速计算稠密连接机制每层输出拼接所有前置层特征提升参数利用率关键升级将轻量化 CAM 掩码嵌入每一层 D-TDNN 内部初代 CAM 仅 Block 末尾使用全网络逐层过滤噪声、强化目标说话人特征。3.3 改进型上下文感知掩码 CAM核心创新多粒度池化初代 CAM 仅采用全局平均池化丢失语音分段局部时序特征掩码预测不够精准本文设计全局池化 (GP) 分段池化 (SP) 融合的多粒度方案同时完成轻量化优化。前向流程D-TDNN 内置 FNN 输出特征 X → TDNN 提取局部时序特征 F双粒度上下文向量生成全局池化 GP对整段语音求均值得到全局说话人表征eg分段池化 SP将语音切分为固定 100 帧片段每段单独均值池化得到分段局部表征es掩码生成融合eg与es经两层全连接 Sigmoid 输出逐帧掩码 M特征校准掩码 M 与原始时序特征逐元素相乘抑制无关噪声、放大目标说话人声纹信息轻量化优势相比初代 CAM 参数量大幅降低每层部署几乎无额外计算开销且融合分段池化不会新增参数。四、实验设置4.1 数据集VoxCeleb英文公开集VoxCeleb2 开发集训练5994 位说话人测试集为 Vox1-O / Vox1-E / Vox1-HCN-Celeb中文公开集CN-Celeb12 开发集联合训练2785 位中文说话人训练时将短语音拼接至 6 秒以上注册集多条语音取平均嵌入完成评测。4.2 训练配置输入特征80 维 Fbank25ms 帧长、10ms 帧移数据增强语速扰动0.9/1.0/1.1 倍速、RIR 混响模拟、MUSAN 噪声叠加损失函数AAM-Softmaxmargin0.2scale32优化策略SGD 优化器线性预热 余弦退火学习率0.1~1e-4动量 0.9权重衰减 1e-4训练时随机截取 3 秒语音构建批次评测指标EER等错误率越低性能越好、MinDCF最小检测代价后端采用余弦相似度打分无分数归一化。五、实验结果与分析5.1 整体精度对比Table 1模型参数(M)VoxCeleb-O EERCN-Celeb EERTDNN4.622.31%9.86%D-TDNN2.851.55%8.41%ECAPA14.660.89%7.45%CAM7.180.73%6.78%基线模型TDNN、ECAPA-TDNN、ResNet34、原始 D-TDNN、加深无掩码 D-TDNN-LCAM 全面超越所有主流基线VoxCeleb1-OEER0.973%优于 ECAPA (0.89%)、ResNet34 (0.97%)CN-Celeb 中文测试集EER6.78%优于 ECAPA (7.45%)、ResNet34 (6.97%)参数效率优势CAM 仅 7.18M 参数ECAPA 高达 14.66M参数减半同时 Vox-O 数据集 EER 相对降低 18%消融实验验证模块有效性移除 CAM 掩码Vox-O EER 升至 0.93%CN 升至 7.16%多粒度掩码可使 Vox-O 相对 EER 下降 21%中文集下降 5%移除 FCM 2D 卷积前端全数据集 EER 显著上升证明时频二维卷积是窄通道 D-TDNN 的必要补充。5.2 多粒度池化消融实验Table 2以原始 D-TDNN 为基线对比初代 CAM、单全局池化 CAM、全局 分段融合 CAM初代 CAMEER 小幅下降但参数量上涨 44%参数效率差仅全局池化 (GP) 改进 CAM仅增加 8% 参数精度与初代 CAM 持平GP 分段 SP 融合无任何新增参数CN-Celeb EER 进一步下降证明分段局部时序信息可显著提升掩码精准度。5.3 模型复杂度与推理速度分析Table 3CPU 单线程测试模型参数量 (M)总浮点运算 FLOPs (G)实时因子 RTF越小推理越快ECAPA-TDNN14.663.960.033ResNet346.706.840.032CAM7.181.720.013核心结论CAM 浮点运算量仅为 ECAPA 的 1/2、ResNet34 的 1/4推理速度是 ECAPA、ResNet 的 2 倍以上ResNet 参数量略低但 FLOPs 极高、内存读写开销大实际推理延迟更高。六、论文四大核心创新点深度窄通道 D-TDNN 骨干遵循 “深度收益大于通道宽度” 结论大幅加深网络同时收窄通道控制参数量将 CAM 掩码嵌入每一层 D-TDNN区别于初代仅在 Block 末尾使用。多粒度池化轻量化 CAM 掩码Context-Aware Masking融合全局整段语音表征与分段局部时序表征解决单一全局池化丢失局部特征的缺陷掩码预测更精准且几乎无额外计算开销。2D 残差卷积前端Front-end Convolution Module FCM弥补一维 TDNN 频域建模短板增强模型对频域偏移、发音差异的鲁棒性适配窄通道骨干网络。精度与效率双向最优在中英文两大权威说话人数据集上达到 SOTA 识别精度同时参数量、计算量、推理速度全面优于 ECAPA-TDNN、ResNet34适配嵌入式、高并发、低算力工业场景。七、CAM 为什么现在这么流行CAM 成为很多工业级说话人验证系统默认选择主要原因包括精度高在 VoxCeleb、CN-Celeb 等公开数据集上优于 ECAPA-TDNN。计算效率高参数和 FLOPs 明显低于 ECAPA更适合 CPU 和边缘设备部署。实时性强推理速度快适用于门禁、会议系统、客服、IoT 等实时应用。结构易扩展保留 TDNN 主干只增加轻量模块便于与现有系统集成。八、全文结论本文提出 CAM 轻量化高效声纹嵌入网络通过改进 D-TDNN 骨干、多粒度池化上下文掩码、2D 时频卷积前端三大创新模块在 VoxCeleb、CN-Celeb 标准说话人确认测试集上取得最优识别性能相比 ECAPA-TDNN、ResNet34 等主流高精度模型参数量、浮点运算量大幅降低推理速度提升 2 倍以上可广泛部署于资源受限、高实时性要求的语音业务场景相关代码已开源。九、代码测试from modelscope.pipelines import pipeline sv_pipeline pipeline( taskspeaker-verification, modeliic/speech_campplus_sv_zh-cn_16k-common, model_revisionv1.0.0 ) speaker1_a_wav https://modelscope.cn/api/v1/models/damo/speech_campplus_sv_zh-cn_16k-common/repo?RevisionmasterFilePathexamples/speaker1_a_cn_16k.wav speaker1_b_wav https://modelscope.cn/api/v1/models/damo/speech_campplus_sv_zh-cn_16k-common/repo?RevisionmasterFilePathexamples/speaker1_b_cn_16k.wav speaker2_a_wav https://modelscope.cn/api/v1/models/damo/speech_campplus_sv_zh-cn_16k-common/repo?RevisionmasterFilePathexamples/speaker2_a_cn_16k.wav # 相同说话人语音 result sv_pipeline([speaker1_a_wav, speaker1_b_wav]) print(result) # 不同说话人语音 result sv_pipeline([speaker1_a_wav, speaker2_a_wav]) print(result) # 可以自定义得分阈值来进行识别阈值越高判定为同一人的条件越严格 result sv_pipeline([speaker1_a_wav, speaker2_a_wav], thr0.31) print(result) # 可以传入output_emb参数输出结果中就会包含提取到的说话人embedding result sv_pipeline([speaker1_a_wav, speaker2_a_wav], output_embTrue) print(result[embs], result[outputs]) # 可以传入save_dir参数提取到的说话人embedding会存储在save_dir目录中 result sv_pipeline([speaker1_a_wav, speaker2_a_wav], save_dirsavePath/)