acr-architecture.md
2.2 KB
ACR 系统架构图
更新:2026-06-02
一页结论
- 识别链路已不是单一模型,而是 指纹 + 向量 + melody-aware rerank 的混合结构
- 数据与服务已经进入工业化演进阶段
- 当前主短板在:
humming_like与confused的 hard-case 精度
1. 总体架构图
flowchart LR
Q[Query Audio] --> P[Preprocess]
P --> F1[Chromaprint Features]
P --> F2[128-Mel Features]
P --> F3[Melody Signature]
F1 --> M1[Fingerprint Matcher]
F2 --> M2[ECAPA + BandSplit Embedder]
F3 --> M3[Melody Similarity]
C[Catalog References] --> I1[Fingerprint Index]
C --> I2[Embedding Window Index]
C --> I3[Reference Melody Cache]
M1 --> H[Hybrid Fusion]
M2 --> H
M3 --> H
H --> O[Top-K + Reject]
2. 在线/离线分层图
flowchart TD
A[Offline Pipeline] --> A1[Dataset Prep]
A --> A2[Training]
A --> A3[Index Build]
A --> A4[Benchmark]
B[Online Service] --> B1[/health]
B --> B2[/recognize]
B --> B3[/index/build]
3. 关键模块表
| 模块 | 输入 | 输出 | 作用 |
|---|---|---|---|
| Preprocess | wav | mel/chroma/f0 | 统一特征入口 |
| Fingerprint Matcher | query audio | chroma candidates | 快速召回 |
| ECAPA Embedder | mel | embeddings | 语义向量检索 |
| Melody Similarity | query/ref melody | melody score | 哼唱场景补强 |
| Hybrid Fusion | multi-scores | ranked candidates | 综合排序 |
| Service API | request | JSON result | 对外调用 |
4. 当前设计重点
4.1 为什么是混合结构
纯指纹对哼唱弱,纯 embedding 对局部强匹配和解释性不足,因此使用混合结构更稳妥。
4.2 为什么加入 melody-aware
目前 hard-case 主要在哼唱/近旋律混淆,因此用 melody signature 做辅助排序。
4.3 为什么要 window-level index
整曲平均 embedding 会损失局部片段信息;window-level 更贴近 ACR 场景。
5. 细节附录
代码映射:
src/engines/chromaprint_matcher.pysrc/engines/ecapa_embedder.pysrc/engines/hybrid_engine.pysrc/service/app.py
Sources
- See
docs/references-and-sources.mdfor the current source map.