跳转至

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]

  1. 用相邻 semantic feature 的相似度发现可合并片段;
  2. 把片段持续长度写入离散索引,使 decoder 能恢复原始时间网格;
  3. 用 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,论文定义:

c'_i = (d_i - 1) × K + c_i
d_i  = floor(c'_i / K) + 1

因此 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/sbits/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 最重要的审计结果。

  1. 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]
  2. 同名 1.0 的训练身份不唯一。 早期论文和后续报告的数据规模、Table 2 数字不同,而 v1 权重文件名是 weights_small_data_20wh.pt。没有 author manifest 把它唯一对应到某张表。 [QH-I-003]
  3. 2.0 有 README 和源码,没有权重。 模型卡写了 quick start,但固定 HF tree 无模型文件; 不能因为代码可 import 就伪造 checkpoint identity。[QH-B-003, QH-I-006]
  4. Spatial 是家族 release,不是当前论文表的 model point。 README 宣布 stereo 与 mono-to-stereo spatialization,但当前没有冻结可执行权重,也不属于 Tables 2–5。[QH-B-004]
  5. 上游没有 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. 把时间步率和表示码率分开优化。 1.5 证明语言模型计算更关心 frame/group rate,而传输 更关心 bits/s;二者相关但不等价。Agent fitness 至少要同时保留 groups/s、representation bps、payload bps 与质量。
  2. 让语义决定时间压缩,让声学决定重建。 语音中长元音、稳定谐波或静音可以共享时间段, 爆破音、辅音边界、数字和实体附近需要更密。比固定 hop 更接近“最小充分表示”。
  3. duration 是必须付费的 side information。 动态 tokenization 若不计分段长度,会制造虚假 低码率。我们的 83 bits/group 规则应进入 CandidateContract。
  4. 大 decoder 可以作为能力教师。 2.0 的 stage-2 表明固定 representation 后,单独改善 decoder 仍可提升质量。先研究强 decoder 学会了什么,再蒸馏到小 decoder,比只搜 low-bit vocoder 更可能 产生第一性原理发现。
  5. 语义辅助模型必须计成本并审计 domain。 frozen SSL encoder 可能让 token 更有内容,但 WavLM/Wav2Vec2/HuBERT 的选择本身会改变语言、speaker 与 general-audio bias。
  6. 多语言排序不是英文排序的复制。 LibriSpeech 与 SEED-ZH/EN 的 1.0/1.5相对表现不同, 因此中文轨不是“英语跑完后随便抽几句”。
  7. 自动科研需要机制级对照。 最有价值的实验不是无约束改全模型,而是固定 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 / commit 9d2594b…。HCodec 1.0、1.5 的 codec、SSL checkpoint 仍沿用 D0 的逐文件 SHA-256 身份。

D2 · 固定源码核心代码深读

一句话机制模型

HCodec 不是“一个 acoustic codec 再加一项 semantic loss”,而是两条并行、同一时间网格的表示链:

  1. waveform 经非因果 SEANet 风格 encoder 变成 acoustic feature;
  2. 同一 waveform 经冻结 SSL model,再经小型 semantic encoder 变成 semantic feature;
  3. 两条 feature 各自进入四层 RVQ,得到四个 acoustic index 与四个 semantic index;
  4. decoder 分别查回两个 RVQ embedding sum,拼成 1024 channel,再预测复数谱并 iSTFT;
  5. 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,但实际 Codecvector_quantize_pytorch 导入 ResidualVQ。所以只读仓库内 local RVQ 会读错算法;D2 额外固定 PyPI sdist hash、Git tag commit,并验证安装文件与该 commit 的 residual_vq.py SHA 完全相同。[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:

compressed(x) = sign(x) · |x|^0.3

压缩后的 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:

r_0 = x
q_i = VQ_i(r_i)
r_(i+1) = r_i - stop_gradient(q_i)
q_total = Σ q_i

实际依赖在 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,定长信息量是:

25 frame/s × (4 acoustic + 4 semantic) × log2(1024)
= 25 × 8 × 10
= 2,000 bit/s

论文里的 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:

sim_t = cosine(h_t, h_(t+1))
boundary_(t+1) = (sim_t <= threshold)

注意比较符号是 <=:只有连续相似度严格高于 threshold 的 frame 才会保留在同一 group。然后算法追踪 frame 在当前 semantic segment 内的 offset,每到第 8 个 frame 强制切分,最后 scatter 出 B×G×T alignment matrix。固定 inference config 给出 manual_threshold=0.6max_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 全部应用:

composite = (duration - 1) × 1024 + plain_code

duration ∈ [1,8],plain code ∈ [0,1023],所以 composite index 的数值范围是 [0,8191]。 逆变换用整除与取模:

duration = floor(composite / 1024) + 1
plain_code = composite mod 1024

公式与论文一致,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。它完成四件可重复验证的工作:

  1. 对 20 个关键源码文件计算 SHA,并确认实际 ResidualVQ 安装源码与固定 release 一致;
  2. 构造 25 个二维 unit feature,真实调用 SAM routine,在 threshold 0.6/max 8 下恢复 [3,2,4,8,1,7],再真实调用 repeat-interleave 恢复 25-frame grid;
  3. 真实调用上游 duration inject/extract,并执行两类不一致 corruption;
  4. 对两个 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 类缺口,最影响后续实验的不是“代码风格”,而是身份与可比性:

  1. wrapper 强制第三方 mirror 且模型 ID 浮动;本项目必须 local-only、revision/hash-bound;
  2. 1.0 YAML 与 hard-coded graph 不一致;必须以 strict checkpoint load 的真实 graph 为准;
  3. 1.5 paper WavLM 与 release Wav2Vec2 不一致;只能做 release-faithful 结果;
  4. author 未定义 bitstream;normalized representation 与 complete payload 必须双报;
  5. duration 在八个 composite index 中重复;信息量不能按 8×13 粗算;
  6. upstream duration parser 无跨码本校验;项目 parser 必须 fail closed;
  7. dynamic threshold 可随机;formal protocol 必须冻结 manual threshold;
  8. 两篇论文的 1.0 表值不同且无 checkpoint-to-row manifest;不能挑一个最接近的表宣称复现;
  9. internal data、seed、optimizer state 不公开;训练 exact replay blocked;
  10. HCodec 2.0/Spatial 没有当前可运行权重;源码存在不等于 endpoint 可测;
  11. paper parameter 不含 encode-only SSL model;部署成本必须补齐;
  12. release 没有 per-item evaluation ledger;quick-start 不是 evaluation protocol;
  13. 1.0/1.5 均 non-causal;不得参加 streaming latency 排名;
  14. paper-native HuBERT WER 与项目 modern ASR ensemble 是两条证据轨,不能混成一个数字。

完整机器可读内容在 code_map.jsonrelease_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。

flowchart LR W["16 kHz mono waveform\nfull utterance; non-causal"] P["pad to 640 samples\n25 Hz base grid"] SSL10["HCodec 1.0 SSL\nHuBERT all-layer mean"] SSL15["HCodec 1.5 release SSL\nWav2Vec2 XLSR layers 11/14/16\npaper says WavLM"] AE["SEANet acoustic encoder\n320 × stride-2 = hop 640"] SE["semantic encoder\nSSL grid → 512-D / 25 Hz"] subgraph H10["HCodec 1.0 · fixed 25 Hz"] AQ10["Acoustic RVQ q4\n1024 entries × 512-D"] SQ10["Semantic RVQ q4\n1024 entries × 512-D"] B10["8 × 10 bits/frame\n2,000 representation bit/s"] end subgraph H15["HCodec 1.5 · adaptive frame rate"] SAM["SAM cosine boundary\nthreshold 0.6; max group 8"] SQA["shared alignment matrix"] AGGA["acoustic QueryTokenAggregator\n32 local-attention layers"] AGGS["semantic QueryTokenAggregator\n32 local-attention layers"] AQ15["Acoustic RVQ q4"] SQ15["Semantic RVQ q4"] DUR["duration composite index\n(length-1)×1024+code"] B15["normalized 83 bits/group\n8×10-bit codes + shared 3-bit duration"] end PAY10["project QHCODEC 1.0 payload\nsource/checkpoint identity + packed codes"] PAY15["project QHCODEC 1.5 payload\nstrict 8-codebook duration validation"] DEQ10["RVQ embedding sums"] DEQ15["repeat-interleave by validated duration\nback to 25 Hz"] CAT["concatenate acoustic + semantic\n1024 channels"] BT["HCodec 1.5 bottleneck transformer\n32 layers; non-causal"] DEC["ConvTranspose ×2 + residual/Transformer\n+ 12 ConvNeXt blocks"] ISTFT["Vocos-style ISTFT head\n320-sample spectral hop"] OUT["16 kHz reconstructed waveform"] BLIND["source-blind decoder\nsees payload + fixed decoder weights only"] W --> P P --> AE P --> SSL10 --> SE P --> SSL15 --> SE AE --> AQ10 --> B10 --> PAY10 SE --> SQ10 --> B10 SE --> SAM --> SQA SQA --> AGGA SQA --> AGGS AE --> AGGA --> AQ15 --> DUR --> B15 --> PAY15 SE --> AGGS --> SQ15 --> DUR PAY10 --> BLIND --> DEQ10 --> CAT PAY15 --> BLIND --> DEQ15 --> CAT CAT --> BT --> DEC --> ISTFT --> OUT PAPER["paper-native metrics\nHuBERT WER; WavLM SPK-SIM"] COMMON["EvoSpeech common evaluator\nRunPod/API only; no local ASR"] OUT -. "D3+ only" .-> PAPER OUT -. "D5 only" .-> COMMON

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 同时保留英文与中英文公共评测:

  1. LibriSpeech test-clean:完整 2,620 条,来自 SHA-256 为 39fde525... 的 OpenSLR archive;现有全量逐文件 manifest 已有 2,620 个音频 hash 和 transcript。
  2. SEED-EN standard:使用 BytedanceSpeech/seed-tts-eval@752f429... 官方 archive 中 en/meta.lst 的 每个合法 target waveform,不抽样。作者 README 描述为约 1,000 条;当前公共镜像显示 1,088 行,只作 preflight diagnostic,不预先冒充官方 archive 的精确行数。
  3. 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。