XH-202615 复杂交互场景的抗干扰语音指令识别技术 - Target-Speaker ASR + 意图拒识方案
2
stars
109
commits
Python
primary language
Aug 15, 2026
updated
🏆 美的集团 发榜|挑战杯 / 竞赛赛道
本项目针对复杂交互场景下的抗干扰语音指令识别技术难题,提出了一套完整的 Target-Speaker ASR(TS-ASR)+ 意图拒识 解决方案。
给定目标说话人的唤醒音频,在「带噪 + 多人重叠」的识别音频中:
| 维度 | 权重 | 技术重点 |
|---|---|---|
| 目标 CER | 40% | TS-ASR 转写精度 |
| 拒识率 | 40% | 非目标语音识别与拒绝 |
| 推理效率 | 20% | RTF、显存占用 |
当前提交线(Qwen + content_gate,含拒 thr0.27)从原始 A 音频全量 重跑:累计池 CER 0.6201(15.20/40)+ RR 94.73% (37.89/40)+ 4060 合并 RTF 0.253。按当前效率映射估计 68.66–73.09 / 100,L20 近满分时约 73.09。逐句 CER 平均为 0.7230,若主办方采用该口径则约 64.54–68.97;必须确认官方聚合方法。 Dataset A 只用于测试,不进入训练、选模或本轮调参。
5.7891→4.0566,但锁定 checkpoint 后 A 集一次性同进程配对 CER 0.342948→0.376458(Δ+0.033510,95% CI [+0.021655,+0.045744])。不租算力扩训、不集成、不用 A 集反调。固定 scene route + content gate 离线 CER 0.6168→0.5919,约 +0.99 质量分;下一步只在 L20 batch1 验证其端到端总分。详见 docs/全量评测与下一步_2026-07-30.md。docs/tse_train_plan.md、docs/全量评测与下一步_2026-07-30.md。复用 enroll_infer 的 DiariZen diar + wespeaker 选 target → 切 target timeline → Qwen3-ASR-1.7B(ExtremeNoise 4× 鲁棒迁移,Apache2.0)drop-in 转写。全量 1350 条官方口径:
对 sim≥thr 的 accept 再判转写是否有效家居指令,非指令(新闻/英文/乱码)加拒。qwen 后端 joint 验证净正 +0.826:neg RR 0.9051→0.9494(腿 +1.77)/ pos CER 0.5934→0.6171(腿 −0.95)。详见 code/verify_content_gate_joint.py。
详见 docs/稳定性测试报告_2026-07-19.md。
DiCoW FDDT/STNO 条件化在极重 babble 下反作用(英文幻觉 18.8%、CER 1.25),改 vanilla Whisper + 声纹切 target,CER 减半到 0.664——此为 qwen 主线前序(07-11 qwen 进一步到 0.3436)。契合出题方反 cascaded 审美。详见 code/exp_vanilla_vs_dicow.py。
提交入口:bash code/run_baodi.sh pos|neg [thr](锁 --no-llm / thr0.27 / sim_only / content_gate 默认开 / --no-se;BAODI 守卫防裸调灾难)。
⚠️ 2026-07-06 Phase 1 更新:下方阶段 2「DiCoW 条件化转写」已被全量真测证伪反作用(英文幻觉 18.8%、CER 1.25)。实际主线改为 vanilla Whisper + 声纹切 target timeline(CER 0.664 减半)。⚠️ 2026-07-11 进一步:换 Qwen3-ASR-1.7B(ExtremeNoise 4× 鲁棒迁移)drop-in 转写,CER 降到 transcribe 0.3436 / 含拒提交 overall 0.5934(CER 腿 16.26),见上「最新进展」。下方 DiCoW 流程作历史 / 已证伪路径保留。
已实现于
code/submit_infer.py(4 阶段 subprocess 编排)。理想态组件(CAM++/Personal VAD)T18 证伪/未用,详见交付/设计报告.md。
识别音频 (recognition.wav)
│
├─[阶段0] noise_classify (谱平坦度) ─→ 噪声类型 {white / pink / babble}
│
├─[阶段1] SE 条件化降噪 (DeepFilterNet3)
│ babble/white → atten=0 全力 pink → atten=6 温和(防过消除)
│ ↓ denoised.wav
│
├─[阶段2] enroll_infer
│ ├─ DiariZen(wavlm-large) diarization → 各 speaker 时间段
│ ├─ wespeaker 声纹(enrollment + 各 speaker, 256d)→ 余弦匹配选 target_idx
│ ├─ STNO mask(sil/target/nontarget/overlap 4 类,FDDT 仿射变换注入 encoder 每层)
│ └─ DiCoW(Whisper-large-v3-turbo + FDDT)只转 target → transcript
│
├─[阶段3] llm_reject(Qwen2.5-3B-Instruct)
│ 对 transcript 判 accept / reject(零样本,13 类拒识 schema + 自适应 CoT)
│
└─[阶段4] 融合(llm_or_sim)
rejected = (llm ≠ accept) AND (max_sim < sim_thr) # 默认 sim_thr=0.2
↓
result.json + timing.json
| 模块 | 实际方案 | 作用 |
|---|---|---|
| 声纹锁定 | wespeaker-voceleleb-resnet34(256d,复用 diar._embedding) | enrollment → target 余弦匹配(CAM++ T18 per-speaker 公平对照证伪 sim 0.191<0.218,未用;Personal VAD 未用) |
| 说话人分离 | DiariZen(diarizen-wavlm-large-s80-md) | 多 speaker 时间段 |
| TS-ASR 转写 | vanilla Whisper-large-v3-turbo + 声纹切 target(Phase 1 新主线,CER 0.664);DiCoW(FDDT 条件化)⚠️ 已证伪反作用(CER 1.25) | 只转 target |
| 语音增强 | DeepFilterNet3(条件化,8.7MB) | babble/white → 全力,pink → 温和(=6) |
| 语义拒识 | Qwen2.5-3B-Instruct | 指令合理性,救回声纹误拒 |
| 融合决策 | llm_or_sim | rejected = (llm ≠ accept) AND (max_sim < 0.2) |
xh-202615-robust-asr/
├── 📦 交付/ # 比赛提交物(设计报告/使用说明/测试验证方案)
│
├── 📚 论文资料
│ └── _txt/ # 论文全文文本(pdftotext 提取,19 篇,供 Agent 精读)
│
├── 📄 根目录 · 状态中枢(7 个 .md + 工具)
│ ├── README.md / CLAUDE.md / AGENTS.md / AGENT_HANDOFF.md # 入口与交接
│ ├── PROGRESS.md / RESULTS.md / REPRO_SETUP.md # 进度/结果/复现
│ └── pdf2txt.py / deploy_cosyvoice.sh # 论文提取 / TTS 部署工具
│
├── 💻 代码实现
│ └── code/
│ ├── ⭐ 核心提交链路(22 个 .py + .sh 原位不动,提交零风险)
│ │ ├── submit_infer.py / enroll_infer.py / to_submission.py
│ │ ├── se_denoise.py / noise_classify.py / llm_reject.py
│ │ ├── scene_route_backend.py / qwen_asr_backend.py / firered_asr_backend.py
│ │ ├── eval_metrics.py / eval_datasetA.py / eval_full_test.py
│ │ ├── repro.py / text_utils.py / simulate_pipeline.py / make_pairs_from_datasetA.py
│ │ ├── run_baodi.sh / setenv*.sh / deploy_l20.sh / run_efficiency_l20.sh
│ │ └── requirements.txt / home_bias_phrases.txt
│ │ (核心数据:pos/neg_pairs_datasetA.json)
│ ├── 📦 experiments/ # 归档区:125+ 已完成实验脚本(exp_/poc_/verify_/analyze_/tse_/...)
│ ├── 📊 data/ # 归档区:实验产物 .json(27)/ 语料 .jsonl / 官方 .csv
│ └── runs/ demo_web/ patches/ # 运行产物与工具
│
└── 📂 docs/ · 文档区(整理后集中收纳)
├── 00_技术路线总纲与行动地图.md ~ 03_答辩FAQ与风险预案.md # 技术路线/模块/上限/答辩
├── paper_index.md / 核心论文精读与方案.md / 论文精读_*.md / 资料扩展_*.md
├── 边缘部署规划.md / 项目阶段盘点.md / 待问主办方.md / 待确认_*.md
├── progress_overview.png / cer_progress_dashboard.html
└── superpowers/ # 设计稿(plans/specs)
主线推理用 3 个独立 venv(依赖冲突不可合并):
code/.venv(enroll_infer/DiariZen)、code/.venv_se(DeepFilterNet3)、.venv_llm(Qwen2.5-3B)。由 uv 管理。详见交付/使用说明.md。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
pip install transformers librosa pyannote.audio
source code/setenv.sh && export HF_HUB_OFFLINE=1
code/.venv/Scripts/python.exe code/submit_infer.py \
--enrollment <enr.wav> --recognition-folder <rec_dir> --out-dir out/
# → out/result.json + out/timing.json
--pairs <manifest.json>([{enrollment, recognition}, ...])--no-se(跳 SE)/ --no-llm(跳 LLM,显存不足兜底)--limit N;策略:--strategy {llm_or_sim,sim_only,llm_only},默认 --sim-thr 0.2交付/使用说明.mdcd code
python minimal_infer.py <audio.wav> [language]
示例输出:
[setup] device=cuda:0 dtype=torch.float16 model=E:/hf_cache/DiCoW_v3_2
[load] 2.6s | params=0.89G
[audio] EN2002a_30s.wav | 30.0s
[infer] 1.73s for 30.0s audio | RTF=0.058
[mem] peak GPU mem=2.13GB
[text] yeah yeah but i do not know about you but usually in windows right click does not do anything...
python stno_experiment.py
验证 FDDT/STNO 机制:

datasetA 全量真测(1364 pos / 474 neg),口径统一官方累计池(NFKC + lower + 去 P*)。三子图:
- ① CER 路线突破:DiCoW 条件化(1.19) → vanilla+target(0.59) → Qwen3-ASR(0.34),zero-training 三阶段减半,契合反 cascaded 审美。
- ② sim 分桶对比:qwen 各桶均优于 vanilla,死区(<0.2) OOD 伪地板突破(0.83→0.46)。
- ③ 稳定性五维波动率:R1/R5=0 可复现达标,R3=57% 输入微扰敏感(gauss 主因,诚实归档)。
生成
code/make_readme_progress.py(数据源recompute_official_cer.json+qwen_official_cer_workpoints.json+poc_qwen_asr_full_result.json+stability_matrix/stability_report.json)。原仿真期看板保留:docs/cer_progress_dashboard.html(450 条 mimo-tts 仿真集,非真实 A 集,绝对值不可外推赛榜)。
| 腿 | 指标 | 值 | 腿分 |
|---|---|---|---|
| CER 40% | 含拒 thr0.27 overall | 0.5934 →(+gate)0.6171 | 15.32 |
| RR 40% | neg 拒识率 | 0.9051 →(+gate)0.9494 | 37.98 |
| 效率 20% | overall_rtf(关 SE,4060) | 0.142 | 待 L20 batch=1 |
| 合计 | 53.3 / 80 |
w1=w2=0.4 假设(排名公式
TotalScore = w1*(1−CER) + w2*RR,权重待主办方确认)。CER 一律报含拒口径(transcribe 0.3436 是诊断上限勿虚报)。下方 DiCoW Baseline / 仿真进度图为历史 / 前序数据。
| 指标 | 值 | 备注 |
|---|---|---|
| 模型参数量 | 0.89G | Whisper-large-v3-turbo |
| 加载时间 | 2.6s | - |
| 推理时间 (30s) | 1.73s | RTX 4060 |
| RTF | 0.058 | 远快于实时 |
| 峰值显存 | 2.13GB | 8GB 显存绰绰有余 |
| STNO 构造 | 输出 | 结论 |
|---|---|---|
| 全-target | 398 字 | 完整转写 |
| 前半 target + 后半 silence | 162 字 | 精确控制 ✅ |
| 全 non-target | 0 字 | 内建拒识机制 ✅ |
核心结论: FDDT 的 STNO 条件化可验证、可控——target 转写、silence 跳过、non-target 直接产出空(拒识)。拒识不是后处理,是 FDDT 内建机制。
本项目基于以下关键论文:
详见 _txt/ 目录和 paper_index.md。
max_sim ≥ thr0.27)锁定 target;对 accept 再判转写是否有效家居指令(content_gate),非指令加拒。neg RR 0.9494(+gate 后),joint 净正 +0.826手机查看友好版。详细日志
PROGRESS.md,结果RESULTS.md。
| 日期 | 阶段 | 关键产出 |
|---|---|---|
| 06-27 | W1 minimal 推理 | DiCoW 跑通:RTF=0.058 / 0.89G params / 峰值 2.13GB,解除"零实测"红线 |
| 06-27 | STNO 机制验证 | target→转 / silence→跳 / non-target→0字拒识(FDDT 内建拒识) |
| 06-27 | W6 评测 + W2 仿真 | eval_metrics.py(CER/RTF/拒识) + simulate_pipeline.py(SNR+重叠矩阵) |
| 06-28 | T14 完整端到端 pipeline | diar+STNO+DiCoW 真 target-speaker 转写,PIPELINE_EXIT=0 |
| 06-28 | 中文 CER=0 + 重叠诊断 | mimo-tts 合成;重叠 0/50/100% → CER 0.00/0.13/1.00(100% 单通道死区) |
| 06-28 | T17 enrollment 锁定 target | enroll_infer.py 干净场景 sim0.816/CER=0;450 条画像 87%拒/4%正确 |
| 06-29 | T18 三线 de-risk | SE增强(CER 4.27→3.65) / CAM++证伪(维持 wespeaker) / LLM拒识 F1=0.878 |
| 06-29 | T19 集成 + langfix 修复 | fuse_eval.py 真实组合指标;修 DiCoW language 死代码 bug(英文 90%→72%) |
| 06-30 | T20 SE 条件化 post-fix 重评 | =6 优于 =0(最优精细 2.022);babble 归因深化(diar 误检+STNO 崩) |
| 日期 | 阶段 | 关键产出 |
|---|---|---|
| 07-04 | T23 真测基线 | datasetA 到手(单通道 16k);pos CER ~1.0 / neg RR 77%;单通道确认,空间路线全弃 |
| 07-06 | T24 Phase 1 突破 | H3 证伪 DiCoW 条件化(反作用);vanilla+target CER 0.664 减半 |
| 07-08 | T27 口径坐实 | 主办方 CER 脚本(NFKC + 去 P* 累计池);统一 thr=0.27 定稿;修提交归一漏洞 |
| 07-11 | T28 qwen 突破 | Qwen3-ASR transcribe CER 0.3436 / 含拒 0.5934(CER 腿 16.26);FireRedASR 横评双 SOTA |
| 07-14 | 多声纹 LLM 路由 POC | 证伪(端到端挑不到 target);content_gate v2 集成探索 |
| 07-18 | 效率腿 + content_gate | SE orphan bug 真相(关 SE 省 30% RTF,Pareto 最优);content_gate 反转默认开(joint +0.826) |
| 07-19 | 稳定性闭环 | 26 遍全量:R1=0 完全确定 / R2 纯仅 2 条 / R3 57% 归档;submit 锁 batch=1 |
真测 + 稳定性闭环完成,当前算分 53.3/80(qwen + content_gate,w1=w2=0.4):
deploy_l20.sh 就绪| 里程碑 | 预估 | 依赖 |
|---|---|---|
| 推理脚本标准化(json+耗时) | 1-2 天 | 无 |
| 设计报告 + 使用说明 | 2-3 天 | 无 |
| 测试集 A 真实评测 | 1-2 天 | 测试集 A |
| L20/L40 耗时验证 | 1 天 | 租云 |
| 测试报告 | 1-2 天 | 真实 A 结果 |
| 作品提交 | — | ≤ 2026-09-05 |
本项目为竞赛项目,欢迎:
本项目仅供学术研究与竞赛使用。
109 commits
Python
78.0%
HTML
21.2%
XH-202615 复杂交互场景的抗干扰语音指令识别技术 - Target-Speaker ASR + 意图拒识方案
2
stars
109
commits
Python
primary language
Aug 15, 2026
updated
🏆 美的集团 发榜|挑战杯 / 竞赛赛道
本项目针对复杂交互场景下的抗干扰语音指令识别技术难题,提出了一套完整的 Target-Speaker ASR(TS-ASR)+ 意图拒识 解决方案。
给定目标说话人的唤醒音频,在「带噪 + 多人重叠」的识别音频中:
| 维度 | 权重 | 技术重点 |
|---|---|---|
| 目标 CER | 40% | TS-ASR 转写精度 |
| 拒识率 | 40% | 非目标语音识别与拒绝 |
| 推理效率 | 20% | RTF、显存占用 |
当前提交线(Qwen + content_gate,含拒 thr0.27)从原始 A 音频全量 重跑:累计池 CER 0.6201(15.20/40)+ RR 94.73% (37.89/40)+ 4060 合并 RTF 0.253。按当前效率映射估计 68.66–73.09 / 100,L20 近满分时约 73.09。逐句 CER 平均为 0.7230,若主办方采用该口径则约 64.54–68.97;必须确认官方聚合方法。 Dataset A 只用于测试,不进入训练、选模或本轮调参。
5.7891→4.0566,但锁定 checkpoint 后 A 集一次性同进程配对 CER 0.342948→0.376458(Δ+0.033510,95% CI [+0.021655,+0.045744])。不租算力扩训、不集成、不用 A 集反调。固定 scene route + content gate 离线 CER 0.6168→0.5919,约 +0.99 质量分;下一步只在 L20 batch1 验证其端到端总分。详见 docs/全量评测与下一步_2026-07-30.md。docs/tse_train_plan.md、docs/全量评测与下一步_2026-07-30.md。复用 enroll_infer 的 DiariZen diar + wespeaker 选 target → 切 target timeline → Qwen3-ASR-1.7B(ExtremeNoise 4× 鲁棒迁移,Apache2.0)drop-in 转写。全量 1350 条官方口径:
对 sim≥thr 的 accept 再判转写是否有效家居指令,非指令(新闻/英文/乱码)加拒。qwen 后端 joint 验证净正 +0.826:neg RR 0.9051→0.9494(腿 +1.77)/ pos CER 0.5934→0.6171(腿 −0.95)。详见 code/verify_content_gate_joint.py。
详见 docs/稳定性测试报告_2026-07-19.md。
DiCoW FDDT/STNO 条件化在极重 babble 下反作用(英文幻觉 18.8%、CER 1.25),改 vanilla Whisper + 声纹切 target,CER 减半到 0.664——此为 qwen 主线前序(07-11 qwen 进一步到 0.3436)。契合出题方反 cascaded 审美。详见 code/exp_vanilla_vs_dicow.py。
提交入口:bash code/run_baodi.sh pos|neg [thr](锁 --no-llm / thr0.27 / sim_only / content_gate 默认开 / --no-se;BAODI 守卫防裸调灾难)。
⚠️ 2026-07-06 Phase 1 更新:下方阶段 2「DiCoW 条件化转写」已被全量真测证伪反作用(英文幻觉 18.8%、CER 1.25)。实际主线改为 vanilla Whisper + 声纹切 target timeline(CER 0.664 减半)。⚠️ 2026-07-11 进一步:换 Qwen3-ASR-1.7B(ExtremeNoise 4× 鲁棒迁移)drop-in 转写,CER 降到 transcribe 0.3436 / 含拒提交 overall 0.5934(CER 腿 16.26),见上「最新进展」。下方 DiCoW 流程作历史 / 已证伪路径保留。
已实现于
code/submit_infer.py(4 阶段 subprocess 编排)。理想态组件(CAM++/Personal VAD)T18 证伪/未用,详见交付/设计报告.md。
识别音频 (recognition.wav)
│
├─[阶段0] noise_classify (谱平坦度) ─→ 噪声类型 {white / pink / babble}
│
├─[阶段1] SE 条件化降噪 (DeepFilterNet3)
│ babble/white → atten=0 全力 pink → atten=6 温和(防过消除)
│ ↓ denoised.wav
│
├─[阶段2] enroll_infer
│ ├─ DiariZen(wavlm-large) diarization → 各 speaker 时间段
│ ├─ wespeaker 声纹(enrollment + 各 speaker, 256d)→ 余弦匹配选 target_idx
│ ├─ STNO mask(sil/target/nontarget/overlap 4 类,FDDT 仿射变换注入 encoder 每层)
│ └─ DiCoW(Whisper-large-v3-turbo + FDDT)只转 target → transcript
│
├─[阶段3] llm_reject(Qwen2.5-3B-Instruct)
│ 对 transcript 判 accept / reject(零样本,13 类拒识 schema + 自适应 CoT)
│
└─[阶段4] 融合(llm_or_sim)
rejected = (llm ≠ accept) AND (max_sim < sim_thr) # 默认 sim_thr=0.2
↓
result.json + timing.json
| 模块 | 实际方案 | 作用 |
|---|---|---|
| 声纹锁定 | wespeaker-voceleleb-resnet34(256d,复用 diar._embedding) | enrollment → target 余弦匹配(CAM++ T18 per-speaker 公平对照证伪 sim 0.191<0.218,未用;Personal VAD 未用) |
| 说话人分离 | DiariZen(diarizen-wavlm-large-s80-md) | 多 speaker 时间段 |
| TS-ASR 转写 | vanilla Whisper-large-v3-turbo + 声纹切 target(Phase 1 新主线,CER 0.664);DiCoW(FDDT 条件化)⚠️ 已证伪反作用(CER 1.25) | 只转 target |
| 语音增强 | DeepFilterNet3(条件化,8.7MB) | babble/white → 全力,pink → 温和(=6) |
| 语义拒识 | Qwen2.5-3B-Instruct | 指令合理性,救回声纹误拒 |
| 融合决策 | llm_or_sim | rejected = (llm ≠ accept) AND (max_sim < 0.2) |
xh-202615-robust-asr/
├── 📦 交付/ # 比赛提交物(设计报告/使用说明/测试验证方案)
│
├── 📚 论文资料
│ └── _txt/ # 论文全文文本(pdftotext 提取,19 篇,供 Agent 精读)
│
├── 📄 根目录 · 状态中枢(7 个 .md + 工具)
│ ├── README.md / CLAUDE.md / AGENTS.md / AGENT_HANDOFF.md # 入口与交接
│ ├── PROGRESS.md / RESULTS.md / REPRO_SETUP.md # 进度/结果/复现
│ └── pdf2txt.py / deploy_cosyvoice.sh # 论文提取 / TTS 部署工具
│
├── 💻 代码实现
│ └── code/
│ ├── ⭐ 核心提交链路(22 个 .py + .sh 原位不动,提交零风险)
│ │ ├── submit_infer.py / enroll_infer.py / to_submission.py
│ │ ├── se_denoise.py / noise_classify.py / llm_reject.py
│ │ ├── scene_route_backend.py / qwen_asr_backend.py / firered_asr_backend.py
│ │ ├── eval_metrics.py / eval_datasetA.py / eval_full_test.py
│ │ ├── repro.py / text_utils.py / simulate_pipeline.py / make_pairs_from_datasetA.py
│ │ ├── run_baodi.sh / setenv*.sh / deploy_l20.sh / run_efficiency_l20.sh
│ │ └── requirements.txt / home_bias_phrases.txt
│ │ (核心数据:pos/neg_pairs_datasetA.json)
│ ├── 📦 experiments/ # 归档区:125+ 已完成实验脚本(exp_/poc_/verify_/analyze_/tse_/...)
│ ├── 📊 data/ # 归档区:实验产物 .json(27)/ 语料 .jsonl / 官方 .csv
│ └── runs/ demo_web/ patches/ # 运行产物与工具
│
└── 📂 docs/ · 文档区(整理后集中收纳)
├── 00_技术路线总纲与行动地图.md ~ 03_答辩FAQ与风险预案.md # 技术路线/模块/上限/答辩
├── paper_index.md / 核心论文精读与方案.md / 论文精读_*.md / 资料扩展_*.md
├── 边缘部署规划.md / 项目阶段盘点.md / 待问主办方.md / 待确认_*.md
├── progress_overview.png / cer_progress_dashboard.html
└── superpowers/ # 设计稿(plans/specs)
主线推理用 3 个独立 venv(依赖冲突不可合并):
code/.venv(enroll_infer/DiariZen)、code/.venv_se(DeepFilterNet3)、.venv_llm(Qwen2.5-3B)。由 uv 管理。详见交付/使用说明.md。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
pip install transformers librosa pyannote.audio
source code/setenv.sh && export HF_HUB_OFFLINE=1
code/.venv/Scripts/python.exe code/submit_infer.py \
--enrollment <enr.wav> --recognition-folder <rec_dir> --out-dir out/
# → out/result.json + out/timing.json
--pairs <manifest.json>([{enrollment, recognition}, ...])--no-se(跳 SE)/ --no-llm(跳 LLM,显存不足兜底)--limit N;策略:--strategy {llm_or_sim,sim_only,llm_only},默认 --sim-thr 0.2交付/使用说明.mdcd code
python minimal_infer.py <audio.wav> [language]
示例输出:
[setup] device=cuda:0 dtype=torch.float16 model=E:/hf_cache/DiCoW_v3_2
[load] 2.6s | params=0.89G
[audio] EN2002a_30s.wav | 30.0s
[infer] 1.73s for 30.0s audio | RTF=0.058
[mem] peak GPU mem=2.13GB
[text] yeah yeah but i do not know about you but usually in windows right click does not do anything...
python stno_experiment.py
验证 FDDT/STNO 机制:

datasetA 全量真测(1364 pos / 474 neg),口径统一官方累计池(NFKC + lower + 去 P*)。三子图:
- ① CER 路线突破:DiCoW 条件化(1.19) → vanilla+target(0.59) → Qwen3-ASR(0.34),zero-training 三阶段减半,契合反 cascaded 审美。
- ② sim 分桶对比:qwen 各桶均优于 vanilla,死区(<0.2) OOD 伪地板突破(0.83→0.46)。
- ③ 稳定性五维波动率:R1/R5=0 可复现达标,R3=57% 输入微扰敏感(gauss 主因,诚实归档)。
生成
code/make_readme_progress.py(数据源recompute_official_cer.json+qwen_official_cer_workpoints.json+poc_qwen_asr_full_result.json+stability_matrix/stability_report.json)。原仿真期看板保留:docs/cer_progress_dashboard.html(450 条 mimo-tts 仿真集,非真实 A 集,绝对值不可外推赛榜)。
| 腿 | 指标 | 值 | 腿分 |
|---|---|---|---|
| CER 40% | 含拒 thr0.27 overall | 0.5934 →(+gate)0.6171 | 15.32 |
| RR 40% | neg 拒识率 | 0.9051 →(+gate)0.9494 | 37.98 |
| 效率 20% | overall_rtf(关 SE,4060) | 0.142 | 待 L20 batch=1 |
| 合计 | 53.3 / 80 |
w1=w2=0.4 假设(排名公式
TotalScore = w1*(1−CER) + w2*RR,权重待主办方确认)。CER 一律报含拒口径(transcribe 0.3436 是诊断上限勿虚报)。下方 DiCoW Baseline / 仿真进度图为历史 / 前序数据。
| 指标 | 值 | 备注 |
|---|---|---|
| 模型参数量 | 0.89G | Whisper-large-v3-turbo |
| 加载时间 | 2.6s | - |
| 推理时间 (30s) | 1.73s | RTX 4060 |
| RTF | 0.058 | 远快于实时 |
| 峰值显存 | 2.13GB | 8GB 显存绰绰有余 |
| STNO 构造 | 输出 | 结论 |
|---|---|---|
| 全-target | 398 字 | 完整转写 |
| 前半 target + 后半 silence | 162 字 | 精确控制 ✅ |
| 全 non-target | 0 字 | 内建拒识机制 ✅ |
核心结论: FDDT 的 STNO 条件化可验证、可控——target 转写、silence 跳过、non-target 直接产出空(拒识)。拒识不是后处理,是 FDDT 内建机制。
本项目基于以下关键论文:
详见 _txt/ 目录和 paper_index.md。
max_sim ≥ thr0.27)锁定 target;对 accept 再判转写是否有效家居指令(content_gate),非指令加拒。neg RR 0.9494(+gate 后),joint 净正 +0.826手机查看友好版。详细日志
PROGRESS.md,结果RESULTS.md。
| 日期 | 阶段 | 关键产出 |
|---|---|---|
| 06-27 | W1 minimal 推理 | DiCoW 跑通:RTF=0.058 / 0.89G params / 峰值 2.13GB,解除"零实测"红线 |
| 06-27 | STNO 机制验证 | target→转 / silence→跳 / non-target→0字拒识(FDDT 内建拒识) |
| 06-27 | W6 评测 + W2 仿真 | eval_metrics.py(CER/RTF/拒识) + simulate_pipeline.py(SNR+重叠矩阵) |
| 06-28 | T14 完整端到端 pipeline | diar+STNO+DiCoW 真 target-speaker 转写,PIPELINE_EXIT=0 |
| 06-28 | 中文 CER=0 + 重叠诊断 | mimo-tts 合成;重叠 0/50/100% → CER 0.00/0.13/1.00(100% 单通道死区) |
| 06-28 | T17 enrollment 锁定 target | enroll_infer.py 干净场景 sim0.816/CER=0;450 条画像 87%拒/4%正确 |
| 06-29 | T18 三线 de-risk | SE增强(CER 4.27→3.65) / CAM++证伪(维持 wespeaker) / LLM拒识 F1=0.878 |
| 06-29 | T19 集成 + langfix 修复 | fuse_eval.py 真实组合指标;修 DiCoW language 死代码 bug(英文 90%→72%) |
| 06-30 | T20 SE 条件化 post-fix 重评 | =6 优于 =0(最优精细 2.022);babble 归因深化(diar 误检+STNO 崩) |
| 日期 | 阶段 | 关键产出 |
|---|---|---|
| 07-04 | T23 真测基线 | datasetA 到手(单通道 16k);pos CER ~1.0 / neg RR 77%;单通道确认,空间路线全弃 |
| 07-06 | T24 Phase 1 突破 | H3 证伪 DiCoW 条件化(反作用);vanilla+target CER 0.664 减半 |
| 07-08 | T27 口径坐实 | 主办方 CER 脚本(NFKC + 去 P* 累计池);统一 thr=0.27 定稿;修提交归一漏洞 |
| 07-11 | T28 qwen 突破 | Qwen3-ASR transcribe CER 0.3436 / 含拒 0.5934(CER 腿 16.26);FireRedASR 横评双 SOTA |
| 07-14 | 多声纹 LLM 路由 POC | 证伪(端到端挑不到 target);content_gate v2 集成探索 |
| 07-18 | 效率腿 + content_gate | SE orphan bug 真相(关 SE 省 30% RTF,Pareto 最优);content_gate 反转默认开(joint +0.826) |
| 07-19 | 稳定性闭环 | 26 遍全量:R1=0 完全确定 / R2 纯仅 2 条 / R3 57% 归档;submit 锁 batch=1 |
真测 + 稳定性闭环完成,当前算分 53.3/80(qwen + content_gate,w1=w2=0.4):
deploy_l20.sh 就绪| 里程碑 | 预估 | 依赖 |
|---|---|---|
| 推理脚本标准化(json+耗时) | 1-2 天 | 无 |
| 设计报告 + 使用说明 | 2-3 天 | 无 |
| 测试集 A 真实评测 | 1-2 天 | 测试集 A |
| L20/L40 耗时验证 | 1 天 | 租云 |
| 测试报告 | 1-2 天 | 真实 A 结果 |
| 作品提交 | — | ≤ 2026-09-05 |
本项目为竞赛项目,欢迎:
本项目仅供学术研究与竞赛使用。
109 commits
Python
78.0%
HTML
21.2%