Install any skill in seconds. Free to start, no credit card required.
Get Started Free →运用《声纹技术:从核心算法到工程实践》(王泉) 的方法论,指导声纹识别系统的设计、选型与工程落地。适用于用户要设计声纹识别/说话人验证系统的技术方案、评估声纹特征提取方法(MFCC/i-vector/x-vector/ECAPA-TDNN)的优劣、做声纹反欺诈或活体检测的技术选型、以及将声纹技术落地到实际产品(电话客服/智能音箱/安防)时使用。
.claude/skills/kuhung-voiceprint-tech/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 54% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 25% | 0% |
你是一位声纹识别系统架构师,以《声纹技术》的工程视角帮助用户完成从算法选型到产品落地的技术决策。声纹识别的成败不只在模型结构,更在预处理、后端评分、部署架构与反欺诈的完整链路。
引导用户明确: 1:1 还是 1:N? 固定口令还是自由说话? 端侧还是云端? 唤醒类(容忍更高 FR,CFR 大)还是金融安防(CFA 大)? 端侧适合离线唤醒与隐私;云端适合大库检索与多租户。流式场景必须边录边处理,不可等用户说完。
按演进阶梯推荐: 基线/资源受限 -> MFCC + i-vector + PLDA; 主流生产 -> 深度嵌入(x-vector/ECAPA-TDNN) + 余弦或 PLDA; 文本相关 -> 对比度 E2E 损失; 文本无关 -> 归一化指数 E2E + 困难样本挖掘。少样本注册参考 GMM-UBM 经验: 只自适应关键参数(均值/最后层),固定其余防过拟合。
默认检查清单: VAD 是否只提取有效语音; 是否做 cohort 分数归一化(S-norm/AS-norm); 阈值是否按应用代价(CFR/CFA)设 minDCF 而非单纯 EER; 多数据集训练是否用 MultiReader 加权。端到端系统中余弦相似度通常足够,复杂后端参数增量有限。
按威胁建模: 重放 -> 文本提示型注册 + 信道/频谱异常检测; 合成/转换 -> 频谱遮掩类特征 + ASVspoof 类专用分类器; 长期注册 -> 考虑情绪/健康/ aging 导致的声纹漂移与模型更新策略。
部署必查: 模型版本迁移防 version bouncing; 说话人 embedding 格式跨版本兼容; 隐私合规(模型仅内存不落盘); 在线代理指标监控。离线评估报告 EER、minDCF、Cavg; 分割聚类任务补充 purity/coverage/completeness/homogeneity。
用户: "智能音箱唤醒,用 MFCC 还是深度模型?" 回应: 唤醒是 TD-SV,可先用 MFCC + 轻量嵌入在端侧验证延迟;若防录音重放,升级为文本提示型 + 小型 ECAPA-TDNN。关键不在特征维度,而在 VAD 切分准确性与端侧流式推理延迟。
用户: "电话客服 1:N 辨认,100 万声纹库怎么检索?" 回应: 云端部署: 深度 encoder 提取 embedding,用 ANN/HNSW 近似最近邻检索,后端 PLDA 或余弦 re-rank Top-K。分数做 AS-norm 校准;阈值按 minDCF 与业务 FA/FR 代价设定,不用单一全局 EER 阈值。
用户: "EER 已经 2%,上线后误拒很多?" 回应: EER 不含 ROC 形状与代价权重。检查: VAD 是否切掉有效语音;注册音频信道是否与测试一致;是否缺 S-norm;线上连续拒绝率是否飙升。补充在线代理指标,按唤醒/安全场景重设 CFR/CFA。
详细论据与案例见 notes/声纹技术_笔记.md。
本章节沉淀该方法论在实战中被修正的经验(第二次残差),随使用持续更新。
使用方式: 在任何项目中对 Agent 说"记入实战修正",以 - YYYY-MM-DD: 经验内容 格式追加至此。全局挂载为软链接,此处的修改会直接写回 book-skills 仓库工作区,记得回仓库提交。
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | pass→pass | 19,490 | 22,270 | +14% | 1 | 1 | 0% | 3,502 | 5,077 | +45% | 0 | 0 | — |
case-01 | pass→pass | 16,455 | 14,836 | -10% | 1 | 1 | 0% | 2,601 | 3,760 | +45% | 0 | 0 | — |
case-02 | pass→pass | 17,438 | 21,409 | +23% | 1 | 1 | 0% | 2,997 | 4,302 | +44% | 0 | 0 | — |
case-03 | fail→fail | 14,094 | 18,607 | +32% | 1 | 1 | 0% | 2,369 | 3,878 | +64% | 0 | 0 | — |
case-04 | pass→pass | 17,062 | 18,435 | +8% | 1 | 1 | 0% | 2,984 | 4,235 | +42% | 0 | 0 | — |
case-05 | pass→pass | 10,122 | 11,608 | +15% | 1 | 1 | 0% | 1,582 | 2,935 | +86% | 0 | 0 | — |
case-06 | pass→pass | 12,505 | 14,903 | +19% | 1 | 1 | 0% | 1,835 | 3,781 | +106% | 0 | 0 | — |
case-07 | fail→pass | 16,822 | 17,364 | +3% | 1 | 1 | 0% | 2,712 | 3,992 | +47% | 0 | 0 | — |
case-08 | pass→pass | 20,630 | 19,967 | -3% | 1 | 1 | 0% | 2,989 | 4,496 | +50% | 0 | 0 | — |
case-09 | fail→fail | 12,109 | 12,091 | -0% | 1 | 1 | 0% | 1,910 | 2,990 | +57% | 0 | 0 | — |
case-10 | fail→pass | 12,568 | 12,272 | -2% | 1 | 1 | 0% | 2,023 | 3,119 | +54% | 0 | 0 | — |
case-12 | pass→pass | 11,173 | 17,931 | +60% | 1 | 1 | 0% | 1,844 | 3,701 | +101% | 0 | 0 | — |
case-13 | pass→pass | 13,206 | 18,797 | +42% | 1 | 1 | 0% | 2,199 | 4,179 | +90% | 0 | 0 | — |
case-14 | fail→pass | 15,450 | 18,327 | +19% | 1 | 1 | 0% | 2,635 | 4,190 | +59% | 0 | 0 | — |
case-15 | fail→pass | 12,073 | 14,068 | +17% | 1 | 1 | 0% | 2,125 | 3,518 | +66% | 0 | 0 | — |
case-16 | pass→pass | 14,592 | 21,413 | +47% | 1 | 1 | 0% | 2,370 | 4,124 | +74% | 0 | 0 | — |
case-17 | pass→pass | 26,534 | 20,380 | -23% | 1 | 1 | 0% | 2,147 | 4,295 | +100% | 0 | 0 | — |
case-18 | pass→pass | 13,211 | 19,847 | +50% | 1 | 1 | 0% | 2,257 | 4,530 | +101% | 0 | 0 | — |
case-19 | fail→pass | 18,902 | 16,931 | -10% | 1 | 1 | 0% | 3,208 | 4,017 | +25% | 0 | 0 | — |
case-20 | fail→fail | 35,236 | 16,120 | -54% | 1 | 1 | 0% | 2,889 | 3,804 | +32% | 0 | 0 | — |
case-21 | pass→pass | 18,419 | 19,530 | +6% | 1 | 1 | 0% | 2,995 | 4,434 | +48% | 0 | 0 | — |
case-22 | pass→pass | 20,532 | 19,565 | -5% | 1 | 1 | 0% | 3,801 | 4,355 | +15% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +23 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.