start-here.md
4.84 KB
Start Here / 新同学接手入口
目标:让新同学在 10 分钟内 知道现在的主链、先跑什么、先看什么。
1. 先执行这条命令
cd /workspace
/usr/local/miniconda3/bin/python acr-engine/scripts/run_songcentric_directory_pipeline_live.py \
--dsn 'postgres://d2:d2pass@127.0.0.1:5432/d2' \
--schema acr_songcentric_test \
--input-root acr-engine/data/songcentric_builder_smoke \
--output-dir acr-engine/data/pgvector_eval/music20
或:
acr-engine/scripts/start_songcentric_shortest_path.sh 'postgres://d2:d2pass@127.0.0.1:5432/d2'
当前 fresh evidence:
song_count = 2asset_count = 2window_count = 5matcher_fingerprint_count = 5fallback_fingerprint_count = 0semantic_runtime_available = truesemantic_runtime_missing = []semantic_runtime_ready_count = 5semantic_fallback_count = 0import_counts = media_entity:9 / audio_object:22 / feature_fact:34 / set_membership:9
2. 只读这 4 份文档
3. 用一句话理解当前项目
我们当前做的是一个 面向版权保护的 song-centric 音乐 ACR 系统:
目标是在约 100w 音频、约 30w 歌曲里,把录音、BGM、片段、翻唱相关查询尽快定位到应归属的 song_id。
4. 当前最重要的设计结论
4.1 不再默认走旧的多层 v2 体系
当前默认只认 4 张核心物理表:
media_entity -> audio_object -> feature_fact -> set_membership
4.2 逻辑语义这样理解
song -> asset -> window -> fingerprint / embedding
4.3 切片 / 模型 / feature 到底落哪里
| 对象 | 表 | 关键字段 |
|---|---|---|
| song | media_entity |
entity_type='song' |
| 原始音频文件 | audio_object |
object_type='asset' |
| 切片窗口 | audio_object |
object_type='window', parent_object_id=<asset_id>
|
| 指纹特征 | feature_fact |
feature_type='fingerprint', fingerprint_value
|
| embedding 特征 | feature_fact |
feature_type='embedding', embedding_uri/vector_table_name
|
| 模型信息 | feature_fact |
model_name, model_version, feature_set_name
|
| reference/eval/hot 集 | set_membership |
set_type, set_name
|
补充理解:
-
feature_fact.object_id -> audio_object.object_id:feature 直接绑定到具体音频对象,Phase-1 默认绑window -
audio_object.parent_object_id:把window回溯到它的asset -
feature_fact.song_id -> media_entity.entity_id:为了 song-level 聚合与快速返回song_id做的冗余固化 - 如果你只想看这一层的详细解释,直接读 postgresql-data-model.md 第 4 节和 postgres_db_schema_samples.md 第 5 节。
5. 当前主链流程图
flowchart TD
A[media_entity\nentity_type=song] --> B[audio_object\nobject_type=asset]
B --> C[audio_object\nobject_type=window]
C --> D1[feature_fact\nfingerprint]
C --> D2[feature_fact\nembedding]
B --> E[set_membership\nreference_set / eval_set / hot_set]
C --> E
6. 当前哪些已经稳定
- live PostgreSQL schema 已真实建表通过
- 真实目录 -> manifest -> import 已打通
- 真实目录 -> fingerprint enrichment -> import 已打通
- semantic lane 已真实接入
mert-v1-95mbaseline - 当前 host 上 live 主链已落
chromaprint_matcher + mert-v1-95m - 下一步是在不破坏当前 MERT 基线的前提下继续接
MuQchallenger - 当前 exact lane 已优先复用仓库内
ChromaprintMatcher
7. 当前最该继续什么
第一优先级
把 semantic lane 从 mert-v1-95m baseline 扩展到 MuQ challenger,且不破坏现有宿主链。
当前 host 事实
-
torch已可导入 -
torchaudio已可导入 -
transformers已可导入 - 当前
semantic_runtime_available = true - 当前最新主链产出已经是
mert-v1-95m;下一步可继续补MuQchallenger - 当前 MuQ 的最具体候选名可优先按
OpenMuQ/MuQ-large-msd-iter尝试 - 官方加载入口可优先按:
from muq import MuQ+MuQ.from_pretrained("OpenMuQ/MuQ-large-msd-iter") - 当前 blocker 已更新:不是
muq未安装,而是import muq时触发torchvision::nms does not exist
8. 当前不要再绕回去的点
- 不要回退到旧的 v2 schema 作为默认口径
- 不要重新引入
recording/work/version作为 Phase-1 必须返回对象 - 不要先讨论训练/微调
- 不要把“模型底座可替换”误解成“数据库要重新拆很多层”
一句话结论
当前最重要的是守住 4 表 song-centric 主链,并在这个主链上把 semantic encoder 真正接起来。