dataset-spec.md
4.02 KB
ACR Dataset / 输入输出规范
更新:2026-06-02
一页结论
- 数据规范的核心不是文件格式,而是分离 catalog 与 query
- 外部数据集进入系统前必须先转换成统一 manifest
- 当前系统的标准输入是:
- 16k mono audio
- 128 Mel
- window-level retrieval
- 当前系统的标准输出是:
- top-k candidates
- confidence
- reject/accept
- metadata
1. 数据流图
flowchart LR
A[External / Synthetic Audio] --> B[Manifest Conversion]
B --> C[Catalog Manifest]
B --> D[Query Manifest]
C --> E[Reference Index Build]
D --> F[Training / Evaluation Queries]
E --> G[Hybrid Retrieval]
F --> G
2. 数据对象表
| 对象 | 作用 | 必要字段 | 说明 |
|---|---|---|---|
| Reference | 可检索曲库 |
song_id, audio_path, duration, type=reference
|
用于建索引 |
| Query Segment | 待识别片段 |
song_id, audio_path, duration, type
|
用于训练/评测 |
| Catalog Manifest | reference 总表 | JSON list | 用于离线索引 |
| Query Manifest | query 总表 | JSON list | 用于训练与评测 |
3. Manifest 结构图
flowchart TD
M[Manifest] --> R[Reference Records]
M --> Q[Query Records]
R --> R1[song_id]
R --> R2[audio_path]
R --> R3[duration]
R --> R4[type=reference]
Q --> Q1[song_id]
Q --> Q2[audio_path]
Q --> Q3[duration]
Q --> Q4[type=clean/augmented/confused/humming_like]
4. 输入输出总表
| 环节 | 输入 | 输出 |
|---|---|---|
| 训练 | query segments | embeddings + logits |
| 索引 | catalog references | chromaprint index + embedding index |
| 识别 | query audio | ranked candidates |
| 评测 | query manifest + catalog | top1/top5/hard-case report |
4.1 Hard-case 训练信号图
flowchart LR
A[Query Segment] --> B{type}
B -->|clean| C[w=1.0]
B -->|augmented| D[w=1.4]
B -->|humming_like| E[w=2.5]
B -->|confused| F[w=4.0]
C --> G[Sample-level SupCon + CE]
D --> G
E --> G
F --> G
| 类型 | 当前训练权重 | 目标 |
|---|---|---|
| clean | 1.0 | 保持基础识别稳定 |
| augmented | 1.4 | 提高常规退化鲁棒性 |
| humming_like | 2.5 | 提高旋律近似查询鲁棒性 |
| confused | 4.0 | 强化最易混淆片段分离能力 |
5. 文字说明
5.1 为什么必须分离 catalog 和 query
早期原型容易把 train split 直接当搜索库,这会让评测和真实服务语义混乱。工业化系统必须把:
- “可搜索曲库”
- “训练/评测 query”
明确分离。
5.2 为什么输入层是 128 Mel
音乐任务需要更丰富的频带表达,128 Mel 更适合 band-split 和音乐 timbre/harmony 建模。
5.3 query 类型为什么要显式标注
clean / augmented / confused / humming_like 是评测与训练策略的重要条件,不应只放在隐式文件名里。
5.4 为什么 hard-case 权重必须做到 sample-level
如果只在 batch 级取平均权重,confused 这种少量但高风险样本会被正常样本稀释。当前版本已经改成 sample-level weighted SupCon + sample-level weighted CE,从而让单个困难片段在损失中真实“被看见”。
5.5 当前经验结论
- 简单过采样会导致整体退化
- type-aware weighting 能提升一部分 hard case
- confused 类需要更高权重,但过强偏置会回伤
humming_like - 因此 dataset 规范中必须保留
type字段,后续才能继续做:- confusion-aware negative mining
- melody-aware reranking
- 双支路 hard-case curriculum
6. 细节附录
Reference 示例
{
"song_id": "song_0001",
"audio_path": "songs/song_0001.wav",
"duration": 20.0,
"type": "reference"
}
Query 示例
{
"song_id": "song_0001",
"audio_path": "segments/song_0001_seg_04_confused.wav",
"duration": 5.0,
"type": "confused",
"offset": 8.3,
"segment_type": "mid"
}
Sources
- See
docs/references-and-sources.mdfor the current source map.