Document asset-type training policy before bulk internal ingestion
Constraint: Internal media types need a clear training whitelist and versioning policy before they are mapped into manifests and pgvector Rejected: Treat all audio-like assets as the same training label source | Would blur original-vs-instrumental semantics and degrade retrieval quality Confidence: high Scope-risk: narrow Directive: Keep original recordings, instrumental variants, and short-video clips explicitly separated by audio_role and version semantics during ingestion Tested: Verified new documentation anchors and mapping tables in training-data-and-pgvector-guide.md Not-tested: Automated import from the upstream SQL type enum into manifests
Showing
2 changed files
with
161 additions
and
0 deletions
| ... | @@ -2,6 +2,32 @@ | ... | @@ -2,6 +2,32 @@ |
| 2 | 2 | ||
| 3 | ## 2026-06-02 | 3 | ## 2026-06-02 |
| 4 | 4 | ||
| 5 | ### Stage: 为内部素材 type 枚举补齐训练参与策略文档 | ||
| 6 | |||
| 7 | 完成项: | ||
| 8 | - 在 [training-data-and-pgvector-guide.md](./training-data-and-pgvector-guide.md) 新增内部素材 type 映射章节 | ||
| 9 | - 对用户给出的素材类型补齐: | ||
| 10 | - 主 reference 推荐 | ||
| 11 | - 主 query 推荐 | ||
| 12 | - 伴奏类的条件式参与策略 | ||
| 13 | - 文本/图片/授权/压缩包的 metadata-only 策略 | ||
| 14 | - 增加 `canonical_song_id / version_id / asset_type_code / audio_role` 的落库建议 | ||
| 15 | |||
| 16 | 验证结果: | ||
| 17 | - 文档中已出现以下关键锚点: | ||
| 18 | - `12. 你这批内部素材 type,哪些推荐参与训练` | ||
| 19 | - `12.3 最推荐的主任务训练组合` | ||
| 20 | - `instrumental_variant` | ||
| 21 | - `short_video_clip` | ||
| 22 | - 当前建议与现有数据规范保持一致: | ||
| 23 | - reference / query 分离 | ||
| 24 | - 伴奏版本默认不无脑并入原曲主标签 | ||
| 25 | - 非音频资产不进入音频模型训练 | ||
| 26 | |||
| 27 | 结论: | ||
| 28 | - 现在这批内部资产已经有一套明确的训练白名单 / 条件白名单 / 元数据白名单 | ||
| 29 | - 后续做批量导入或 pgvector 入库时,可以直接按文档映射执行 | ||
| 30 | |||
| 5 | ### Stage: 为外部数据集接入增加 overlap query manifest 能力 | 31 | ### Stage: 为外部数据集接入增加 overlap query manifest 能力 |
| 6 | 32 | ||
| 7 | 完成项: | 33 | 完成项: | ... | ... |
| ... | @@ -343,5 +343,140 @@ flowchart TD | ... | @@ -343,5 +343,140 @@ flowchart TD |
| 343 | 4. **固定一部分永不训练,只做 test set。** | 343 | 4. **固定一部分永不训练,只做 test set。** |
| 344 | 5. **先把 manifest 字段做全,再谈 pgvector 和工业服务。** | 344 | 5. **先把 manifest 字段做全,再谈 pgvector 和工业服务。** |
| 345 | 345 | ||
| 346 | --- | ||
| 347 | |||
| 348 | ## 12. 你这批内部素材 type,哪些推荐参与训练 | ||
| 349 | |||
| 350 | ## 12.1 一页结论 | ||
| 351 | |||
| 352 | 如果目标是做 **音乐 ACR / 歌曲识别**,推荐按下面的优先级: | ||
| 353 | |||
| 354 | - **主 reference 首选**:`11 原曲-无损` | ||
| 355 | - **次级 reference / 兼容增强**:`1 原曲-压缩` | ||
| 356 | - **主 query 来源**:`7 抖音片段`、`8 片段(副歌)`、`16 快手片段`、`18 音频demo` | ||
| 357 | - **伴奏类**:`2/9/10/12` 不建议直接无脑混进“原曲主任务”同标签训练,除非你们的业务明确要识别伴奏版本 | ||
| 358 | - **纯文本/图片/授权/压缩包**:不进音频训练,只进元数据治理 | ||
| 359 | |||
| 360 | --- | ||
| 361 | |||
| 362 | ## 12.2 推荐映射表 | ||
| 363 | |||
| 364 | | type | 内容 | 建议角色 | 是否进主训练 | 建议说明 | | ||
| 365 | |---:|---|---|---|---| | ||
| 366 | | 1 | 原曲-压缩(mp3) | secondary reference / clean query 来源 | 是 | 当 11 缺失时可做主 reference;有 11 时更适合做压缩退化增强 | | ||
| 367 | | 2 | 伴奏有和声-压缩(mp3) | 可选单独版本库 / hard negative | 条件式 | 不建议直接和原曲共用同一训练语义 | | ||
| 368 | | 3 | TXT歌词 | metadata | 否 | 可入库做检索增强,不进音频模型 | | ||
| 369 | | 4 | 封面 | metadata | 否 | 不进音频训练 | | ||
| 370 | | 5 | 授权书 | compliance metadata | 否 | 只做合规治理 | | ||
| 371 | | 6 | 专辑信息(txt) | metadata | 否 | 只做元数据 | | ||
| 372 | | 7 | 抖音片段 | query | 是 | 很适合真实 query 训练/评测 | | ||
| 373 | | 8 | 片段(副歌) | query | 是 | 高价值 query,建议重点保留 | | ||
| 374 | | 9 | 伴奏无和声-压缩(mp3) | 可选单独版本库 / hard negative | 条件式 | 不建议默认并入原曲主标签 | | ||
| 375 | | 10 | 伴奏无和声-无损 | 可选 reference / hard negative | 条件式 | 仅在“识别伴奏版本”任务里进入主训练 | | ||
| 376 | | 11 | 原曲-无损(wav/flac) | primary reference | **强烈推荐** | 最适合作为标准 reference 真值 | | ||
| 377 | | 12 | 伴奏有和声-无损 | 可选单独版本库 / hard negative | 条件式 | 与原曲声学差异大,默认不要并到原曲主任务 | | ||
| 378 | | 13 | 滚动歌词(lrc) | metadata | 否 | 可做歌词侧检索,不进音频模型 | | ||
| 379 | | 14 | 封面源文件(psd) | metadata | 否 | 不进训练 | | ||
| 380 | | 16 | 快手片段 | query | 是 | 与 7 类似,适合真实短视频场景评测 | | ||
| 381 | | 17 | 词曲压缩包 | archive metadata | 否 | 先解包治理,不直接训练 | | ||
| 382 | | 18 | 音频demo(mp3/wav) | query / weak reference | 条件式 | 先按质量分层;可做 query,必要时做辅 reference | | ||
| 383 | | 19 | 曲谱(png) | metadata | 否 | 不进音频训练 | | ||
| 384 | | 20 | 译文滚动歌词 | metadata | 否 | 只做文本侧扩展 | | ||
| 385 | |||
| 386 | --- | ||
| 387 | |||
| 388 | ## 12.3 最推荐的主任务训练组合 | ||
| 389 | |||
| 390 | ### A. 如果你的目标是“识别原曲” | ||
| 391 | |||
| 392 | ```text | ||
| 393 | reference: | ||
| 394 | - 11 原曲无损(主) | ||
| 395 | - 1 原曲压缩(辅) | ||
| 396 | |||
| 397 | query: | ||
| 398 | - 从 11 / 1 切 5s / 8s clean query | ||
| 399 | - 7 抖音片段 | ||
| 400 | - 8 副歌片段 | ||
| 401 | - 16 快手片段 | ||
| 402 | - 18 音频demo(筛质后) | ||
| 403 | ``` | ||
| 404 | |||
| 405 | ### B. 如果你的目标是“原曲 + 伴奏版本都要识别” | ||
| 406 | |||
| 407 | 建议不要直接把原曲和伴奏粗暴合并成同一个训练标签,而是至少保留: | ||
| 408 | |||
| 409 | - `canonical_song_id`:作品级 ID | ||
| 410 | - `version_id`:版本级 ID | ||
| 411 | - `audio_role`:`original / inst_with_harmony / inst_no_harmony / short_clip / demo` | ||
| 412 | |||
| 413 | 这样你后面可以做两种策略: | ||
| 414 | |||
| 415 | 1. **作品级识别** | ||
| 416 | - 原曲和伴奏共享 `canonical_song_id` | ||
| 417 | - 但保留不同 `version_id` | ||
| 418 | 2. **版本级识别** | ||
| 419 | - 原曲和伴奏完全分开标签 | ||
| 420 | |||
| 421 | 如果你现在主目标只是 ACR 识别“这首歌是谁”,而不是区分伴奏版本,建议先走策略 1,但**训练时不要让伴奏版本无脑占太高比例**,否则会把主模型拉偏。 | ||
| 422 | |||
| 423 | --- | ||
| 424 | |||
| 425 | ## 12.4 我给你的实际建议 | ||
| 426 | |||
| 427 | ### 第一批一定要进的数据 | ||
| 428 | |||
| 429 | - `11 原曲无损` | ||
| 430 | - `1 原曲压缩` | ||
| 431 | - `7 抖音片段` | ||
| 432 | - `8 副歌片段` | ||
| 433 | - `16 快手片段` | ||
| 434 | |||
| 435 | ### 第二批可控加入的数据 | ||
| 436 | |||
| 437 | - `18 音频demo` | ||
| 438 | - 先按质量筛选 | ||
| 439 | - 干净 demo 可做 query | ||
| 440 | - 明显截断/噪声重的 demo 进 hard-case pool | ||
| 441 | |||
| 442 | ### 不建议第一阶段直接并入主训练标签的数据 | ||
| 443 | |||
| 444 | - `2 伴奏有和声` | ||
| 445 | - `9 伴奏无和声-压缩` | ||
| 446 | - `10 伴奏无和声-无损` | ||
| 447 | - `12 伴奏有和声-无损` | ||
| 448 | |||
| 449 | 更稳妥的做法: | ||
| 450 | - 先单独入库 | ||
| 451 | - 先做评测集 / hard negative | ||
| 452 | - 等主模型稳定后,再决定是否做多版本任务 | ||
| 453 | |||
| 454 | --- | ||
| 455 | |||
| 456 | ## 12.5 对应 manifest / pgvector 字段建议 | ||
| 457 | |||
| 458 | 如果你们要把这些 type 真正落到训练和数据库,建议至少补这几个字段: | ||
| 459 | |||
| 460 | | 字段 | 示例 | 作用 | | ||
| 461 | |---|---|---| | ||
| 462 | | `canonical_song_id` | `song_123` | 作品主键 | | ||
| 463 | | `version_id` | `song_123_orig_lossless` | 版本主键 | | ||
| 464 | | `asset_type_code` | `11` | 原始 type 枚举 | | ||
| 465 | | `audio_role` | `original_lossless` | 训练与检索语义 | | ||
| 466 | | `type` | `reference / clean / augmented / confused` | 模型训练角色 | | ||
| 467 | | `source_platform` | `douyin / kuaishou / internal` | 来源治理 | | ||
| 468 | |||
| 469 | ### 一个实用映射例子 | ||
| 470 | |||
| 471 | | 原始 type | 推荐 `audio_role` | 推荐训练 `type` | | ||
| 472 | |---:|---|---| | ||
| 473 | | 11 | `original_lossless` | `reference` | | ||
| 474 | | 1 | `original_lossy` | `reference` 或 `clean` | | ||
| 475 | | 7 | `short_video_clip` | `clean` / `confused` | | ||
| 476 | | 8 | `chorus_clip` | `clean` | | ||
| 477 | | 16 | `short_video_clip` | `clean` / `confused` | | ||
| 478 | | 18 | `demo_audio` | `clean` / `augmented` | | ||
| 479 | | 2/9/10/12 | `instrumental_variant` | 先不进主训练,或做 hard negative | | ||
| 480 | |||
| 346 | ## Sources | 481 | ## Sources |
| 347 | - 当前代码事实来自 [acr-engine/src/data/dataset.py](../acr-engine/src/data/dataset.py), [acr-engine/src/data/manifest_tools.py](../acr-engine/src/data/manifest_tools.py), [acr-engine/src/data/external_adapters.py](../acr-engine/src/data/external_adapters.py), [acr-engine/src/utils/audio.py](../acr-engine/src/utils/audio.py), [acr-engine/src/engines/ecapa_embedder.py](../acr-engine/src/engines/ecapa_embedder.py), [acr-engine/train.py](../acr-engine/train.py) | 482 | - 当前代码事实来自 [acr-engine/src/data/dataset.py](../acr-engine/src/data/dataset.py), [acr-engine/src/data/manifest_tools.py](../acr-engine/src/data/manifest_tools.py), [acr-engine/src/data/external_adapters.py](../acr-engine/src/data/external_adapters.py), [acr-engine/src/utils/audio.py](../acr-engine/src/utils/audio.py), [acr-engine/src/engines/ecapa_embedder.py](../acr-engine/src/engines/ecapa_embedder.py), [acr-engine/train.py](../acr-engine/train.py) | ... | ... |
-
Please register or sign in to post a comment