QuarkAudio HCodec 1.0 / 1.5 · 可审计模型档案¶
当前结论:D0–D3 passed;下一步是 D4 · after this protocol commit, execute the frozen source/checkpoint identity checks and full public speech cross-check on RunPod only, export per-item evidence and keep all paper-table comparisons explicitly approximate or blocked。 D0 只证明身份、来源和本地 artifact 一致;不表示算法已深读、官方结果已复现或公共 Benchmark 已完成。 D0 只证明身份、来源和本地 artifact 一致;后续 Gate 的通过不会反向扩大 D0 的证据边界。
Gate 状态¶
| Gate | 状态 |
|---|---|
| D0 | passed |
| D1 | passed |
| D2 | passed |
| D3 | passed |
| D4 | not_started |
| D5 | not_started |
| D6 | not_started |
| D7 | not_started |
D0 · 身份、标准与本地 artifact¶
| 项目 | 冻结身份 |
|---|---|
| 主论文/规范/资料 | QuarkAudio Technical Report · arXiv:2512.20151v1 |
| 规范更新 | UniTok-Audio foundational paper, HCodec 2.0 code-only model card |
| 官方实现 | https://github.com/alibaba/unified-audio · fixed main commit / c4004e217ddf |
| 本地环境 | Darwin 26.5 · arm64 · arm |
| 学习参数/模型状态 | 1225351684 / 4976398928 bytes(official hugging face checkpoints) |
| 已冻结运行 artifact | 18 个,共 5,004,843,516 bytes |
| 当前公共点 | 2.0 kbps · application=planned public English/Mandarin speech; not executed at D0 · signal hint=16 kHz mono speech for both runnable endpoints · D3-frozen HCodec 1.0 fixed 2.0-kbps anchor plus HCodec 1.5 manual thresholds 0.4, 0.6 and 0.8; paper-native D4 uses only the author setting 0.6 · 40 ms |
冻结范围与明确排除¶
- 论文/规范家族:HCodec 1.0 fixed 25-Hz dual stream, HCodec 1.5 semantic-boundary adaptive grouping, and the code-only HCodec 2.0/Spatial extensions described by current official sources;
- 本地选择端点:HCodec 1.0 and HCodec 1.5 are the only executable released endpoints in D0; they remain separate model points with separate semantic encoders and rate contracts;
-
不纳入当前身份:
- treating HCodec 2.0 as runnable: its frozen Hugging Face revision contains a model card but no weight file
- treating HCodec-Spatial source as a runnable checkpoint: no selected official weight artifact is frozen
- the QuarkAudio decoder-only language model and its generation/editing results; this bundle studies the codec only
- quality or paper-table conclusions from the earlier eight-utterance Transport Qualified runs
- an upstream file/network bitstream; official code emits tensors and the QHCODEC payloads are EvoSpeech-owned transports
- comparing HCodec 1.5 at threshold 0.6 with HCodec 1.0 as a quality-controlled bitrate experiment before D3/D4
Primary-source manifest¶
| ID | 作用 | bytes | SHA-256 |
|---|---|---|---|
| QUARKAUDIO_REPORT_V1_PDF | current author architecture, HCodec 1.0/1.5/2.0 training and evaluation source | 980,715 | 5a8d88c07c93160f3b91123dff2abdba810c0cf5c4a50876a98f8d18507e24fd |
| UNITOK_AUDIO_V1_PDF | foundational HCodec 1.0 architecture, losses and evaluation source | 845,860 | 03ddc4be14dcbe5d47a018252dcc2c0ce33305f0216a627511e36a1510057d18 |
| QUARK_SOURCE_ARCHIVE | release-exact implementation and variant-boundary source | 25,781,034 | 78071b93e633d73a603250bff0952bc25a5d39f531630edd1fac1fd1def5e865 |
| QUARK_FIXED_README | official checkpoint links, usage and family release status | 4,303 | af86c5c18ea00876cf8b5f8e200c6b95a5e15760f435f513937a5f88f98e314e |
| QUARK_FIXED_LICENSE | source license evidence | 11,357 | c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 |
| HCODEC_V1_MODEL_CARD | released 1.0 checkpoint identity and use instructions | 4,310 | d5cb1e3663991e025c74bf3637481fc52018cdb22761be540636ade4661c34b3 |
| HCODEC_V15_MODEL_CARD | released adaptive checkpoint and legal grouping configuration source | 2,782 | 179897e7cf92a44cdaa8dc69e94feb0283021b47a8ea1ae8534fd137e36af541 |
| HCODEC_V2_MODEL_CARD | evidence that the frozen 2.0 repository exposes documentation but no weight file | 4,290 | d1718c3ec8f9ba92154ac49bb2aa3156be0d0fe9beea5ac76ca6f6da07635b99 |
Source releases and licenses¶
| Artifact | revision | bytes | SHA-256 | license |
|---|---|---|---|---|
| unified-audio-c4004e2.tar.gz | c4004e217ddf7c514f72ea22f2d0fbf43f02ae90 |
25,781,034 | 78071b93e633d73a603250bff0952bc25a5d39f531630edd1fac1fd1def5e865 |
Apache-2.0 |
| hcodec-1.0-weights | 71541fdcf2bce1e7ade1568d93476a76eda3c495 |
582,195,700 | 623ee7afbd1a97c91266c9678cb248f600dd9f75d40d7cce3dd5c977d7dce5ce |
Apache-2.0 model card |
| hcodec-1.0-hubert | d7a7039bd0d93005f6532853db1934722d9a5e02 |
377,510,632 | 37a33094dbd080a2b5dcfcb0a9f98db5434fd78aa597d89fb972fbd19de196cc |
Apache-2.0 model card |
| hcodec-1.5-weights | d055b37ea36a25f1094c9848e67c3462759727f4 |
2,747,714,452 | 5f228e52ef5ca133fee75521de5a0407c78577e9e3f0a7e78dabdcd312344b0c |
Apache-2.0 model card |
| hcodec-1.5-wav2vec2 | c3f9d884181a224a6ac87bf8885c84d1cff3384f |
1,269,737,156 | 314340227371a608f71adcd5f0de5933824fe77e55822aa4b24dba9c1c364dcb |
Apache-2.0 model card |
Installed encoder/decoder identity¶
| Artifact | bytes | SHA-256 | resolved path |
|---|---|---|---|
release:weights_small_data_20wh.pt |
582,195,700 | 623ee7afbd1a97c91266c9678cb248f600dd9f75d40d7cce3dd5c977d7dce5ce |
.model-envs/quark_hcodec/checkpoint-v1/weights_small_data_20wh.pt |
release:config.json |
1,375 | dfbbabe04cc00ce28acd7c878961eb25af88301c5e3f14a61c168479236f365f |
.model-envs/quark_hcodec/hubert-base/config.json |
release:model.safetensors |
377,510,632 | 37a33094dbd080a2b5dcfcb0a9f98db5434fd78aa597d89fb972fbd19de196cc |
.model-envs/quark_hcodec/hubert-base/model.safetensors |
release:hcode_1.5_adaptive_4+4.pt |
2,747,714,452 | 5f228e52ef5ca133fee75521de5a0407c78577e9e3f0a7e78dabdcd312344b0c |
.model-envs/quark_hcodec/checkpoint-v1.5/hcode_1.5_adaptive_4+4.pt |
release:config.json |
1,768 | 48576e4a1b0f02c7770f57e236747169459db9a8b9a529bbd7a58bbbf52c45b5 |
.model-envs/quark_hcodec/wav2vec2-large-xlsr-53/config.json |
release:pytorch_model.bin |
1,269,737,156 | 314340227371a608f71adcd5f0de5933824fe77e55822aa4b24dba9c1c364dcb |
.model-envs/quark_hcodec/wav2vec2-large-xlsr-53/pytorch_model.bin |
project:quark-hcodec-1.0-native-v1.txt |
774 | 07dfc5772bc25d101bcbad5ac33ccb2ba954b35a9091998b83d52f04b55ff6b8 |
environments/quark-hcodec-1.0-native-v1.txt |
project:quark-hcodec-1.5-native-v1.txt |
2,382 | 352c278ad1d5954e22d77f689b28b63a19abb111803f271fa4c0045934824e83 |
environments/quark-hcodec-1.5-native-v1.txt |
project:quark_hcodec_payload.py |
18,069 | 5ac5b3df8e847c1eb436255d737d3e26fda0ee89088b5e8097985e8a47252ac4 |
codecs_/quark_hcodec_payload.py |
project:quark_hcodec_v1_5_payload.py |
26,557 | d66317f7f84ef6da2b491ff9afae4d6c06ff010697e25b2533d521231f0781f4 |
codecs_/quark_hcodec_v1_5_payload.py |
QUARKAUDIO_REPORT_V1_PDF |
980,715 | 5a8d88c07c93160f3b91123dff2abdba810c0cf5c4a50876a98f8d18507e24fd |
.model-envs/quark_hcodec/primary-sources/quarkaudio-2512.20151v1.pdf |
UNITOK_AUDIO_V1_PDF |
845,860 | 03ddc4be14dcbe5d47a018252dcc2c0ce33305f0216a627511e36a1510057d18 |
.model-envs/quark_hcodec/primary-sources/unitok-audio-2510.26372v1.pdf |
QUARK_SOURCE_ARCHIVE |
25,781,034 | 78071b93e633d73a603250bff0952bc25a5d39f531630edd1fac1fd1def5e865 |
.model-envs/quark_hcodec/primary-sources/unified-audio-c4004e2.tar.gz |
QUARK_FIXED_README |
4,303 | af86c5c18ea00876cf8b5f8e200c6b95a5e15760f435f513937a5f88f98e314e |
.model-envs/quark_hcodec/source/QuarkAudio-HCodec/README.md |
QUARK_FIXED_LICENSE |
11,357 | c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 |
.model-envs/quark_hcodec/source/LICENSE |
HCODEC_V1_MODEL_CARD |
4,310 | d5cb1e3663991e025c74bf3637481fc52018cdb22761be540636ade4661c34b3 |
.model-envs/quark_hcodec/primary-sources/hcodec-v1-model-card-71541fd.md |
HCODEC_V15_MODEL_CARD |
2,782 | 179897e7cf92a44cdaa8dc69e94feb0283021b47a8ea1ae8534fd137e36af541 |
.model-envs/quark_hcodec/primary-sources/hcodec-v1.5-model-card-d055b37.md |
HCODEC_V2_MODEL_CARD |
4,290 | d1718c3ec8f9ba92154ac49bb2aa3156be0d0fe9beea5ac76ca6f6da07635b99 |
.model-envs/quark_hcodec/primary-sources/hcodec-v2-model-card-5184a76.md |
表示与计账边界¶
- codec 表示:HCodec 1.0 emits 25 frames/s × (4 acoustic + 4 semantic) × 10-bit indices = nominal 2,000 bps. HCodec 1.5 emits the same eight code indices once per adaptive group plus one shared 3-bit duration in the EvoSpeech-normalized representation.;
- 当前存储/传输 artifact:EvoSpeech QHCODEC wrappers pack the two streams, exact lengths, adaptive duration where applicable, variant identity and original sample count; this is not an author-standardized transport;
- 分账规则:raw representation bits, project payload bytes, external semantic-encoder state, decoder state, runtime memory and compute are reported separately;
- source-blind decoder:true;
- 不能由 D0 推出的结论:deep algorithmic understanding beyond identity and rate fields;reproduction of any QuarkAudio or UniTok-Audio quality table;quality equivalence or superiority between HCodec 1.0, 1.5 and 2.0;a fair HCodec 1.5 threshold/bitrate/quality Pareto curve;English, Mandarin, speaker, expression, latency, streaming or robustness performance;an official author-defined compressed file or network bitstream;a runnable HCodec 2.0 or HCodec-Spatial checkpoint。
D1 · 论文深读与证据边界¶
D1 结论:passed。 本章完整阅读、提取并逐页视觉检查了 21 页的 UniTok-Audio 与 21 页的 QuarkAudio Technical Report,重点复核两篇论文的 HCodec 结构图、动态分组公式、训练流程、Tables 2–5 和附录指标定义;同时审计固定 commit 的家族 README 与 HCodec 1.0、1.5、2.0 三个固定 revision 的模型卡。D1 证明我们已经知道作者提出了 什么、不同版本为什么不同、作者怎样评测以及公开 release 与论文哪里不一致。它不表示任何 论文数字已被本项目复现。
一句话心智模型¶
HCodec 的核心不是“给声学 codec 加一个语义 loss”,而是把语音/音频拆成两个并行的离散合同:
- acoustic stream 负责时间细节、音色、相位和高保真波形重建;
- semantic stream 由冻结 SSL 模型提供目标,负责更稳定地保存内容与高层结构;
- 两路分别量化,decoder 再拼接两路量化特征重建波形;
- 1.5 让语义边界决定两路共同的时间压缩;
- 2.0 则把 48 kHz 全带宽输入压到 6.25 个时间步/秒,并用更大的表示与 decoder 恢复细节。
这条路线的第一性原理是:“最小充分语音表示”不一定是一条 token 流。 内容与声学细节对 时间分辨率、码本容量和训练目标的要求不同;先解耦再协同,可能比把所有信息硬塞进一个码本更 容易优化。[QH-P-002–QH-P-006, QH-P-016]
但它也带来一个我们必须正视的代价:双流 4+4 虽然在语言模型里可并行预测,却仍然是每帧八个
10-bit code;外部 SSL encoder 也是真实编码成本。只报“25 FPS”或只报 codec 自身 146M 参数,
都会低估完整系统。[QH-I-001, QH-I-004]
两篇论文到底解决什么¶
UniTok-Audio 先提出 HCodec 1.0,并把它作为统一音频生成系统的 tokenizer。论文同时研究语音 恢复、目标说话人提取、语音分离、声音分离和声音转换,但我们当前研究单元只取 codec,不把 481M decoder-only LM 的生成结果混进 reconstruction 结论。[QH-P-001]
QuarkAudio Technical Report 是后续扩展:保留 1.0,加入动态帧率 1.5、48 kHz 的 2.0,以及 更广的生成/编辑任务。对 codec 而言,真正新增的是三件事:[QH-P-016]
- 用相邻 semantic feature 的相似度发现可合并片段;
- 把片段持续长度写入离散索引,使 decoder 能恢复原始时间网格;
- 用 48 kHz STFT magnitude+phase、ConvNeXt、Transformer、16+16 RVQ 和两阶段训练构造 2.0。
两篇论文并不是同一个结果表的两个版本。早期论文的 codec 训练数据约为 100k 小时 speech、8k 小时 music、13k 小时 general audio;后续报告又引入约 2.5M 小时内部 speech、150k 小时 music 和 100k 小时 audio。HCodec 1.0 的 Table 2 也从 PESQ 2.99 / SPK-SIM 0.84 / WER 3.18 变成 3.05 / 0.89 / 2.85。因此“架构名相同”不等于“checkpoint 或训练分布相同”。[QH-P-009, QH-P-024, QH-A-001, QH-A-003, QH-I-003]
HCodec 1.0:双流不是融合¶
HCodec 1.0 的 acoustic encoder 继承 EnCodec 风格,16 kHz 输入经过总 hop 640 后得到 25 Hz 声学特征;acoustic branch 用四层 RVQ,每层 1024 项、codebook dimension 512。并行的 frozen HuBERT 对所有 Transformer 层输出取平均,semantic encoder 再把它映射、以另一个四层 RVQ 量化。[QH-P-003, QH-P-004, QH-P-010]
它与 X-Codec 的关键差异是:X-Codec 先融合 acoustic/semantic feature 再用单一码本量化;HCodec 保留两个独立 codebook stacks。这不是语义上的小区别。独立量化意味着:
- semantic 分支不会直接抢占 acoustic codebook 的容量;
- 两个分支可以有不同 reconstruction target;
- downstream LM 可以在同一时间步并行预测多层,但必须保留 stream identity;
- decoder 端仍需两路 code,不能把 semantic token 当“训练时辅助、推理时可删”。
波形 decoder 把两路量化 feature 沿 hidden dimension 拼接,经 acoustic decoder 与 Vocos 风格 ISTFT head 重建;semantic decoder 同时重建 SSL feature,使 semantic token 不能只靠 waveform loss 漂移。[QH-P-005, QH-P-006]
训练目标包含 commitment、mel reconstruction、adversarial、feature matching、SSL auxiliary MSE; 判别器使用 MPD、MRD 与 sub-band complex STFT discriminator。最后 100k steps 再打开 perceptual loss。这里的启发是:语义保存不是由一个 WER evaluator 事后“测出来”,而是在训练时通过 SSL reconstruction target 进入表示学习。[QH-P-007, QH-P-008, QH-P-011]
25 Hz × 8 codebooks × 10 bits = 2,000 bps。早期 Table 2 把 FPS 写成 25+25、Nq 写成 4,后续
Table 2 明确写成 FPS 25、Nq 4+4;二者的 2,000 BPS 都只有在八个 code 被同时计入时才成立。
因此 25 FPS 是 LM 时间步率,不是 token 率;原始 token symbol rate 是 200 symbols/s。
[QH-A-001, QH-A-003, QH-I-001]
HCodec 1.5:动态帧率到底如何发生¶
1.5 不是根据能量做 VAD,也不是简单丢帧。semantic aggregation module 先计算每对相邻 semantic feature 的 cosine similarity;连续相似度均高于阈值的 frames 形成 segment,再由 local attention 聚合成一个 feature。acoustic aggregation module 不独立分段,而是继承同一语义边界,所以两路 保持时间一致。[QH-P-019, QH-P-020]
若原码本大小为 K、原 code 为 c_i、segment duration 为 d_i,论文定义:
因此 duration 不是“免费信息”。在作者的索引语义里,每个复合索引从 1024 项扩到最多
8×1024 项;本项目 transport 则把八路 code 的共同 duration 验证后只传一次,以 8×10 + 3 = 83
bits/group 计 representation。两个表示在可恢复信息上等价,但字节布局不是作者标准。[QH-P-021,
QH-P-022, QH-I-004]
论文固定 threshold 0.6、maximum aggregation length 8、local window 前后各 8 token、8 heads、 32 layers。LibriSpeech test-clean 上报告平均 19.54 FPS / 1,622 BPS;SEED-ZH 与 SEED-EN 的平均 FPS 分别为 18.80 与 20.18。这直接证明 bitrate 是内容/语言/阈值条件化的分布,而不是模型常数。 [QH-P-026, QH-A-003, QH-A-004]
作者明确承认,1.5 相比 1.0 以轻微质量衰减换取时间步减少:LibriSpeech PESQ 3.05→2.60、STOI 0.94→0.92、SPK-SIM 0.89→0.83、WER 2.85→3.02。它是很有价值的 rate-quality mechanism, 但不能把“动态帧率更低”直接写成“压缩更好”;必须在多个合法阈值上同时测 representation rate、 payload rate、质量和语言条件。[QH-A-003, QH-A-005]
HCodec 2.0:48kHz 与低帧率¶
2.0 不只是把 16 kHz 网络重采样到 48 kHz。论文先做 frame length 1920、hop 960 的 STFT,拼接
magnitude 与 phase,送入 ConvNeXt blocks 与 Transformer;50 Hz 特征再 8× downsample 到
6.25 Hz。acoustic 与 semantic 两路各用 16 层 RVQ,所以若每层仍是 1024 项,
6.25×32×10 = 2,000 bps,与表中 BPS 对上。[QH-P-018, QH-P-027, QH-I-002]
训练分两阶段:stage 1 联合训练 encoder、quantizer、decoder;stage 2 冻结 encoder 与 quantizer, 只适配 acoustic decoder。Table 5 报告 large 2.0 在 SEED-ZH 的 PESQ 2.69→2.88、STOI 0.92→0.93、Mel loss 0.464→0.422;SEED-EN 也同步改善。它说明在固定 token identity 后继续提升 decoder reconstruction 是可行研究方向,也正适合未来 Agent 做“表示不变、decoder 搜索”的受控 实验。[QH-P-023, QH-A-007]
2.0 small/large 分别约 236M/1.2B codec 参数,Table 2 的 large 在 6.25 FPS、2 kbps 下报告 PESQ 3.10、SPK-SIM 0.92、WER 2.70;Table 3 在中英文也最强。可是固定 Hugging Face revision 只有 README,没有任何权重。因此这些数字现在只能保留为 author result,不能拿本地 1.0/1.5 替代复现。[QH-A-003, QH-A-004, QH-B-003, QH-I-006]
训练目标、数据与规模¶
早期 UniTok codec 训练覆盖 speech、music、general audio:VoxBox 约 100k 小时,FMA-full 与
MUSDB18-HQ 约 8k 小时,AudioSet/WavCaps 约 13k 小时。所有 evaluation audio 重采样到 16 kHz,
训练随机裁 5 秒、AdamW 初始学习率 2e-4、cosine decay、600k steps。[QH-P-009–QH-P-011]
后续 Quark 报告将训练规模大幅放大,并含无法公开复原的 internal data:speech 还包括约 2.5M 小时内部录音,music 约 150k 小时,audio 约 100k 小时。论文没有发布精确 sample manifest、去重 规则、内部数据、随机种子、stage checkpoints 或训练日志。[QH-P-024, QH-I-008]
参数量也必须解释分母。Table 2 的 HCodec 1.0 146M 接近 codec checkpoint 的 145.52M state
elements,HCodec 1.5 678M 接近加载后 codec 自身 678.42M nn.Parameter;两者都没有把编码时
必需的 frozen SSL encoder 计入。按当前 release,完整 1.0 encoder bundle 是 137.12M codec
parameters + 94.37M HuBERT,完整 1.5 是 678.42M codec + 315.44M Wav2Vec2。论文的参数列适合
比较 codec 主体,但不代表完整 encoder 成本。[QH-I-005]
官方怎样评测 codec¶
数据集¶
早期论文在 LibriSpeech test-clean、MUSDB18-HQ test、AudioSet eval 上分别评测 speech、music、 general audio。后续报告保留这些集合,并增加 Seed-TTS-Eval 的 SEED-ZH 与 SEED-EN;LibriSpeech 是 16 kHz、Seed-TTS-Eval 标为 24 kHz、music 44.1 kHz、AudioSet 48 kHz,再按模型或 metric 要求重采样。[QH-P-012, QH-P-025]
指标与具体实现声明¶
附录把 codec metrics 定义为:[QH-P-029–QH-P-031]
| 维度 | 作者指标 | 冻结描述 |
|---|---|---|
| intrusive speech quality | wideband PESQ | 1–4.5,比较 reconstruction 与 reference |
| intelligibility | STOI | 0–1 |
| naturalness | UTMOS | neural MOS predictor |
| content | WER | facebook/hubert-large-ls960-ft HuBERT ASR |
| speaker | SPK-SIM | Microsoft UniSpeech/WavLM speaker verification |
| signal | STFT L1 | Hann 1024 / hop 256 magnitude spectrum |
| spectral | Mel L1 | 100 mel filters |
这回答了“论文是不是用 Whisper/SenseVoice”的问题:codec reconstruction 表里的 WER 不是。 作者明确写的是 HuBERT-based ASR;Whisper-large-v3 只用于论文下游 VC/EDIT-S,中文 EDIT-S 另用 Paraformer-zh。EvoSpeech 若复现 paper-native WER,应在 RunPod 固定并只跑一次作者 HuBERT evaluator; 共同 benchmark 仍使用我们冻结的 Qwen/Fun/Parakeet panel,两个轨道不能混名。[QH-P-030, QH-I-007]
论文没有提供 codec 主观听测。UTMOS 是代理模型,不是人类 MOS;Tables 2–5 也没有 confidence interval、逐样本 ledger 或多 seed 方差。因此我们可以复算公开样本的 objective metrics,却不能 声称复现了听感结论。[QH-I-009, QH-I-010]
作者结果:能读出什么¶
LibriSpeech test-clean¶
后续 Table 2 的四个 HCodec 点如下:[QH-A-003]
| Model | FS | FPS | codes | BPS | codec params | PESQ | STOI | UTMOS | SPK-SIM | WER |
|---|---|---|---|---|---|---|---|---|---|---|
| 1.0 | 16k | 25 | 4+4 | 2000 | 146M | 3.05 | 0.94 | 4.08 | 0.89 | 2.85 |
| 1.5 | 16k | 19.54 avg | 4+4 | 1622 avg | 678M | 2.60 | 0.92 | 3.99 | 0.83 | 3.02 |
| 2.0 Small | 48k | 6.25 | 16+16 | 2000 | 236M | 2.67 | 0.93 | 3.75 | 0.89 | 3.05 |
| 2.0 Large | 48k | 6.25 | 16+16 | 2000 | 1.2B | 3.10 | 0.94 | 3.89 | 0.92 | 2.70 |
最重要的不是“large 最大”,而是 Pareto 结构:1.5 用约 22% 更少的时间步、约 19% 更低的平均
representation BPS 换来可见质量损失;2.0 large 用极低时间步与极大 decoder/codec capacity 恢复
质量。未来 baseline 应把 time steps/s 与 bits/s 分成两个目标,而不是用一个 bitrate 淹没。
SEED-ZH / SEED-EN¶
Table 3 是项目特别需要的中英文证据。1.5 在 ZH 的 PESQ/SPK/STOI 为 2.40/0.85/0.90,EN 为 2.30/0.82/0.90;1.0 则是 ZH 2.35/0.80/0.90、EN 2.22/0.73/0.90。也就是说 1.5 在这个表上 虽然更低帧率,却比 1.0 的 speaker/PESQ 更高,与 LibriSpeech 的“轻微衰减”不完全同向。 [QH-A-004]
这不是矛盾,而是很有价值的提醒:模型排序取决于数据集、语言、speaker distribution、重采样和 metric。我们不能只用英文 test-clean 决定中文实验方向;D3 必须同时冻结公开英文与中文轨。
多域 signal loss¶
Table 4 报告 HCodec 1.0 在 speech/music/audio 的 Mel loss 为 0.3315/0.5157/1.2312,STFT loss 0.1017/0.1667/0.4023;2.0 large 除 speech STFT 外在多数格最优。可是这些是 L1 spectral loss, 不能替代内容、speaker 或主观自然度。[QH-A-006]
发布物与论文并不完全相同¶
这是 D1 最重要的审计结果。
- HCodec 1.5 SSL 模型不一致。 Quark 论文 Section 2.1.1 明确写 speech-specialized
microsoft/wavlm-base-plus;当前固定 release adapter 与已下载 checkpoint 则实际依赖facebook/wav2vec2-large-xlsr-53的特定 hidden layers。模型卡只给运行配置,没有解释替换。 所以当前 1.5 可做 release-faithful benchmark,但不能称 strict paper reproduction。 [QH-P-017, QH-B-002, QH-I-002] - 同名 1.0 的训练身份不唯一。 早期论文和后续报告的数据规模、Table 2 数字不同,而 v1
权重文件名是
weights_small_data_20wh.pt。没有 author manifest 把它唯一对应到某张表。 [QH-I-003] - 2.0 有 README 和源码,没有权重。 模型卡写了 quick start,但固定 HF tree 无模型文件; 不能因为代码可 import 就伪造 checkpoint identity。[QH-B-003, QH-I-006]
- Spatial 是家族 release,不是当前论文表的 model point。 README 宣布 stereo 与 mono-to-stereo spatialization,但当前没有冻结可执行权重,也不属于 Tables 2–5。[QH-B-004]
- 上游没有 bitstream。 作者输出 code tensors;EvoSpeech 的 duration-normalized payload 是 公平测量工具,不是官方格式。[QH-I-004]
可复现性与明确 blocker¶
| Claim family | D1 分类 | 原因 / D3 需要什么 |
|---|---|---|
| 1.0/1.5 source-blind encode/decode | runnable | 已有固定权重与 payload;D2 还需逐行确认机制 |
| UniTok 1.0 Table 2/3 | partial / identity uncertain | 公开数据可取,但 checkpoint 与 table 缺唯一绑定 |
| Quark 1.0 Table 2/3 | partial / identity uncertain | 后续大规模 internal training 与 release 身份不明 |
| Quark 1.5 Table 2/3 | release-faithful only | paper WavLM 与 release Wav2Vec2 不一致 |
| HCodec 2.0 Tables 2–5 | blocked | 固定 HF revision 无权重 |
| exact training replay | blocked | internal data、manifest、seed、logs、stage checkpoints 缺失 |
| codec WER paper track | reproducible candidate | 固定 HuBERT evaluator revision、normalization 与 text manifest 后放 RunPod |
| SPK-SIM | reproducible candidate | 需确定 Microsoft checkpoint、layer/pooling 与 preprocessing |
| UTMOS/PESQ/STOI/spectral | reproducible candidate | 需冻结实现、版本、resampling、per-item ledger |
| subjective listening | not reported | codec section没有 author human-listening contract |
D4 不应该设置“必须接近全部论文数字才算通过”的伪门槛。正确做法是:对可执行 release 跑完整
公开数据与作者指标,报告与 author values 的差;对身份不唯一和权重缺失的行判定 blocked,
并把 blocker 本身作为可审计结果。
对 EvoSpeech 原创 baseline 的核心启发¶
- 把时间步率和表示码率分开优化。 1.5 证明语言模型计算更关心 frame/group rate,而传输
更关心 bits/s;二者相关但不等价。Agent fitness 至少要同时保留
groups/s、representation bps、payload bps 与质量。 - 让语义决定时间压缩,让声学决定重建。 语音中长元音、稳定谐波或静音可以共享时间段, 爆破音、辅音边界、数字和实体附近需要更密。比固定 hop 更接近“最小充分表示”。
- duration 是必须付费的 side information。 动态 tokenization 若不计分段长度,会制造虚假 低码率。我们的 83 bits/group 规则应进入 CandidateContract。
- 大 decoder 可以作为能力教师。 2.0 的 stage-2 表明固定 representation 后,单独改善 decoder 仍可提升质量。先研究强 decoder 学会了什么,再蒸馏到小 decoder,比只搜 low-bit vocoder 更可能 产生第一性原理发现。
- 语义辅助模型必须计成本并审计 domain。 frozen SSL encoder 可能让 token 更有内容,但 WavLM/Wav2Vec2/HuBERT 的选择本身会改变语言、speaker 与 general-audio bias。
- 多语言排序不是英文排序的复制。 LibriSpeech 与 SEED-ZH/EN 的 1.0/1.5相对表现不同, 因此中文轨不是“英语跑完后随便抽几句”。
- 自动科研需要机制级对照。 最有价值的实验不是无约束改全模型,而是固定 code 后搜 decoder、 固定 decoder 后搜 grouping、固定平均 bps 后比较 semantic-guided 与 acoustic-only boundaries。
D1 形成的 D3/D4 入口¶
D1 为后续冻结以下入口,而不是现在提前跑结果:
- HCodec 1.0:16 kHz、25 Hz、q4+q4、2,000 nominal bps;
- HCodec 1.5:16 kHz、q4+q4、max group 8;至少包含 author threshold 0.6,并预注册合法 threshold curve 与 group-length histogram;
- public English:完整 LibriSpeech test-clean 或明确 hash-bound official subset;
- public Chinese/English cross-language:SEED-ZH/SEED-EN,若 author manifest 可取得;
- paper-native metrics:PESQ-WB、STOI、UTMOS、HuBERT WER、WavLM/UniSpeech SPK-SIM、 STFT/Mel L1;所有神经 evaluator 在 RunPod,不在 Mac;
- common benchmark:复用冻结的中英文 60 句、GPU v2 evaluator panel 与 source-blind payload;
- HCodec 2.0:保持 blocked,直到出现 hash-bound official weights,不用相似实现替代。
D1 允许与禁止的结论¶
D1 允许说:我们理解 HCodec 三代的论文机制、作者 evaluation、主要结果和 release 边界;1.0/1.5 存在可执行端点;1.5 的动态时间压缩值得成为原创 baseline 的核心研究变量。
D1 禁止说:当前 1.5 就是论文 WavLM 版本;本地八句结果复现了 Tables 2–5;2.0 已可测试; UTMOS 等于人耳;更低 FPS 必然意味着更好 codec;或 Quark 在所有语言、码率和数据集上是 SOTA。
QuarkAudio HCodec 1.0 / 1.5 核心代码深读¶
本文对应 D2,只回答“固定发布物到底怎样从 waveform/SSL feature 产生离散表示,又怎样从表示恢复 waveform”。它不把代码能跑等同于论文指标复现,也不把无语音机制探针当作音质证据。固定源码是
alibaba/unified-audio@c4004e217ddf7c514f72ea22f2d0fbf43f02ae90,实际 RVQ 依赖另行固定为vector-quantize-pytorch==1.22.15/ commit9d2594b…。HCodec 1.0、1.5 的 codec、SSL checkpoint 仍沿用 D0 的逐文件 SHA-256 身份。
D2 · 固定源码核心代码深读¶
一句话机制模型¶
HCodec 不是“一个 acoustic codec 再加一项 semantic loss”,而是两条并行、同一时间网格的表示链:
- waveform 经非因果 SEANet 风格 encoder 变成 acoustic feature;
- 同一 waveform 经冻结 SSL model,再经小型 semantic encoder 变成 semantic feature;
- 两条 feature 各自进入四层 RVQ,得到四个 acoustic index 与四个 semantic index;
- decoder 分别查回两个 RVQ embedding sum,拼成 1024 channel,再预测复数谱并 iSTFT;
- HCodec 1.5 在第 3 步之前,根据 semantic feature 的相邻 cosine similarity 同时压缩两条时间轴, 并把每个 compressed group 覆盖的 1–8 个 base frame 作为必须传给 decoder 的离散 side information。
因此,“语义”不是从 acoustic code 推测出来的隐含性质,而是 encoder 必须另外运行大型 SSL model 后产生的 第二套离散符号;“动态帧率”也不是跳过静音或降低 RVQ 层数,而是把连续 base frames 合成可变长度的 group。 这两个区别决定了参数量、编码成本、payload、decoder contract 和未来可搜索变量都必须分开记账。
固定身份与真正执行路径¶
源码仓库里同时存在大量注释掉的实验实现、旧配置和本地测试代码。D2 不按文件名猜架构,而是从两个
官方 audio_tokenizer.py 入口沿真实 call path 追踪,并与已严格加载的 checkpoint shape 交叉核对。
- HCodec 1.0:
HCodecTokenizer → Codec.encode/decode → SEANetEncoder + semantic Encoder → vector_quantize_pytorch.ResidualVQ × 2 → CodecDecoder; - HCodec 1.5:
HCodecTokenizer → Codec.encode/decode → FlexiCodec similarity alignment → two QueryTokenAggregator → ResidualVQ × 2 → duration injection → repeat_interleave → bottleneck transformer → CodecDecoder; HCodec-1.0/vq/core_vq.py虽然实现了另一套ResidualVectorQuantization,但实际Codec从vector_quantize_pytorch导入ResidualVQ。所以只读仓库内 local RVQ 会读错算法;D2 额外固定 PyPI sdist hash、Git tag commit,并验证安装文件与该 commit 的residual_vq.pySHA 完全相同。[QH-C-007]
两套完整 encoder bundle 共 1,225,351,684 个 learned parameter:1.0 为 codec 137,124,098 +
HuBERT 94,371,712;1.5 为 codec 678,417,154 + Wav2Vec2 315,438,720。这个总数不是“单个 HCodec
模型参数量”,而是当前家族两个 runnable endpoint 的合计。decoder 不需要 SSL encoder,因此文档同时保留
codec body、完整 encoder bundle、decoder-only 三种口径,避免把论文参数列当成本地部署成本。[QH-I-005]
HCodec 1.0:640-sample hop 怎样形成¶
audio_tokenizer.py 先把输入长度向上补齐到 640 的整数倍,然后在两侧各补 160 sample 给 HuBERT。
SSL 输出的所有 hidden state 被 stack 后沿 layer 维求均值,再做逐元素的 sign-preserving power compression:
压缩后的 feature 转成 B×D×T,与 B×1×samples waveform 一起传进 codec。[QH-C-001, QH-C-002]
acoustic encoder 的前四个 stride 来自 [8, 5, 4, 2],类内部反转成 [2, 4, 5, 8],乘积是
320;随后源码又无条件加入 stride=2 的卷积。因此真实总下采样是 320×2=640,16 kHz 输入得到
25 base frames/s。这个额外 stride 很容易在快速浏览时漏掉,因为类先把 self.hop_length 记录为 320,
真正的第二次下采样在后面的 model list 中硬编码。wrapper 的 hop_length=640 与 checkpoint shape 才是完整
合同。[QH-C-003]
这也暴露出一个严重的 release-surface 陷阱:conf/config.yaml 仍写 decoder input 512、hop 320、单个
4096-entry quantizer;但 Codec.__init__ 完全忽略传入的三个 config 参数,硬编码 decoder input 1024,
以及 acoustic/semantic 各四个 1024-entry quantizer。旧 YAML 不是这个 release checkpoint 的可执行规范。
未来任何自动代码阅读器都必须把“配置声明”“构造器实际使用”“checkpoint strict load”做三方校验,不能只
解析 YAML。[QH-C-021]
HCodec 1.0:双 RVQ 到底意味着什么¶
acoustic branch 和 semantic branch 都把 B×512×T 转成 B×T×512 后送进独立的
ResidualVQ。每个 RVQ 有四层、每层 1024 entry。第 q 层量化当前 residual:
实际依赖在 eval mode 下返回 B×T×4 index,HCodec 再 transpose 成 B×4×T。解码时
get_output_from_indices 根据每层 index 取 code vector,沿 quantizer 维相加,分别恢复 acoustic 与
semantic B×T×512 embedding。[QH-C-004, QH-C-007]
于是 1.0 的表示不是“25 token/s”,而是 25 个 time step/s × 每个 time step 8 个 symbol。若每个 codebook 1024 entry,定长信息量是:
论文里的 FPS、离散 symbol rate 和 bit/s 是三种不同单位。把 25 FPS 写成 25 token/s 会低估语言模型每步 要预测的并行 code 数;把 4+4 写成“50 FPS”又会把同一时间网格重复计算。[QH-I-001]
训练 forward 还包含一个常被架构图省略的 semantic reconstruction head:只有 semantic quantized
embedding 被送入 SemanticDecoder,预测原始 SSL feature。它让 semantic code 不只是与 waveform
decoder 联合训练,也有直接保持 SSL information 的 auxiliary target。audio decode 则不运行这条 head,
只把两路 quantized embedding 在 channel 维拼接。[QH-C-005]
waveform decoder:为什么一个 code frame 对应 640 samples¶
两路各 512-D embedding 拼成 1024 channel 后,CodecDecoder 先用 kernel 5、stride 2 的
ConvTranspose1d 把 temporal length 翻倍;随后经过两组 ResNet、两层 Transformer、另外两组 ResNet、
12 个 ConvNeXt block。最后 ISTFTHead 从每个 decoder time step 预测 n_fft+2=1282 个数:一半
形成 log magnitude,一半形成 phase,幅度指数化并 clip,再用 cos(p)+j·sin(p) 构造复数谱。
custom ISTFT 使用 1280 点 Hann window、320 sample hop,显式 irfft → window → fold overlap-add →
window-envelope normalization → same-padding trim。因为 decoder 在进入 iSTFT 前已把 25 Hz code grid
放大两倍,输出 temporal grid 是 50 Hz;50 × 320 sample = 16,000 sample/s,等价于每个原 code
frame 640 samples。[QH-C-006, QH-C-008]
整条路径全是 causal=False,还含双向 Transformer/局部上下文,因此 1.0 不是 streaming codec。
“能按句 encode/decode”不等于能在 40 ms packet cadence 下因果运行,也不能从 RTF 推断 algorithmic
latency。[QH-C-022]
HCodec 1.5:发布实现与论文的 SSL 身份不一致¶
论文把 HCodec 1.5 的 speech-specialized SSL 写成 microsoft/wavlm-base-plus;固定发布 wrapper 却
调用 facebook/wav2vec2-large-xlsr-53,并只平均 hidden layers 11、14、16。两者既不是同一权重,
也不是同一 layer mixing。D0 已固定 release 真正需要的 1.27 GB Wav2Vec2 权重,D2 又从入口源码确认
它位于真实 call path。[QH-C-009]
这不是文案小误差:semantic similarity 正是 1.5 决定 group boundary 的信号,换 SSL representation 可能同时改变帧率、码率和质量。因此后续运行只能叫“release-faithful HCodec 1.5”,不能叫“严格复现论文 HCodec 1.5”。除非作者发布论文 WavLM 对应 checkpoint 或提供等价性证据,我们也不能把 release 的 threshold curve 与论文 Table 2/3 直接做逐点误差验收。[QH-I-002]
SAM cosine boundary:动态帧率是怎样产生的¶
1.5 仍先生成 25 Hz acoustic 和 semantic base feature,但只用 semantic feature 决定分组。固定函数
_perform_similarity_alignment_vectorized 计算每对相邻 frame 的 cosine similarity:
注意比较符号是 <=:只有连续相似度严格高于 threshold 的 frame 才会保留在同一 group。然后算法追踪
frame 在当前 semantic segment 内的 offset,每到第 8 个 frame 强制切分,最后 scatter 出 B×G×T
alignment matrix。固定 inference config 给出 manual_threshold=0.6、max_tokens_per_group=8。
[QH-C-010, QH-C-011]
_get_current_similarity_threshold 的优先级也很重要:manual threshold 非空时直接返回固定值;否则训练期
dynamic mode 或 infer_using_dynamic_threshold=True 会从 lower/upper interval 用 Python random.uniform
抽样。也就是说合法 rate knob 不只是一个连续 threshold,还包含“固定还是随机”的语义。正式 benchmark 必须
冻结 manual threshold 并禁止 inference 随机采样,否则同一音频的 group count、bitrate 甚至重建都不完全
确定。[QH-C-017]
shared alignment 与 QueryTokenAggregator¶
SAM 输出只有一张 alignment matrix。semantic 与 acoustic 两条 branch 分别调用自己的
QueryTokenAggregator(features, alignment, num_segments),所以 acoustic group 不会独立按能量或声学变化
重新切分,而是继承 semantic boundary。这一点维持了两个 code stream 的 group-by-group 对齐,也是 decoder
能共用一组 durations 的必要条件。[QH-C-012]
每个 aggregator 不是简单 mean pooling。源码会为每组建立 query:配置开启 mean-pooling initialization, 再把 query token 插到相应 group 的 frame 后,通过 32-layer projected transformer,读取 query position 作为 group representation。acoustic 与 semantic aggregator 参数独立,但接收相同 group topology。聚合后两条 512-D group sequence 各自进入四层 1024-entry RVQ;quantized features 在训练 forward 中又根据 alignment matrix扩回 base grid,用于 waveform reconstruction。[QH-C-010, QH-C-012, QH-C-013]
这解释了为什么 1.5 的 678M codec body 远大于 1.0:新增的不只是一段 cosine grouping,还包括两套很深的 query aggregator 和一个拼接后的 32-layer bottleneck transformer。创新 baseline 若只复制 threshold grouping 却不复制或替代 aggregation capacity,得到的不是同一机制。
duration composite index 与真正的信息量¶
上游 encode 得到 token_lengths = alignment.sum(frame_dim),然后对 acoustic 和 semantic 的四个
codebook 全部应用:
duration ∈ [1,8],plain code ∈ [0,1023],所以 composite index 的数值范围是 [0,8191]。
逆变换用整除与取模:
公式与论文一致,D2 直接调用固定源码对 [3,2,4,8,1,7] 六个 group 执行了精确 round-trip。
[QH-C-014]
但 composite 值需要 13 bits 并不代表每个 group 的独立信息量是 8×13=104 bits。八个 index 中的
duration 是同一个约束变量,恢复信息只需一次 3-bit duration 加八个 10-bit code,即 3+8×10=83 bits。
104 bits 是上游 tensor 的冗余定长表达,不是最小无损表示;83 bits 是 EvoSpeech 的 normalized
representation contract;真实文件还必须另算 header、padding 和容器 bytes。[QH-I-004]
一个真实的 decoder 安全缺口:duration 没有交叉校验¶
固定源码的 _extract_length_from_codes_index 计算了所有 codebook 的 length_id,却只返回
length_id[:,0,:],没有检查其余三个 codebook 是否相同。更危险的是 decode 先从 acoustic stream 提取
token_lengths,下一行又从 semantic stream 提取并覆盖同名变量;最终 acoustic 与 semantic 都按 semantic
第一个 codebook 的 duration 展开。若传输层某个 composite duration 被破坏,上游可能静默接受并在错误时间轴
上查 code,而不是 fail closed。[QH-C-015]
D2 用真实固定方法做了两类 corruption probe:
- 把 semantic 的非首 codebook 某个 duration 加一:上游提取的 duration 完全不变,静默接受;
- 把 semantic 首 codebook某个 duration 加一:它与 acoustic duration 不同,但上游 decode path 会用 semantic duration 覆盖 acoustic duration。
项目 split_injected_codes 则先计算全部 8 个 composite 的 duration,要求四个 acoustic codebook 内一致、
四个 semantic codebook 内一致、两路之间一致、每个 length 在 1–8、总和等于 padding 后 25 Hz frame count;
任一条件失败就拒绝 decode。通过后才去掉冗余 duration,并在 payload 中只保存一份 shared length。
[QH-C-019]
这不是在声称作者模型有可利用的安全漏洞,而是 CandidateContract 的一般原则:neural model tensor API 通常默认输入由自己 encode 产生;一旦把它放入竞技场、文件或网络边界,evaluator 必须补齐 untrusted payload validation。未来原创 codec 的 decoder contract 应从第一天就把 shape、range、cross-stream invariant、duration sum、padding bits 和 artifact identity 写成可测试不变量。
deaggregation 与 source-blind decode¶
严格解析得到 group code 与 lengths 后,1.5 使用
_deaggregate_features_from_token_lengths(grouped_features, token_lengths):逐 batch 对每个 group 做
torch.repeat_interleave,再把不同 batch 的展开序列 pad 到相同长度。D2 真实执行 [3,2,4,8,1,7],
从 B×4×6 精确扩成 B×4×25,每段数值与对应 group 完全一致。[QH-C-016]
随后 acoustic/semantic plain indices 分别进入两套 RVQ get_output_from_indices,拼接后通过 32-layer
bottleneck transformer、与 1.0 同类的 waveform decoder 和 iSTFT。这里 decoder 只需要离散 payload 与
codec checkpoint,不需要 source waveform,也不需要 HuBERT/Wav2Vec2。D2 无语音探针有意只重放 grouping、
duration 与 payload parse,不重新加载 4 GB 模型;实际 fresh-process source-blind audio decode 已由此前
8 English/Chinese/critical smoke 对两个 endpoint 分别证明,并在 trace 中用 hash 绑定其摘要。二者证据不混用:
机制探针证明 invariant,历史 G4 证明完整模型能解码,但都不证明质量。
project payload:representation 与文件 bytes 必须分开¶
HCodec 1.0 的 project payload 用 quantizer-major 顺序保存四个 acoustic + 四个 semantic stream,所有 index 定宽 10 bits;header 绑定 variant、sample count、source revision、codec checkpoint、HuBERT revision/hash、 25 Hz 和 non-streaming contract。reader 验证 magic、header size、全部 identity、frame count、body length、 index range 和 padding bits。[QH-C-018]
HCodec 1.5 的 payload 先保存所有 group length 的 duration-1 三位流,再保存八个 10-bit code 流;header
额外绑定 threshold 0.6、max group 8、base frame count、group count、Wav2Vec2 与 config hash。reader 不信任
header 自报的 representation bits,而是重算 groups×83,再验证 length sum 和各 packed section 的精确
byte count。[QH-C-019]
D2 一秒 deterministic probe 得到:
| endpoint | synthetic topology | normalized representation | packed body | complete project payload |
|---|---|---|---|---|
| HCodec 1.0 | 25 frames | 2,000 bits | 250 bytes | 1,226 bytes |
| HCodec 1.5 | 6 groups covering 25 frames | 498 bits | 63 bytes | 1,342 bytes |
1.5 的 complete file 反而更大,因为当前 audit header 含更多长 revision/hash 字符串;这正好说明“小表示”不等于 “短文件”。header 是审计 transport,不是为短句优化的 production protocol。更重要的是,六组 pattern 是为覆盖 length 1/2/3/4/7/8 而构造,0.498 kbps 绝不是自然语音代表值,也不能与论文平均 1.622 kbps 比质量。 正式 rate 必须在冻结数据集上从实际 group count 测量。
无语音确定性机制探针¶
scripts/trace_quark_hcodec_code.py 在 HCodec 1.5 固定 venv 中执行,不读取/生成 waveform、不加载 codec 或
SSL checkpoint、不运行 ASR,也不运行 PESQ/STOI/UTMOS。它完成四件可重复验证的工作:
- 对 20 个关键源码文件计算 SHA,并确认实际
ResidualVQ安装源码与固定 release 一致; - 构造 25 个二维 unit feature,真实调用 SAM routine,在 threshold 0.6/max 8 下恢复
[3,2,4,8,1,7],再真实调用 repeat-interleave 恢复 25-frame grid; - 真实调用上游 duration inject/extract,并执行两类不一致 corruption;
- 对两个 project payload 写两次、逐 byte 比较,再读回并逐 index 比较。
trace 不含 wall-clock timestamp,--check 会重算所有机制与 hash 后与归档 JSON 做 byte-level comparison。
这使 D2 不依赖“文档说通过”,而是可执行地证明 source map、duration formula、grouping boundary、strict parser
和序列化确定性仍成立。
release-surface gap 账本¶
D2 共冻结 14 类缺口,最影响后续实验的不是“代码风格”,而是身份与可比性:
- wrapper 强制第三方 mirror 且模型 ID 浮动;本项目必须 local-only、revision/hash-bound;
- 1.0 YAML 与 hard-coded graph 不一致;必须以 strict checkpoint load 的真实 graph 为准;
- 1.5 paper WavLM 与 release Wav2Vec2 不一致;只能做 release-faithful 结果;
- author 未定义 bitstream;normalized representation 与 complete payload 必须双报;
- duration 在八个 composite index 中重复;信息量不能按 8×13 粗算;
- upstream duration parser 无跨码本校验;项目 parser 必须 fail closed;
- dynamic threshold 可随机;formal protocol 必须冻结 manual threshold;
- 两篇论文的 1.0 表值不同且无 checkpoint-to-row manifest;不能挑一个最接近的表宣称复现;
- internal data、seed、optimizer state 不公开;训练 exact replay blocked;
- HCodec 2.0/Spatial 没有当前可运行权重;源码存在不等于 endpoint 可测;
- paper parameter 不含 encode-only SSL model;部署成本必须补齐;
- release 没有 per-item evaluation ledger;quick-start 不是 evaluation protocol;
- 1.0/1.5 均 non-causal;不得参加 streaming latency 排名;
- paper-native HuBERT WER 与项目 modern ASR ensemble 是两条证据轨,不能混成一个数字。
完整机器可读内容在 code_map.json 的 release_surface_gaps,这里的摘要用来指导 D3,而不是继续无限
加固。D3 只需要把这些已知事实转成有限协议:哪些 paper claims strict/approximate/blocked,哪些 threshold 合法,
哪些 evaluator 在 RunPod/API 执行。
对原创 baseline 与 Agent 进化的直接启发¶
第一,HCodec 最值得借鉴的不是“大模型堆叠”,而是共享边界、分流量化:用 semantic trajectory 决定哪里 可以少花 temporal step,但让 acoustic representation 继承同一分段,避免两套时间轴的 combinatorial alignment。 原创 baseline 可以先做一个更薄的实验:固定强 decoder/quantizer,只比较 energy boundary、SSL cosine boundary、 learned boundary 与 oracle boundary,在相同 payload bits 下看内容与听感 Pareto,而不是一开始重建 678M 模型。
第二,duration 是一个很小但第一性原理清晰的 side channel。Agent 搜索不能只改 network weights,也应能搜索 “表示合同”:最大 group 长度、boundary hysteresis、duration code、是否允许相邻 group merge、每路 RVQ 深度。 但 evaluator 必须按真正 recoverable information 计费,防止把同一 duration 复制到多个 index 后伪装成免费信息。
第三,semantic encoder 是一个外部 teacher,也可能是最大 encode cost。未来要同时画三张 Pareto:quality–bitrate、 quality–encoder FLOPs/memory、quality–decoder cost。一个 0.5 kbps 表示若需要 315M SSL encoder 和 678M codec 才能生成,未必比稍高码率的小模型适合通信;但它可能是生成模型 tokenization 的优秀 teacher。SOTA-first 不等于 只优化单一 bitrate,而是让最强方法暴露哪些 information bottleneck 真正重要。
第四,release mismatch 本身是 Agent 科研系统的测试题。Agent 不能把 paper text、README、config、checkpoint 视为天然一致;它必须生成“claim → exact source lines → checkpoint shape → executed mechanism”链,并把不一致 作为结构化 observation。否则自动科研只会更快地产生貌似可信的错误表格。
第五,corrupted duration probe 应进入 CandidateContract 的通用 adversarial suite。任何 variable-rate codec 都应 自动测试:side-information missing、out-of-range、cross-stream mismatch、sum mismatch、trailing bits、identity swap。 这些测试成本极低,却能在开始昂贵 GPU benchmark 前阻断不可比较或可作弊实现。
D3/D4 的有限入口¶
D2 通过后,下一步不是直接跑全量,也不是在 Mac 上补 ASR。D3 要在任何正式结果出现前提交:
- runnable scope 只含 HCodec 1.0 release 与 HCodec 1.5 Wav2Vec2 release;2.0/Spatial blocked;
- 1.0 固定 2.0 kbps;1.5 至少固定 author manual threshold 0.6,并预注册有限 threshold curve;
- paper-native evaluation 将每个 metric 按可获得资产分成 strict、approximate 或 blocked;
- paper-native codec WER若执行,使用论文指定
facebook/hubert-large-ls960-ft,且只在 RunPod; - common evaluator 使用项目冻结的现代多语 ASR/speaker/quality 组合,也只在 RunPod/API;
- 两条 WER 轨道分别报告,永不平均;
- adaptive rate 按每句真实 group count × 83 bits 报告,同时保留 complete payload bytes;
- HCodec 1.5 与 1.0 的质量比较必须按 bitrate–quality Pareto 解读,不能因 8 句 transport 平均码率更低就写胜出。
D4 才执行 paper-native author assets/metrics;D5 才执行公共中英共同 benchmark。任何神经 ASR、speaker encoder 或 learned quality evaluator 都不得在本地 Mac 执行。Mac 只保留 source audit、payload、hash、无语音 mechanism probe 与结果审计;RunPod/API 负责 GPU inference。这个边界既响应当前硬件现实,也让云端 runner 成为 可迁移、可重放的正式实验环境。
D2 允许与禁止的结论¶
D2 允许说:我们已把 HCodec 1.0/1.5 的真实 release call path 映射到 20 个 hash-bound source,理解了 acoustic/semantic 双 RVQ、25 Hz/640 hop、Vocos-style decoder、semantic cosine grouping、shared alignment、 query aggregation、duration injection/deaggregation;固定源码的 duration 公式和 SAM boundary 已被无语音探针真实 执行;项目 payload 能 byte-deterministic round-trip,并比上游 tensor API多做跨 8 个 codebook 的 duration 一致性验证;此前两次 G4 已独立证明完整 source-blind audio decode。
D2 不允许说:HCodec 达到论文 PESQ/STOI/UTMOS/WER;1.5 在同质量下优于 1.0;0.498 kbps 是自然语音 工作点;release 的 Wav2Vec2 等价于 paper WavLM;HCodec 2.0/Spatial 可运行;模型是 streaming;任何语言、 speaker、expression 或人耳偏好已验证;以及 QHCODEC 是作者官方 bitstream。
最重要的边界是:“算法已经读懂并能重放关键机制”不等于“论文 evaluation 已复现”。 前者是 D2 的完成 条件,后者必须等 D3 预注册后在 GPU/官方资产上进入 D4/D5。
QuarkAudio HCodec 1.0 / 1.5 复现与交叉验证计划¶
D3 · 论文原生复现协议¶
一句话裁决¶
Quark HCodec 的公开发布足以做一次强的、可审计的 current-release cross-check,但不足以把本地数字叫作 两篇论文表格的严格复现。原因不是“模型跑不起来”,而是作者没有把公开 checkpoint byte identity 映射到 两个论文中数值不同的 HCodec 1.0 行;HCodec 1.5 的论文又写 WavLM,而可运行发布版实际绑定 Wav2Vec2 XLSR。D3 因而冻结三层证据:严格的资产/结构/传输验证、完整公共语音集上的近似交叉验证,以及有明确缺失 资产的 blocked 论文结论。三层永不混写。
D3 本身不运行任何正式质量指标。它只在结果出现前固定 endpoint、数据、阈值、metric identity、统计方法、 失败规则和输出。此前归档的 8 条真实音频只证明 source-blind transport 能工作,不包含 paper-native aggregate, 不能用来调 D3 的容差或选择样本。
两个可运行 endpoint 与两个论文身份¶
HCodec 1.0 固定为官方 QuarkAudio/QuarkAudio-HCodec revision
71541fdcf2bce1e7ade1568d93476a76eda3c495 的 582,195,700-byte checkpoint,并绑定
bosonai/hubert_base@d7a7039...。它是 16 kHz、640-sample hop、25 FPS、四层 acoustic RVQ 加四层
semantic RVQ。每帧八个 10-bit index,因此 normalized representation 是严格的 2,000 bit/s。
HCodec 1.5 固定为 QuarkAudio/HCodec-1.5-adaptive@d055b37... 的 2,747,714,452-byte checkpoint,
manual threshold 只取论文设置 0.6,最大 group length 为 8。可运行实现加载
facebook/wav2vec2-large-xlsr-53@c3f9d88... 的第 11/14/16 层;论文写的却是
microsoft/wavlm-base-plus。所以 D4 能严格验证“公开发布版身份与行为”,但它的质量结果必须标为
release-faithful approximate,不能标为 paper-identical。
两个 endpoint 也不能替代 HCodec 2.0。2.0 是 48 kHz、6.25 FPS、16+16 RVQ 的另一张图;冻结仓库没有 weight。只要正式权重未出现,所有 2.0 数字都保留为 author result / blocked。
官方 source archive 里真正存在的三份评测清单¶
D2 之后对固定 source archive 的评测面继续审计,发现作者不是只写了 dataset family 名:代码中包含三份
.scp 清单。
librispeech_test_clean.scp:2,620 行,ID 与 OpenSLR test-clean 完整对应;去掉作者机器绝对路径后可移植。musdb18hq_test_one_dir.scp:250 行,即 50 个 test track 的 mixture 与四个 stems;身份有用,但音频许可、 waveform bytes 和 paper preprocessing 没有随源码冻结。audioset_eval.scp:17,141 个 YouTube ID;它记录作者当时拿到的集合,却无法保证今天重新下载得到同一段 waveform,失效视频也会改变分母。
因此 D4 对 LibriSpeech 使用完整 2,620 条,而不是再抽一个方便的 100/300 条子集。MUSDB/AudioSet 在本轮只 严格验证清单 hash 和 blocker,不烧 GPU 生成一个不可与论文同义的“新 Table 3/4”。这既提高英文复现强度, 也避免用不完整媒体伪造严格复现。
Track A · author-native English 与 bilingual speech¶
author-native speech track 同时保留英文与中英文公共评测:
- LibriSpeech test-clean:完整 2,620 条,来自 SHA-256 为
39fde525...的 OpenSLR archive;现有全量逐文件 manifest 已有 2,620 个音频 hash 和 transcript。 - SEED-EN standard:使用
BytedanceSpeech/seed-tts-eval@752f429...官方 archive 中en/meta.lst的 每个合法 target waveform,不抽样。作者 README 描述为约 1,000 条;当前公共镜像显示 1,088 行,只作 preflight diagnostic,不预先冒充官方 archive 的精确行数。 - SEED-ZH standard:同一固定官方 archive 中
zh/meta.lst的每个合法 target waveform;作者描述为约 2,000 条,公共镜像显示 2,020 行; 不混入 400 条 hardcase,也不把中文和英文压成一个“总体冠军”。
SEED archive 要在 D4 RunPod preflight 下载并记录 authoritative meta 行数、archive、meta 和每个 waveform hash。最终选择规则始终是“全部合法 target row”,不依赖 1,088/2,020 这个二手镜像诊断数;但若任何已声明 row 缺 target path、文件或可读 waveform,D4 必须先停下来给出 typed blocker,不能悄悄删掉坏行继续算平均。 这同时防止作者约数与便利镜像精确数被混写成同一种证据。
每条数据对 HCodec 1.0 与 HCodec 1.5 threshold 0.6 各执行一次真实 encode、项目 payload 序列化、fresh-process decode。每个 endpoint × item 必须恰好有一行 passed 或 typed failure。失败行留在声明分母中;报告同时显示 成功数与失败数,禁止只对成功样本给一个看似漂亮的均值。
Track B · paper metrics 与 modern common evaluators 分轨¶
paper-native metric 只回答“当前公开 endpoint 在作者的评测语义附近是什么表现”:PESQ-WB、STOI、UTMOS、 HuBERT WER、WavLM speaker similarity,以及论文明确到足以实现时的 Mel/STFT loss。它不回答“2026 年最强 ASR 怎样判断内容”。
paper WER 固定 facebook/hubert-large-ls960-ft@ece5fabb...。该模型不是 Whisper、SenseVoice,也不是
项目未来的 SOTA panel。它只在 LibriSpeech 上跑一次,用固定 uppercase/apostrophe/whitespace normalization
算 corpus micro WER。由于论文没有公开精确 revision、decoder 和 normalization build,这个数字仍是
approximate paper-native,而不是严格二进制复现。
speaker track 优先使用 SEED 官方 evaluator commit 与其引用的 WavLM-large fine-tuned checkpoint。D4 必须先
记录 Google Drive asset 的 bytes/hash 和实际 embedding/pooling call path;拿不到就 blocked,不能静默切换。
microsoft/wavlm-base-plus-sv@feb593a... 只允许作明确标记的 diagnostic fallback,绝不冒充论文 SPK-SIM。
未来 D5 的 Qwen/FunASR/Parakeet 或版本化 SOTA API 是 modern common evaluator,只用于跨 codec 公平排名。 它有自己的模型 revision、语言覆盖和成本账本;paper HuBERT WER 与 modern WER/CER 分列、从不平均、从不互相 回填。这也解释了为什么项目可能保留一个较旧 HuBERT:不是因为它最准,而是为了复核论文口径。
HCodec 1.5 的 threshold 与 rate accounting¶
1.5 的每个 adaptive group 存八个 10-bit code index,加一个共享 3-bit duration,总计 83 normalized bits。
因此数据集平均 BPS 必须由 83 × total_groups / total_valid_seconds 计算。作者在 LibriSpeech 报告 19.54 FPS,
乘 83 等于 1,621.82 bit/s,正好解释表中 1,622 BPS;这比把八个 composite integer 都按 13 bits 重复计算
更忠于其可恢复信息量。
但是 normalized representation 不是网络包。D4 同时输出 group FPS、normalized bit/s、项目 payload bytes 和 project payload bit/s。JSON/header/length 等开销不能藏进 nominal BPS,也不能反过来用短文件容器开销否定 representation capacity。
paper-native D4 只跑 0.6。未来 D5 common curve 已在结果前冻结为 0.4、0.6、0.8,再加 HCodec 1.0 固定 anchor。 禁止看见结果后插入 0.55 或删除难看的端点。若某 threshold 失败,保留失败而不是改变搜索域。
哪些 paper claims 可以严格验证¶
严格验证的对象很有限但有价值:source archive 与十个关键 member 的 bytes/hash;三份 .scp 的行数和身份;
四个 codec/SSL checkpoint 资产;HCodec 1.0 q4+q4 和 HCodec 1.5 release graph;阈值 0.6;fresh-process
source-blind decode;1.0 的 2,000 bit/s arithmetic;1.5 的 83 bits/group arithmetic;以及每个 declared item
是否得到完整 ledger。
这些 passed 说明我们测的是哪个程序、哪个模型、哪个样本、哪个 representation,不说明音质达到论文表格。 结构验证和 headline quality 必须在报告中用不同 verdict class。
哪些 headline table 只能 approximate¶
Quark Table 2/3 的 HCodec 1.0 与 1.5 公共 speech 数字可以做描述性交叉验证:本地 mean、95% bootstrap CI、 作者 point、作者 point 是否落入 CI。可是 overlap 不是“复现通过”,non-overlap 也不是“论文错误”。前者可能 来自同一能力区间,后者可能来自 checkpoint、WavLM/Wav2Vec2、PESQ build、UTMOS asset 或文本 normalization 差异。
PESQ-WB、STOI 和 current UTMOS 都固定实现/asset 并保留 platform identity。UTMOS 仍是神经 MOS predictor, 不是人耳。paper-time binary 未公开,所以这些数值统一标 approximate 或 approximate-platform-conditioned。
哪些结果在执行前已经 blocked¶
UniTok Table 2 严格复现被 checkpoint-to-row mapping、exact metric build 与 per-item ledger 阻塞。UniTok Table 3 与 Quark Table 4 的 multidomain 严格复现还缺 paper-time MUSDB/AudioSet waveform bytes 和 preprocessing。 HCodec 2.0 Tables 2–5 缺权重与 stage-one/stage-two checkpoint。训练 regeneration 缺数百万小时 internal data、 sample manifest、seed、optimizer state 和完整 run logs。主观质量缺 stimuli、listener assignment、raw votes、 设备、筛选与 CI code。
blocked 的含义是“现有公开证据不能执行同一实验”,不是作者值错误,也不是项目必须无限等待。D4 报告会保留 author value 与 blocker,继续完成可执行的 current-release evidence。
统计、失败和 author delta 规则¶
bounded per-item metric 报 macro mean;WER 报整个 corpus 的 micro edit counts;rate 用总 groups/总 duration。
LibriSpeech bootstrap 按 speaker cluster,SEED 若能从官方 meta 恢复 prompt speaker 则同样 cluster,否则使用
item bootstrap并写明局限。所有 CI 固定 seed 20260722、10,000 次 percentile bootstrap。
不预设一个“离论文 ±x% 就算通过”的便利容差,因为模型与 evaluator identity 并不相同。author delta 是 descriptive field。任何 NaN、OOM、decode mismatch、短音频 PESQ 失败、缺失 transcript 或 asset mismatch 都是 typed failure;报告必须显示分母与失败率。只有资产/结构/算术项有严格 passed/failed。
RunPod-only 神经评估与本地禁令¶
本地 Mac 只允许源码阅读、hash、manifest join、JSON/schema test、非神经算术和报告生成。以下工作一律禁止在 本地执行:HuBERT/Whisper/SenseVoice/任何 ASR inference、WavLM speaker encoder、UTMOS 或其他 learned judge、 全量正式 codec decode。它们只在 RunPod CUDA 或未来协议明确允许的 versioned API 上执行。
paper HuBERT 和 paper WavLM 必须在 RunPod,因为这既避免 Mac 的数小时浪费,也把 GPU/driver/library identity 收进证据。SOTA API 不能代跑 paper-native HuBERT;它只能在 D5 common track 新增独立列。RunPod 仍遵守一张 pod 上限、持久 volume、硬性预算和结果验证后删除 exact pod 的规则。
D4 的固定输出¶
D4 至少导出:aggregate/result JSON、每 item × endpoint ledger、human-readable report、完整 run log、全量 dataset manifest、endpoint identity、metric identity 和 RunPod runtime/cost identity。所有文件互相记录 SHA-256;报告 生成器只读取机器账本,不人工复制数字。
执行顺序固定为:asset preflight → dataset closure/hash → endpoint smoke/source-blind decode → full reconstruction → non-neural metrics → RunPod neural metrics → aggregate/bootstrap → claim-matrix verdict → 本地 schema/audit。任何 asset identity 失败只停止受影响轨道,不允许用别的 checkpoint 或样本悄悄顶替。
D3 允许与禁止的结论¶
D3 允许说:协议已在正式结果前冻结;两个公开 endpoint、三个完整 speech set、三份 author source list、metric identity、0.6 paper threshold、0.4/0.6/0.8 future curve、rate accounting、统计和 RunPod-only policy 已明确;严格、 approximate、blocked 的边界已经写进机器可读 claim matrix。
D3 禁止说:任何 D4 metric 已运行;HCodec 达到或未达到论文质量;作者 point 被复现或推翻;HCodec 1.5 paper identity 等于公开 Wav2Vec2 release;UTMOS 等于听感;HuBERT 是当前最强 ASR;英文结果能代表中文;2.0 可以用 1.0/1.5 代替;或本地 Mac 允许“只试几条”ASR。下一步只有在本 D3 commit 推送后,才可以准备并启动 RunPod D4。