跳转至

WavTokenizer · small speech 40 + large unified 40 · 可审计模型档案

当前结论:D0–D5 passed;下一步是 D0-D5 benchmark complete; D6 is selective and the active research line moves to the Batch A cross-model Pareto audit。 每个 Gate 只建立该 Gate 明示的证据;D5 passed 表示冻结共同 benchmark 已完整归档和审计,不表示存在全局赢家或 D6/D7 已完成。 D0 只证明身份、来源和本地 artifact 一致;后续 Gate 的通过不会反向扩大 D0 的证据边界。

Gate 状态

Gate 状态
D0 passed
D1 passed
D2 passed
D3 passed
D4 passed
D5 passed
D6 not_started
D7 not_started

D0 · 身份、标准与本地 artifact

项目 冻结身份
主论文/规范/资料 WavTokenizer: an Efficient Acoustic Discrete Codec Tokenizer for Audio Language Modeling · ICLR2025-yBlVlS2Fd9 / arXiv:2408.16532
规范更新
官方实现 https://github.com/jishengpeng/WavTokenizer · commit-pinned camera-ready snapshot / 5cf440d91ac4
本地环境 Darwin 26.5 · arm64 · Apple M5
学习参数/模型状态 80913988 / 340459156 bytes(two official external checkpoints)
已冻结运行 artifact 9 个,共 3,348,335,099 bytes
当前公共点 0.48 kbps · application=public English and Mandarin speech benchmark · signal hint=large-unified 24 kHz endpoint trained by the authors for speech, audio and music · fixed one-codebook, 4096-entry, 600-sample-hop representation: 40 × 12 = 480 nominal representation bps · 25 ms

冻结范围与明确排除

  • 论文/规范家族:24 kHz speech, audio and music reconstruction with separately trained 40-token/s and 75-token/s endpoints;
  • 本地选择端点:official small-speech 40-token/s and large-unified 40-token/s checkpoints; large-unified is the planned common-benchmark point;
  • 不纳入当前身份:

    • the official large-speech 75-token/s checkpoint, whose identity is frozen but whose 320-sample-hop artifact is not installed or evaluated by D0
    • claims that 40-token/s and 75-token/s are a clean runtime rate knob on one fixed checkpoint; they are separately trained endpoints
    • the full 1.59-1.76 GB Lightning checkpoint size as an inference parameter count; each selected checkpoint filters to the same 80,913,988-parameter inference graph
    • quality or SOTA conclusions from the existing transport smoke evidence
    • an official network bitstream or file format; the repository exposes tensor codes, while EvoSpeech's EVSWAV01 wrapper is project-owned

Primary-source manifest

ID 作用 bytes SHA-256
WAVTOKENIZER_ICLR2025_PDF peer-reviewed primary method and evaluation source 548,216 934366c66e66ca9d87608c6b1bde1b60a4bb35c728f02a00d1b7e0eb24a73d57
WAVTOKENIZER_RELEASE_README official model matrix, inference example and checkpoint-domain boundary 6,780 819196227c35a4aef37235bbd91a54c09e9251011ded3ec3649b1e9e68a22f0b
WAVTOKENIZER_RELEASE_LICENSE fixed-source code license evidence 1,068 7378a5e75f725b4eeda55a0810de62bc66e713cb7f6e85379968cd70e3c829b2
WAVTOKENIZER_RELEASE_LOADER release-exact checkpoint filtering and waveform-code-waveform inference path 9,899 39211cc4dac15514bb6711c8f13740afb17c9f4f9d7b43fca04b8d2d6604abd3
WAVTOKENIZER_RELEASE_FEATURE_EXTRACTOR release-exact encoder and single-codebook quantizer construction 6,092 cc98a6641f3070a1d53f83957499a4b8b3b35a0cea63d969d2c49ac687deddc2
WAVTOKENIZER_RELEASE_40_CONFIG release-exact 24 kHz, hop-600, one-quantizer, 4096-entry inference graph 2,777 69761de5709e0114f0819bbcf8447e30439a43f4f69ffce55b35197070fdc371

Source releases and licenses

Artifact revision bytes SHA-256 license
WavTokenizer-5cf440d.tar.gz 5cf440d91ac420ca338f117b7003a77450d64730 414,119 f3dd248f61038bfd3b3f9de3bb3c49eebd127b31f96f6b704bc71023f725f136 MIT from fixed source LICENSE
WavTokenizer_small_600_24k_4096.ckpt novateur/WavTokenizer@917d513b3162144a78642448d3bb0516d1f51ed2 1,589,082,492 d44c40fbb83d2d42329ac098e252a31b5708fb7b3bf864d108dd3ed26911d004 Hugging Face model card declares MIT; checkpoint has no embedded standalone license
wavtokenizer_large_unify_600_24k.ckpt novateur/WavTokenizer-large-unify-40token@7dc47a9450ce71cab736434b7645604013ca028b 1,759,224,573 72182c1b6bd5ea7f84cf3ec78a0a3244cf42daa660b2e9bce23f5d74064d8205 Hugging Face model card declares MIT; checkpoint has no embedded standalone license
wavtokenizer_large_speech_320_v2.ckpt novateur/WavTokenizer-large-speech-75token@f0eafde4078a49b3875d79d33632a252dcd02f60 1,754,880,893 5dd430d5f0d96e2313babb1b896d0f990b65bfd143b2894fc3851cfc3cca9846 Hugging Face model card declares MIT; identity frozen but artifact not locally installed

Installed encoder/decoder identity

Artifact bytes SHA-256 resolved path
small_speech_40_checkpoint 1,589,082,492 d44c40fbb83d2d42329ac098e252a31b5708fb7b3bf864d108dd3ed26911d004 .model-envs/wavtokenizer/checkpoint/WavTokenizer_small_600_24k_4096.ckpt
large_unified_40_checkpoint 1,759,224,573 72182c1b6bd5ea7f84cf3ec78a0a3244cf42daa660b2e9bce23f5d74064d8205 .model-envs/wavtokenizer/checkpoint-large-unified/wavtokenizer_large_unify_600_24k.ckpt
fixed_wavtokenizer_release_readme 6,780 819196227c35a4aef37235bbd91a54c09e9251011ded3ec3649b1e9e68a22f0b .model-envs/wavtokenizer/source/README.md
fixed_wavtokenizer_release_license 1,068 7378a5e75f725b4eeda55a0810de62bc66e713cb7f6e85379968cd70e3c829b2 .model-envs/wavtokenizer/source/LICENSE
fixed_wavtokenizer_release_loader 9,899 39211cc4dac15514bb6711c8f13740afb17c9f4f9d7b43fca04b8d2d6604abd3 .model-envs/wavtokenizer/source/decoder/pretrained.py
fixed_wavtokenizer_release_feature_extractor 6,092 cc98a6641f3070a1d53f83957499a4b8b3b35a0cea63d969d2c49ac687deddc2 .model-envs/wavtokenizer/source/decoder/feature_extractors.py
fixed_wavtokenizer_release_40_config 2,777 69761de5709e0114f0819bbcf8447e30439a43f4f69ffce55b35197070fdc371 .model-envs/wavtokenizer/source/configs/wavtokenizer_smalldata_frame40_3s_nq1_code4096_dim512_kmeans200_attn.yaml
small_environment_lock 708 b397b2f39d99385c776b47b24afe9862794b2dd95706537bc595ad15a3b7dbbf environments/wavtokenizer-small-native-v1.txt
large_unified_environment_lock 710 3792dbd97bff7cacb6d23c3a0f7aaf4ceb108121054f69a3957e6ba59dc46ac9 environments/wavtokenizer-large-unified-native-v1.txt

表示与计账边界

  • codec 表示:one 12-bit index from a 4096-entry codebook every 25 ms; the exact nominal 40-token representation is 480 bps before duration padding;
  • 当前存储/传输 artifact:EvoSpeech EVSWAV01 self-describing wrapper with packed 12-bit tokens; this is an independently decodable project audit artifact, not an author-defined network container;
  • 分账规则:token representation bits, complete EVSWAV01 bytes, checkpoint/artifact bytes and runtime resources remain separately reported; the paper's rounded 0.5 kbps label is not substituted for exact 480 bps;
  • source-blind decoder:true
  • 不能由 D0 推出的结论:deep algorithmic understanding or paper-to-code correspondence;reproduction of any objective, subjective, semantic, VQ-utilization, generation or ablation result;numerical comparability between the 40-token and 75-token endpoints as if they differed only by rate;quality, intelligibility, identity, expression, latency, streaming or Pareto superiority;an official author-defined compressed file or network bitstream;training-data or checkpoint-license facts beyond what the fixed paper, README and model cards state。

D1 · 论文深读与证据边界

D1 结论:passed。 本章逐页阅读并视觉检查了 ICLR 2025 camera-ready 的 18 页、 Figures 1–2、Tables 1–12 与附录 A–I,并审计了固定 commit 的 README、40/75-token 配置、训练/验证模块和公开 metric 脚本。D1 说明我们已经知道作者提出什么、怎样训练、怎样 评测、哪些数字互相矛盾,以及公开资产缺什么;它不表示当前 checkpoint 已复现任何论文数字。

一句话心智模型

WavTokenizer 不是把一个常规 RVQ codec 的码率再往下拧,而是把原来分布在多个 RVQ 层、每秒 数百个 token 的表示,强行压进单码本、每秒 40 或 75 个 token 的一条序列,然后把重建难题 主要交给一个更强的上下文 decoder。它依靠四个互相配合的手段维持质量:更大的 VQ 词表和 k-means/EMA/random-awakening 保住码本利用率;三秒上下文与 decoder attention 利用较长语义; ConvNeXt/Vocos 风格 backbone 加 ISTFT 直接合成幅度和相位;多种 waveform/STFT discriminator 把有限 token 中的信息逼成更自然的音频。[WVT-P-002–WVT-P-018]

这项工作的第一性原理价值在于:audio language model 的成本不仅由 kbps 决定,还由 token 序列长度和并行码本层数决定。 即使两个表示的 nominal bits 接近,1 × 75 的单流 token 与 8 × 75 的多层 RVQ 对 autoregressive model 是完全不同的计算图。WavTokenizer 优先缩短并 串行化“语言模型要处理的离散序列”,而不是首先设计网络传输容器。[WVT-P-001, WVT-I-001]

论文到底解决什么

常规 EnCodec/SoundStream/DAC 路线使用 encoder → 多层 RVQ → decoder。多个 quantizer 逐层编码 残差,重建能力强,但 downstream generator 必须同时处理时间轴和码本轴:VALL-E 要 AR/NAR 两阶段,SoundStorm 做并行生成,MusicGen 使用延迟 pattern。作者认为单 quantizer 能让 audio token 像文本 token 一样直接进入普通 autoregressive LM;同时将 24 kHz 音频从每秒 24,000 个 采样降到 40/75 个离散符号,显著减少序列长度。[WVT-P-001–WVT-P-004]

这里必须分清三个量:

  1. token/s 是 LM 序列长度;
  2. token/s × log2(vocabulary) 是未熵编码的 nominal representation rate;
  3. 文件、网络 bitstream 和 checkpoint 是另外三种字节账。

论文主模型使用 4096-entry codebook,所以 40 token/s 精确是 40 × 12 = 480 bps,paper/图表 四舍五入写成 0.5 kbps;75 token/s 精确是 900 bps。公开仓库只返回 tensor code,没有作者定义的 压缩文件或网络 framing。因而 WavTokenizer 的“0.5 kbps”是 representation capacity,不是短文件 落盘大小,更不包含 340 MB inference state。[WVT-I-001, WVT-I-002]

40 和 75 也不是同一 checkpoint 上的公平 rate knob。论文给出两组 encoder stride: (4,5,5,6) 的乘积为 600,对应 40 Hz;(2,4,5,8) 的乘积为 320,对应 75 Hz。README 发布的 model matrix 同样把它们列成不同 checkpoints。比较 40/75 的结果可以研究两个完整系统,但不能 把差异全部归因于“多发了 35 个 token”。[WVT-P-004, WVT-S-001, WVT-I-003]

方法:把 RVQ 的“深度”压成单流

1. Encoder 保守,瓶颈激进

Encoder 基本沿用 EnCodec:kernel-7 一维卷积起始;四个 residual/downsampling block;每次下采样 时通道翻倍;两层 LSTM 建模序列;最后 kernel-7 卷积输出 512 维 latent。C=32、B=4、D=512, 非线性为 ELU。论文的创新重点并不在 encoder,而在把 latent 量化成一个码本和随后如何解码。 [WVT-P-003, WVT-P-004]

2. 大码本不是越大越好

作者先把词表从 2^10 扩到 2^14,在 LibriTTS test-clean 上发现使用概率仍集中在前 2^12 附近。为避免大词表中大量 dead codes,训练用 200-center k-means 初始化,EMA decay=0.99 更新; 连续若干 batch 未命中的 code 用当前 batch 的输入向量随机替换,作者称 random awakening / forced activation。[WVT-P-005–WVT-P-008]

Table 5 展示的是典型 bias–capacity 权衡:1024 entries 利用率 100%,但 UTMOS/PESQ/STOI 只有 3.4967/1.7781/0.8660;4096 entries 仍为 100% 利用率,达到 4.0486/2.3730/0.9139;8192 entries 利用率降到 68%,指标没有进一步提高;16384 entries 只用 27%。因此真正值得带入 EvoSpeech 的 不是“无脑放大 vocabulary”,而是搜索有效容量:词表大小、使用熵、dead-code 恢复与 decoder 能力必须一起报告。[WVT-A-009, WVT-I-008]

论文正文在这里有一个明确算术错误:它说从 1024 到 4096 的 STOI gain 是 0.5,Table 5 的真实 差值是 0.9139 − 0.8660 = 0.0479。UTMOS gain 约 0.552、PESQ gain 约 0.595,只有 STOI 多写了 一个数量级。我们的 claim ledger 保留表格值,并把正文描述标成内部矛盾。[WVT-I-006]

方法:decoder 为什么是主角

1. 不用镜像上采样,直接预测频域

高度压缩后,decoder 必须从每 13.3/25 ms 一个 token 恢复相位、瞬态和高频。作者认为标准 transposed-convolution 镜像 decoder 容易产生 aliasing,转而沿用 Vocos:保持时间分辨率,用 ConvNeXt/context backbone 输出每帧的 magnitude 与 phase 参数,再通过单边频谱和 ISTFT 直接 恢复 waveform。40-token 配置的公开 graph 使用 12 层 VocosBackbone、hidden dim 768、 intermediate dim 2304、n_fft 2400、hop 600。[WVT-P-009–WVT-P-012]

Table 7 是这篇论文最值得学习的消融。完整模型 UTMOS 4.0486;换回 mirror decoder 后跌到 2.7782,比移除 attention(3.6020)或移除 MSTFTD(3.7806)更严重。它说明在极端 token bottleneck 下,强 decoder 不是锦上添花,而是决定表示能否被使用的另一半。[WVT-A-011–WVT-A-013]

2. Attention 放 decoder,不放 encoder

作者实验 encoder、decoder 或两者加入 attention,最终只在 decoder 的 ConvNeXt 前加入 attention。 训练 clip 从常见的一秒扩到三秒;Table 6 中 1/3/5 秒的 UTMOS 为 3.7448/4.0486/4.0448,三秒是 甜点位。Appendix Table 9 还报告移除 attention 和 extended window 后,ARCH 的 RAVDESS/SLURP/ EMOVO/AudioMNIST accuracy 从 0.3255/0.0802/0.3163/0.6957 降到 0.2614/0.0643/0.2368/0.6192。[WVT-P-010, WVT-A-010, WVT-A-015]

这不能证明 decoder attention “理解语义”。ARCH 测到的是冻结 representation 对下游分类的可用性; attention 位于 decoder,而离散 code 来自 encoder/quantizer。更谨慎的解释是:更强 reconstruction objective 和长上下文训练可能迫使上游 code 保留对这些任务有用的信息。因果路径仍需 D2 的代码图 和未来受控训练消融验证。[WVT-I-009]

3. 三组 discriminator 补不同盲区

训练同时使用 HiFi-GAN 风格 multi-period discriminator、单带幅度/多带 complex multi-resolution discriminator,以及 DAC/EnCodec 路线的 complex multi-scale STFT discriminator。判别器用 hinge loss;generator loss 由 quantizer、mel reconstruction、adversarial、feature matching 四项构成。 这种组合的意图是同时约束周期、不同 STFT 尺度、频带、幅度和相位。[WVT-P-013–WVT-P-018]

论文方法描述与公开训练代码的命名并不完全一一对应。固定 decoder/experiment.py 实际实例化 MPD、MRD 和 DACDiscriminator,而不是一份独立、可直接运行并重算 Table 7 的 ablation harness。 D2 必须把论文概念映射到具体 class、loss 和 tensor shape,不能只看名词相似就宣布一致。 [WVT-S-006, WVT-I-010]

训练数据与计算

camera-ready 主实验声称约 8K 小时:speech 使用 LibriTTS、VCTK 和随机抽取 3000 小时 CommonVoice; general audio 使用随机抽取 2000 小时 AudioSet;music 使用 Jamendo 与 MusicDB/MUSDB。所有音频 重采样为 24 kHz。主训练最多 2M alternating iterations(generator 和 discriminator 各约 1M), 8×A800 80GB,batch 40;长音频先截到 10 秒,再随机 crop 3 秒;AdamW,初始学习率 2e-4, betas (0.9,0.999),cosine decay。[WVT-P-019, WVT-P-020]

多数消融不是在 8K-hour universal model 上完成,而是在 585 小时 LibriTTS 模型上做;Appendix D 另比较 585h 与 4000h multilingual data。Table 8 中 16384-entry codebook 利用率是 27% 与 26.5%, 所以更多数据没有自动解决 dead-code 问题。[WVT-P-021, WVT-A-014]

发布资产存在一个必须长期保留的 lineage gap:paper 主训练写约 8K 小时,当前 README 把 large-600/320 checkpoints 写成 80,000 hours;small checkpoints 才明确写 LibriTTS。发布的 large-unified 40-token checkpoint 因此是很有价值的官方后续能力端点,但不能未经证明就说它是 Table 1 那个 8K-hour paper checkpoint 的字节等价版本。[WVT-S-001, WVT-I-004]

数据名称也不是 exact manifest。CommonVoice/AudioSet 的“随机抽取”没有 seed、revision、sample IDs 或 offsets;evaluation 虽给出 LibriTTS test-clean/test-other、LJSpeech、AudioSet eval、MusicDB test, 却没有统一 manifest。公开 source 的 config 还包含作者机器上的绝对路径。D3 只能冻结我们可重建的 公开集合,严格 paper-exact 数据集身份目前受阻。[WVT-P-022, WVT-S-004, WVT-I-011]

官方 evaluation 到底怎么做

1. Reconstruction objective metrics

Table 1 的 speech reconstruction 使用三组数据:LibriTTS test-clean 4,837 条、test-other 5,120 条、 LJSpeech 13,100 条。指标是 UTMOS、wide-band PESQ、STOI、V/UV F1;UTMOS 输入重采样到 16 kHz。 Baselines 是官方 EnCodec、HiFi-Codec、Vocos、SpeechTokenizer、DAC weights,作者声称选择各模型 训练过的 quantizer depths。[WVT-P-022–WVT-P-025]

公开 metrics/infer.py 能看到这些 metric 的基本调用:UTMOS/PESQ 使用 16 kHz;PESQ 和 V/UV 先截到同一最短长度;STOI 的 LibriTTS 路径使用原 24 kHz;NaN V/UV 会从分母排除。但脚本把 cuda:0、输入输出目录和文件配对逻辑写死,没有 CLI、环境 lock、baseline decode、dataset hash、 per-item JSON 或置信区间。它是作者 evaluation 线索,不是可一键复现 Table 1 的 official harness。 [WVT-S-004, WVT-S-005]

UTMOS wrapper 还会从 Hugging Face Space 的 main 下载 epoch=3-step=7459.ckptwav2vec_small.pt,未固定 revision 或 hash。今天运行得到的 judge artifact 不一定与论文运行日相同。 因此 D3 必须把 evaluator checkpoint 固定后再跑,并把“复现当前公开 metric code”与“严格复现 paper UTMOS”分开。[WVT-S-005, WVT-I-012]

2. Subjective reconstruction

Table 2 按 speech/music/audio 三类做 MUSHRA:hidden reference + low anchor;每类随机 50 samples; 每条至少 10 次评分,范围 1–100。筛除规则是:annotator 在至少 20% cases 把 reference 评低于 90, 或超过 50% cases 把 low anchor 评高于 80。Table 2 给均值 ± 数值,但 paper 没说明这是标准差、 标准误还是置信区间,也没公开 sample assignment、anchor 生成、raw votes 或 listener metadata。 [WVT-P-026, WVT-A-005, WVT-I-013]

所以我们可以重建“同 family 的 MUSHRA 协议”,不能重算作者 Table 2。对 EvoSpeech 更重要的是, WavTokenizer 的 headline 优势主要在 UTMOS 与 MUSHRA,而不是所有 waveform fidelity metric:Table 1 中 0.9 kbps WavTokenizer 的 PESQ/STOI 通常低于高码率 DAC。今后 reward 不能只用 UTMOS。

3. Semantic representation

作者没有用只覆盖 speech 的 SUPERB,而用 ARCH:speech 为 RAVDESS、AudioMNIST、SLURP、EMOVO; acoustic events 为 ESC-50、UrbanSound8K、FSD50K、VIVAE;music 为 FMA、MTT、IRMAS、MS-DB。 方法是取 discrete code 对应 embeddings 作为 representation,再做 classification accuracy。论文没有 给出 classifier architecture、split/seed、optimization details;固定 repository 也没有 ARCH runner。 因此 Table 3 是 author result,不是当前 release 可直接 replay 的 test。[WVT-P-027, WVT-A-006, WVT-S-007]

4. Downstream TTS

作者修改 ParlerTTS 600M,使用默认 hyperparameters,把 DAC 或 WavTokenizer tokens 交给同一个 autoregressive model,在 LibriTTS 训练 40 epochs、8×A800 80GB。CMOS-Q 测 quality/clarity/ high-frequency detail;CMOS-P 测 rate/pauses/pitch;随机 40 条、每条至少 10 位 testers,评分时要求 忽略另一维。Table 4 以 WavTokenizer 为 0,GT 为 +0.22/+0.26,DAC 为 -0.35/-0.29。 [WVT-P-028–WVT-P-030, WVT-A-007]

Appendix Table 12 又报告 DAC/WavTokenizer 的 WER 6.9/5.1 和 WavLM speaker cosine 0.59/0.61。 这里与我们过去讨论 ASR evaluator 的问题直接相关:paper 没有说明 WER 使用哪个 ASR、版本、 解码参数或 normalization;只明确 speaker evaluator 是 WavLM base-plus-sv。公开 repo 也没有修改过的 ParlerTTS、evaluation script 或生成样本。因此本项目不能把 Whisper、SenseVoice 或某个 SOTA API 说成“论文同款”。D4 对 Table 12 的 WER 严格复现应标 blocked,而非自选 ASR 后硬对数字。 [WVT-A-017, WVT-I-014]

5. Speed 与采样率附录

Table 10 报 16/24/48 kHz、固定 downsampling factor 320 的 50/75/150 token/s:UTMOS 3.9606/4.0486/3.9582,PESQ 2.3240/2.3730/2.7230,STOI 0.9095/0.9139/0.9350,V/UV F1 0.9375/0.9382/0.9496。正文把“采样率”和“token 数”同时改变,却用它推断 token 增加带来除 UTMOS 外指标上升;这不是受控的 token-rate causal ablation。表题还写 Librispeech test-clean,正文和 4,837 count 指向 LibriTTS test-clean,是另一处命名不一致。[WVT-A-016, WVT-I-007]

Table 11 在单张 A100 80GB、LibriTTS test-clean 上报告 RTF:SemantiCodec 0.9483、EnCodec 0.0175、DAC 0.0144、WavTokenizer 0.0098。没有公布 batch size、I/O 是否计入、warm-up、精度、 baseline revision 或计时代码;只能当 author-reported GPU throughput,不能外推到 Apple CPU,也不能 作为当前 D5 的本地资源数字。[WVT-P-031, WVT-A-016]

作者结果:该相信什么,不该扩大什么

Table 1:最强信号与内部反例

WavTokenizer 40/75 在 LibriTTS test-clean 的 UTMOS 为 3.6016/4.0486,在 test-other 为 3.0545/3.4312,在 LJSpeech 为 4.0186/4.2580。75-token 点相对 40-token 点在三组数据的四项指标 大多更好,但这是两个完整 checkpoint 的比较。[WVT-A-001–WVT-A-004]

论文正文声称 0.9 kbps WavTokenizer 的 UTMOS 在“all test sets”超过 9 kbps DAC;Table 1 中 LibriTTS clean (4.0486 > 3.9097) 和 other (3.4312 > 3.3566) 成立,LJSpeech 则是 4.2580 < 4.3007。因此“全部超过”与表格不一致。更稳妥的结论是:作者报告 WavTokenizer 在极低 token rate 下取得非常强的 predicted MOS,但不是所有数据、所有指标都胜过 DAC。[WVT-I-005]

Table 2:主观优势很强,但原始统计不可审计

作者报告 GT/DAC9k/Encodec6k/DAC1k/WavTokenizer0.9k 的 MUSHRA;WavTokenizer 为 96.1±2.3 / 92.9±2.2 / 94.4±1.6(speech/music/audio),接近 GT,并在三域超过 DAC 9 kbps。 这是论文最强的 perceptual claim,但 raw votes 缺失,且 ± 含义未定义,不能从 PDF 逆推出统计可靠性。 [WVT-A-005, WVT-I-013]

Tables 3–4、12:证明“适合作为 tokenizer”的方向性,不是通信 codec 完成度

ARCH 12-task row 与 TTS CMOS/WER/SPK 的共同价值是:作者不只测重建,还问 token 是否方便下游 模型学习。但这几组实验最不完整:classifier/TTS code、seeds、checkpoints、samples 与部分 evaluator 身份都没有公开。它们给我们研究假设,不给 D4 一个可直接重放的 benchmark。[WVT-A-006, WVT-A-007, WVT-A-017, WVT-S-007]

Tables 5–9:最可迁移的机制证据

尽管没有 ablation checkpoints,表格仍形成清晰优先级:4096 codebook 是有效容量甜点;三秒上下文 优于一秒;mirror decoder 损失最大;attention 与 MSTFTD 都贡献质量;更多数据不自动提高 16384 codebook utilization;attention + extended window 对 ARCH speech tasks 有一致提升。这些是未来原创 baseline 最值得逐项做 controlled ablation 的部分。[WVT-A-009–WVT-A-015]

四个必须记住的证据裂缝

  1. paper model ≠ 当前 large release 的已证明字节身份。 paper 约 8K h,README large 写 80K h; 我们会把 current official checkpoint 当能力端点,但 D4 不伪称 exact paper checkpoint。
  2. 官方 metric code ≠ 完整 evaluation harness。 hardcoded path/GPU、未固定 UTMOS assets、无 dataset/output manifests、无 baseline generation 与 per-item results。
  3. headline subjective/semantic/TTS 数据不可重算。 MUSHRA votes、ARCH runner、ParlerTTS patch、 TTS checkpoint、生成样本与 WER ASR identity 均未发布。
  4. 论文文字并非无误。 Table 1 的 LJSpeech 反例、Table 5 的 STOI 算术错误、Table 10 的 LibriSpeech/LibriTTS 命名与 rate/sample-rate 混杂必须保留,不能在二手文档中被平滑掉。

对 EvoSpeech 的启发

  1. 优先优化 token topology。 单流 40 Hz 对 autoregressive LM 的价值可能远大于仅把 RVQ 总 bits 从 6 kbps 降到 3 kbps;未来 arena 要同时报告 token/s、streams、vocabulary 和 bits/s。
  2. 强 decoder 可作为能力教师。 ISTFT/ConvNeXt/context attention 说明极低信息瓶颈下,decoder 的归纳偏置决定能否“解压”有限 token;原创 baseline 不必复制 81M 参数,但应做 mirror vs Fourier、local vs attention 的受控实验。
  3. 搜索 effective vocabulary。 codebook size、usage entropy、dead-code rate、revival count 与 quality 必须共同进入报告;4096 不是宇宙常数,而是当前数据/模型/训练的甜点。
  4. SOTA-first 需要保留后续 release。 80K-hour large-unified checkpoint 可能比 paper 8K model 更强,即使它破坏 strict reproduction 身份;正确做法是 paper-native track 与 current-capability track 并存,而不是二选一。
  5. predicted MOS 不能独占 reward。 paper 自己显示 UTMOS 很强而 PESQ/STOI 不总领先;我们的 common benchmark 继续保留 ViSQOL/STOI、speaker embeddings、ASR delta、资源与短样本盲听。
  6. 不要凭空添加“论文 ASR”。 codec reconstruction 的 paper protocol 没有 Whisper/SenseVoice; downstream TTS WER evaluator又未说明。ASR 只能作为 EvoSpeech project metric,并明确另轨。
  7. 主观协议要发布原始票。 sample manifest、position randomization、anchors、raw votes、listener QC 和 CI formula 都应是 artifact;只给 mean±x 无法让后来者验证。
  8. 自动科研要先攻击证据最硬的模块。 最早可搜索 codebook/hop/context/decoder/loss;ARCH/TTS 需要更昂贵训练与缺失资产,不应成为第一轮自动进化的 reward。

D1 形成的 D3/D4 入口

claim family paper evidence D3 必须冻结 D4 预期
40/75 representation §3.1 + README/model IDs checkpoint、hop、vocab、exact bits、padding 40 current endpoints exact;75 未安装则 blocked
Table 1 objective 3 datasets × UTMOS/PESQ/STOI/V-UV exact dataset revision/list、resample、metric assets、baseline outputs current-checkpoint subset可复验;paper-exact lineage approximate/blocked
Table 2 MUSHRA Appendix C protocol + aggregate table samples、anchors、assignment、raw votes、QC、CI exact author result blocked
Table 3 ARCH 12 dataset names + accuracy rows original ARCH protocol、feature layer、classifier、splits、seeds author code absent,blocked
Tables 4/12 TTS ParlerTTS 600M outline + aggregate CMOS/WER/SPK patched code、TTS checkpoints、samples、ASR identity、WavLM revision strict replay blocked
Tables 5–9 ablations complete aggregate rows ablation checkpoints or retraining seed/config/data checkpoint replay blocked;future retrain separate
Table 10 sample rates three aggregate rows 16/24/48 checkpoints and exact test identity only available 24 kHz endpoint eligible
Table 11 RTF A100 aggregate baseline revisions、batch/warmup/precision/I/O timing paper-exact blocked;local resource track separate
current large-unified fixed 80K-hour README/checkpoint current-capability protocol exact public checkpoint benchmark,not Table 1 proof

D2 将沿固定 commit 追踪 waveform → SEANet encoder → single ResidualVectorQuantizer → codes → embedding lookup → attention/ConvNeXt → magnitude/phase ISTFT,并把 MPD/MRD/DAC discriminator、loss、 checkpoint filtering 与 adapter framing 映射到具体行和 tensor shape。它还要审计 paper 声称的 “attention”在 source 中究竟是哪种 attention,而不是把任何带 attn 的模块都算作证据。

Primary-source artifact manifest

Source bytes SHA-256 用途
ICLR 2025 camera-ready 548,216 934366c66e66ca9d87608c6b1bde1b60a4bb35c728f02a00d1b7e0eb24a73d57 peer-reviewed method, Tables 1–12, appendices, limitations
Fixed README 6,780 819196227c35a4aef37235bbd91a54c09e9251011ded3ec3649b1e9e68a22f0b model matrix, release data/domain/token-rate claims
40-token config 2,777 69761de5709e0114f0819bbcf8447e30439a43f4f69ffce55b35197070fdc371 hop-600 graph and training/eval flags
75-token config 2,853 b905680939e42c7a2ce1ecdf860f0be5fd05b70787536332c9d80be47a3fa91d separate hop-320 endpoint evidence
Metric script 4,193 70ce9d4c00737239c111c9aa8809ad150b9fd654fe43de626442430f0aeebb03 UTMOS/PESQ/STOI/V-UV invocation and limitations
UTMOS wrapper 7,594 520fe78a2c715b25fede8fe0ec5061057e90e3b48462511d899e8106ef304ff1 unpinned evaluator download boundary
Training experiment 21,792 9109397e35f435ab54d8bb0942812b3b295a072b9fd59b025b424c4300cb6cd8 discriminator, generator loss and validation path
Official result plot 284,730 196ea564f7d42369aa7369582a0f0217edd9b61fa6e8dffe8a0d1a9e5e88b5e3 source-release copy of Figure 1 trade-off plot

结构化的 69 条 claim-to-source ledger 位于 research/models/wavtokenizer/paper_claims.json。所有论文数字都 标为 author_result,本地复现性判断和内部矛盾标为 reader_inference,不会把我们的审计写成作者原话。

WavTokenizer 核心代码深读

D2 · 核心代码深读

这一阶段回答的不是“WavTokenizer 听起来好不好”,而是四个更基础、也更容易被名称误导的问题:固定 checkpoint 究竟执行哪条路径;论文中的 encoder、quantizer、attention、Fourier decoder 和 discriminator 分别落在哪些行;所谓 bandwidth 是否真能调码率;81M 参数中哪些真的参与一次 waveform → token → waveform 推理。全部结论绑定到 jishengpeng/WavTokenizer@5cf440d91ac420ca338f117b7003a77450d64730、两个已安装的官方 40-token checkpoint 和可重放的 code_trace.json。D2 的正弦/啁啾输入不是语音样本,所以这里不会产生任何质量、可懂度或 SOTA 结论。

一句话执行心智模型

WavTokenizer 的本质不是“把 EnCodec 的 RVQ 层数调成一层”这么简单。固定 40-token graph 先用非因果 SEANetEncoder 把 24 kHz 波形每 600 个采样压成一个 512 维向量,再用一个 4096-entry 欧氏 codebook 变成单个 12-bit index;decoder 把 index 查回 512 维向量,在不改变 token 时间分辨率的前提下,用全时域 attention 和十二层 ConvNeXt 恢复上下文,最后一次性预测 STFT magnitude/phase 并用 ISTFT 合成波形。它把复杂度从“多个 RVQ token streams”迁移到了“很强的非流式 decoder”。

这也是为什么它对 audio-language-model 很有吸引力:40 Hz 单流 sequence 远比 8 或 16 条并行 RVQ stream 容易交给 自回归模型;但这不等于它已经是一个 480 bps 网络 codec。上游只输出 tensor code,没有 packet、纠错、丢包恢复或 streaming state。EvoSpeech 的 EVSWAV01 只是为了让 evaluator 可以独立计字节并让 decoder 不接触原音而建立的审计 格式。

固定代码面与可信边界

D2 索引了 21 个 fixed-source 文件。代码身份使用完整 commit,不把 GitHub 当前 main 当成论文实现;两个 checkpoint 也分别绑定 Hugging Face revision、字节数和 SHA-256。small speech 40 与 large unified 40 的 checkpoint value hash 不同,但 loader 建出的 graph、state key/shape、总参数和模块计账完全相同。因此“large”在这里表示训练数据/权重端点, 不是更宽或更深的运行图。

边界尤其重要:论文主文称 universal model 约使用 8,000 小时,而当前 README 将 large endpoint 描述为 80,000 小时。 没有 published mapping 证明本地 large checkpoint 就是 Table 1 的 paper checkpoint。后续必须保留两条轨道:

  1. paper-exact 轨:只复现作者明确给出且身份可冻结的协议,不能得到的部分标为不可重放;
  2. current-capability 轨:评测当前官方 large-unified checkpoint,并清楚写成新的本地结果。

这不是措辞洁癖。若把 80K current release 跑出的高分拿去“复现”8K paper table,数据规模、权重和 evaluator 都可能 不同,交叉验证就失去意义。

waveform → SEANetEncoder

decoder/feature_extractors.py:54-95 构造 EncodecFeatures。选定 graph 的 encoder 是 SEANetEncoder:mono、 dimension 512、base filters 32、每级一个 residual block、ELU、weight norm、reflect padding、两层 LSTM,且 causal=False。40-token YAML 传入 dowmsamples: [6,5,5,4]SEANetEncoder 内部反转为 [4,5,5,6],但 乘积仍是 600。24,000 / 600 = 40 frames/s。

每一级先走压缩 residual branch,再用 kernel 2×ratio、stride ratio 下采样并将 channel 翻倍;末尾两层 LSTM 处理 latent 时序,最后 kernel-7 convolution 投影为 512 维。D2 的 3,202-sample 16 kHz probe 经 official resampler 得到 4,803 个 24 kHz samples,encoder 输出 [1,512,9]。9 而不是 8 表明实现的 padding/卷积边界必须以真实 trace 计帧,不能简单用 floor(duration×40) 推断短片段 payload。

causal=False、reflect padding、双向可见的完整 attention 共同决定:当前 graph 是 offline reconstruction model。 论文在 A100 上报告的 RTF 也不能推出 algorithmic latency。实时倍率、流式延迟和可分包性是三件不同的事;D2 只确认 第一件尚未在本机测量,后两件在当前 graph 没有成立。

“ResidualVectorQuantizer” 实际上为什么是单层 LanguageVectorQuantization

这是本轮最值得记住的命名陷阱。EncodecFeatures 创建的公开 class 叫 ResidualVectorQuantizer,docstring 也不断写 RVQ;然而 encoder/quantization/vq.py:64-81 实际把 self.vq 指向 LanguageVectorQuantization,真正的 ResidualVectorQuantization 构造被注释掉。infer() 又直接写死 n_q=1。因此当前推理事实是:单层普通 VQ, 不是“运行时选择一层的深 RVQ”。

两种 core class 的差别很清楚。真正的 residual 版本在每层后执行 residual = residual - quantized.detach(),并把各层输出相加;Language 版本保留 residual=x,循环里用每层新输出 覆盖 quantized_out,没有 residual subtraction,也没有 accumulation。选定 graph 只有一个 layer,所以两者在本次 推理的数值拓扑上等价;一旦有人把 n_q 增大,这个差异就不再可以忽略。AI evolution 不能根据 class 名把它当成可自由 扩展的 RVQ substrate,必须先决定是保留作者的一层设计、切换真 RVQ,还是显式实现并行/分组 VQ。

更细的一点是,训练 forward() 写了随机 nq_choice=[4,6,8],但 module list 实际只有一层。Python slice layers[:4] 不会报错,只会返回现有的一层,因此训练仍走一层;返回的 bw 却按随机 n_q 计算。这个 metadata 与真实 token count 的脱节进一步说明:后续评价只能从实际 code tensor/bitstream 计码率,不能信任 bandwidth 返回值。

codebook:k-means、EMA 与 random awakening

EuclideanCodebook 注册四个 buffers:initedcluster_sizeembedembed_avg。4096×512 的 embedding 不是 nn.Parameter,所以 quantizer 的 parameter count 是 0;但它有 4,198,401 个 state elements、16,793,604 state bytes。只报告 sum(model.parameters()) 会把 tokenizer 最重要的 learned state 隐形。EvoSpeech 的资源账本必须 同时保留 parameter elements 与 state bytes。

训练第一次见到 batch 时,若尚未 initialized,kmeans() 在 batch latent 上执行配置的 200 次迭代。每个向量以欧氏 距离归入最近中心;空 cluster 保留旧 mean。之后 quantization 通过展开的平方距离寻找最大负距离,也就是 nearest centroid。训练态使用 straight-through estimator,让 encoder 接收梯度,同时计算 commitment MSE。

EMA 路径以 decay 0.99 更新 cluster counts 和 embedding sums,再经 Laplace smoothing 得到归一化 codebook。 当 cluster_size < threshold_ema_dead_code 时,entry 会被当前 batch sample 替换并在分布式 workers 间广播。这正是 论文所谓 random awakening 的代码落点。不过当前默认 threshold 是 2,而论文语言是“数个 batch 未使用”;两者不能 不经实验就当作严格同义。D4 的 codebook utilization 若要与论文 Figure 2/Table 5 交叉验证,还必须冻结统计窗口、是否只 数一次出现、数据集和 checkpoint,不能从 9-frame mechanism probe 的 7/9 unique codes 推断全局利用率。

codes_to_features:token 到 512-D embedding

推理编码调用 feature_extractor.infer():先 audio.unsqueeze(1) 变成 [B,1,T],经 encoder 得到 [B,512,F],单层 VQ 返回 quantized features 与 codes [1,B,F]WavTokenizer.codes_to_features() 把所有 codebook buffers concat,按 codebook index 加 offset,embedding lookup 后在 codebook 维求和并转置为 [B,512,F]

对一个 codebook,offset 恒为 0,sum 也只有一个 operand,所以这是严格的 index → 512-D table lookup。D2 对两组 checkpoint 都验证 codes_to_features(codes) 与 encoder 直接返回的 quantized feature 最大绝对误差为 0。这项证据 很关键:独立 decoder 只需拿到整数 token 和固定 codebook,不必拿到 encoder latent,更不必拿到原波形。

它也说明 token 不是一个孤立的“12 bits”。decode 所需语义由 4096×512 codebook state 解释;换 checkpoint 即使 token 整数相同也不再有相同含义。因此 candidate contract 必须绑定 checkpoint hash,不能只验证 token range。

decoder:AttnBlock + ConvNeXt + ISTFT

VocosBackbone 先用 kernel-7 Conv1d 将 512 channels 映射到 768。pos_net 不是标准 Transformer:它是两层 ResnetBlock、一个自写 AttnBlock、再两层 ResnetBlock 和 GroupNorm。AttnBlock 用四个 1×1 Conv1d 生成 Q/K/V/output,计算完整 F×F temporal attention;代码没有 multi-head 拆分,也没有 causal mask。因此“attention” 需要理解成单个 full-width quadratic attention block,不能想象成大型多层 Transformer。

之后 backbone 用 AdaLayerNorm 接收 bandwidth ID,再走 12 个 ConvNeXt blocks。每个 block 是 depthwise kernel-7 temporal convolution,normalization,768→2304→768 pointwise inverted bottleneck,GELU 和 layer scale。整个过程 时间长度保持 F,不做 transposed-convolution upsampling。D2 的 9-token probe 在这里变成 [1,9,768]

ISTFTHead 的 linear layer把每帧 768 维投到 n_fft+2 = 2402:前 1201 是 single-sided magnitude logits,后 1201 是 phase logits。magnitude 先 exp 并 clip,phase 取 cos/sin 形成复数 spectrum。custom ISTFT 对每帧执行 irfft,乘 Hann window,通过 fold overlap-add,用 window envelope 归一化,再裁掉 same padding。hop 600 意味着 9 frames 生成 5,400 个 samples;adapter 根据 header 裁掉 597 个 encoder padding samples,再 resample 回精确 3,202 个 16 kHz samples。

这条设计的第一性原理是:tokenizer 极度压缩后,局部上采样卷积很难凭少量 frame 恢复相位与细节;于是用一个有全局 上下文的强 decoder 直接预测频谱。代价则是非因果、attention 的平方复杂度以及 decoder 计算/内存。未来原创 baseline 不应只复制“单 codebook”,而应把三变量分开做 Pareto 搜索:token rate/codebook capacity、decoder contextual reach、 streaming/compute constraint。

81M 参数里有一条未使用的 legacy decoder

EncodecFeatures 同时构造 SEANetEncoderSEANetDecoder,再把二者连同 quantizer 放进 EncodecModel。 但 WavTokenizer.decode() 只调用 backbone(features)head(x)feature_extractor.encodec.decoder 没有出现在 token-to-waveform 运行路径。它仍被 Lightning checkpoint 保存、被 from_pretrained0802() prefix filter 接收、被 strict load_state_dict 载入,也会被 model.parameters() 统计。

D2 的模块计账给出:

范围 parameter elements state bytes 是否在选定推理路径
SEANet encoder 8,303,104 33,212,416
legacy SEANet decoder 8,802,274 35,209,096
one-codebook quantizer 0 16,793,604 是;learned state 是 buffers
attention/ConvNeXt backbone 61,961,472 247,845,888
ISTFT head 1,847,138 7,398,152
总加载 80,913,988 340,459,156 graph identity 账本
active path 72,111,714 305,250,060 encoder + VQ + Vocos/ISTFT

所以 D0 的 80,913,988 没有“算错”:它准确描述 loader 后的总 model。D2 新增的是 deployment interpretation——约 8.8M 参数/35.2 MB state 不被 official decode 调用。真正做云端训练或推理容器时,可以研究一个兼容 checkpoint 的 slim loader;但在验证其输出与官方 path 完全一致以前,不能直接改基线并仍称 official runtime。这个发现也给自动进化 设定了一个低风险首个系统任务:不是改算法质量,而是删除死路径、验证 bit-exact 输出并测量 memory/latency 收益。

loader:1.7 GB checkpoint 如何过滤成 340 MB state

两个下载文件分别约 1.59 GB 和 1.76 GB,因为它们是 PyTorch Lightning training checkpoints:除了完整 state_dict,还含 epoch/global_step、optimizer state 和超参数。from_pretrained0802() 先按 YAML instantiate feature extractor、backbone 和 head,再从 full state 中只保留以 backbone.head.feature_extractor. 开头的 keys,最后 strict load。过滤后的 289 tensors 占 340,459,156 bytes。

“下载大小”“训练 checkpoint tensors”“加载模型 state”“active inference state”和“representation bits”必须是五本 账。把 1.76 GB 除以音频时长得到码率、把 340 MB 叫 payload,或者把 480 bps 当 EVSWAV01 文件大小,都会产生无意义 比较。D2 短 probe 的 representation 只有 108 bits/14 packed bytes,但 self-describing audit file 分别是 1008/1037 bytes,差异几乎全来自固定身份 header;长 benchmark 必须同时报告 exact representation 与 complete serialized bytes。

训练损失与论文的 hinge/LSGAN 差异

论文 Equations 2/5 表述 discriminator 与 generator adversarial objective 都为 hinge。fixed code 对 MPD/MRD 的确使用 hinge:discriminator 对 real 计算 relu(1-real)、对 fake 计算 relu(1+fake);generator 最小化 -mean(fake)。 feature matching 是 real/fake intermediate maps 的 L1,mel reconstruction 是 log-mel L1。

但第三路 DACGANLoss 的 discriminator 使用 fake² + (1-real)²,generator 使用 (1-fake)²,这是 least-squares GAN。training step 将它与 MPD/MRD hinge losses 一起相加。generator total 还包括 mel×45、commitment×1000、两路 feature matching 和 DAC feature loss。因而正确说法是“fixed implementation 混合 hinge MPD/MRD 与 LSGAN DAC discriminator”,不是“代码证明论文所有 adversarial losses 都是 hinge”。

这构成 paper-code correspondence gap,而不是自动宣布论文错误:published checkpoint 可能来自另一个未公开 snapshot, 论文可能概括了主要判别器,也可能代码后来变化。D3/D4 能做的是冻结当前实现并诚实标注;若要验证 loss 选择对质量的 因果贡献,必须重新训练受控 ablation,而不是比较两个现成 checkpoint。

bandwidth_id 不是码率旋钮

40-token YAML 写 bandwidths: [6.6,6.6,6.6,6.6],四个值完全相同。训练每步随机抽一个 ID,AdaLayerNorm 和两个 conditional discriminators 把它当 embedding category;validation 固定 ID 0。与此同时 quantizer inference 无视传入 bandwidth 并 hard-code n_q=1。因此 ID 会选择 conditioning embedding,但不会改变 token count、codebook size 或 representation bps。

这条审计直接约束 benchmark CLI:WavTokenizer 当前只有一个合法 common point,即 large-unified 40-token 的 0.48 kbps exact representation。不能通过传 1.5/3/6/12 或改 ID 伪造四档曲线。75-token 是另一个 config/checkpoint,需要 独立安装、独立 D0 identity,并且因 graph 同时改变不能叫同模型 rate sweep。

EVSWAV01:representation 不是 file

官方 source 的公开 interface 是 integer tensor;没有稳定 file magic、version、checkpoint identity、duration 或 bit packing。EvoSpeech adapter 使用 EVSWAV01:固定 magic/version,JSON header 记录 model/checkpoint/config hash、输入 与模型采样数、frame count、padding、bits per token,再按 time-major 把每个 0..4095 index 紧密打包为 12 bits。

D2 不是把这个格式包装成作者贡献,而是用它封闭两个竞技场漏洞:evaluator 能独立读取真实 bytes;fresh decoder 只收到 payload、固定 source 和 checkpoint,不收到 source waveform path。两个 endpoint 的同一 deterministic probe 都在独立 进程中 byte-exact 重复序列化、repeat decode 一致,最终 duration 精确回到 3,202 samples。small/large 文件大小不同是 header 中 repository、revision 和 runtime identity 字符串不同,不是表示码率不同。

这个格式目前只允许 trusted baseline artifact。未来 candidate contract 应换成更小、安全、schema-validated 的二进制 header,并对最大 frame count、JSON nesting、checksum、truncation、token range 和 decompression resource 设置上限。 D2 没有声称它是网络 packet,也没有测 packet loss。

确定性 executable trace

scripts/trace_wavtokenizer_code.py --check 会先验证 21 个 source hashes、两个 checkpoint hashes、两个 environment locks 与两个 adapters,再为 small/large 各启动 encoder worker 和 source-blind decoder worker。probe 是 0.200125 秒的 三分量 deterministic float32 非语音波形。它只验证:resample/shape、token range、code-to-feature 等价、module footprint、 12-bit serialization、decoder input isolation、finite output 和 exact duration。

观测到两个 graph 均为 [1,3202] → [1,4803] → [1,512,9] → [1,1,9] → [1,9,768] → [1,5400] → [3202]。small 的 9 tokens 使用 7 个 distinct indices,large 使用 9 个;这只能证明两个权重在 probe 上 行为不同,绝不能当 utilization 或质量比较。两者 nominal representation 都是 0.48 kbps;因为短片段向上补到 9 frames, probe-effective representation 约 0.5397 kbps,这个 duration padding effect 也应在正式 per-item 账本中保留。

重放要求 CPU 和当前 PyTorch 环境下 serialized bytes 及 decoded float tensors 都一致。若未来 GPU kernel 有数值非确定性, 可以把机制断言降为 shape/finite/tolerance,但必须留下 device-specific trace,不能静默覆盖现有 CPU artifact。

对原创 baseline 与 AI evolution 的启发

第一,WavTokenizer 最有价值的启发不是“4096 是神奇数字”,而是表示复杂度与 decoder intelligence 可交换。我们自己的 baseline 可以从透明的 40 Hz single-codebook 开始,但必须把 decoder capacity 当独立轴。若只让 AI 搜 VQ 参数、decoder 永远固定,可能错过主要增益来源。

第二,搜索目标必须是 Pareto,而非只压一个 UTMOS:representation bps、active model bytes、MACs/RTF、algorithmic latency、English/Mandarin content、speaker、expression、robustness 都是约束。full attention offline decoder 在质量上可能 强,却不满足实时通信;它可以做 non-causal teacher 或 upper bound,而不是被 low-bit 标签自动纳入 deployable frontier。

第三,codebook health 是可进化的中间表型。应记录 utilization、perplexity、dead-code turnover、cluster occupancy entropy、 commitment loss 与 token stability;但这些代理不能越权替代最终音质/语义。random awakening、EMA threshold、k-means iterations、codebook dimension 和 group structure 都可以成为受限基因,前提是每次实验绑定 seed、data slice 与真实输出。

第四,自动科研首先可以攻击可验证的工程问题:slim loader 是否 bit-exact、attention window 能否稀疏化而不越过质量阈值、 ISTFT overlap 能否低延迟分块、12-bit packing 和 isolated decoder 是否稳定。等 evaluator、数据和 source-blind contract 冻结 后,再让 Agent 搜模型;否则 Agent 最容易“优化”的是计分漏洞、文件口径或 evaluator drift。

第五,论文与 current release 的差异必须进入 agent memory。失败实验也要记录 checkpoint、代码、metric revision、数据 manifest 与 hypothesis。否则多个 Agent 会反复尝试“调 bandwidth_id 获得多档码率”这种已经被代码审计否定的路线。

D2 对 D3/D4/D5 的直接约束

D3 paper-native protocol 必须以 LibriTTS test-clean/test-other 与 LJSpeech reconstruction 为主,复现 UTMOS、wide-band PESQ、STOI、V/UV F1 的可执行部分;不能因为项目已缓存 Whisper/SenseVoice 就把它们冒充论文 evaluator。UTMOS judge 资产要独立 pin/hash。数据集需记录 edition、split、item ID、下载 checksum、切段和 resample。论文未发布确切 item manifest 时,结果只能叫 protocol reconstruction,不叫 exact table replay。

D4 应优先评 current large-unified 40 endpoint,并把 small endpoint 用作 domain/checkpoint sensitivity,不强行下载 75-token 就阻塞当前 family。作者 MUSHRA、ARCH、TTS 与 A100 RTF 缺少关键 artifact,应形成“不可重放矩阵”,而不是用近似脚本 补成假复现。对可运行指标,既报告 aggregate/CI,也导出 per-item scores、failures、decoded hashes 与官方 table delta。

D5 common benchmark 继续使用已经冻结的英中公共集与统一指标。WavTokenizer 只报 0.48 kbps representation,加完整 EVSWAV01 bytes;ASR 是项目语义 evaluator,不是 paper metric。Whisper/SenseVoice 缓存可以复用且只需同一 decoded corpus 跑一次,不要求用户录个人语音。听感是选择性 D6 校准,不阻塞 D0-D5 benchmark complete。

D2 允许与禁止的结论

D2 允许说:两个已安装 40-token endpoint 有相同 80,913,988-parameter loaded graph;active path 是 72,111,714 parameters/305,250,060 state bytes;one-codebook representation 精确为 480 bps;官方 decoder 是 attention + ConvNeXt + ISTFT;legacy SEANet decoder 被加载但不参与该路径;project payload 可 source-blind、确定性重放;当前实现混合 hinge 与 least-squares adversarial losses;bandwidth ID 不是码率旋钮。

D2 禁止说:WavTokenizer 已在本机达到或超过论文 UTMOS/PESQ/STOI;large checkpoint 就是 paper 8K checkpoint;9-frame probe 的 unique count 代表 codebook utilization;CPU repeatability 代表跨 GPU bit-exact;EVSWAV01 是官方格式;模型支持 streaming;attention 或 random awakening 单独造成论文增益;paper WER 使用 Whisper、SenseVoice 或任何指定 ASR; WavTokenizer 已经完成 Definition of Done。

本轮的价值是把“一个漂亮的论文故事”变成可执行边界。下一步不是继续猜,而是冻结 paper-native evaluator/data manifest, 明确哪些作者数字能交叉验证、哪些只能保留为 author-reported,然后再运行公共英中 benchmark。只有 D0-D5 全过,这个模型 才会进入“评测完成”;D2 只是证明我们终于知道自己在跑什么。

Primary-source code manifest

完整 21-file SHA-256 ledger、20 条 paper-to-code mapping 和 14 条 release gap 位于 research/models/wavtokenizer/code_map.json;机器 trace 位于 research/models/wavtokenizer/measurements/code_trace.json。架构图位于 architecture.mmd。所有 GitHub links 均指向 固定 commit,而非可漂移的默认分支。

flowchart LR subgraph Frozen["fixed source + checkpoint identity"] WAV["mono waveform\n16 kHz arena"] --> RS["official resample\n24 kHz"] CFG["40-token config\nhop 600"] -. constructs .-> ENC CKPT["small speech 40 OR\nlarge unified 40"] -. filtered state .-> ENC end subgraph Encoder["active encoder path"] RS --> ENC["non-causal SEANetEncoder\nratios 4×5×5×6\n512-D / 40 Hz"] ENC --> VQ["single LanguageVectorQuantization layer\n4096-entry Euclidean codebook\nk-means + EMA + dead-code replacement"] VQ --> TOK["1 × 4096-way index / frame\n12 bits × 40 Hz = 480 bps"] end subgraph Audit["project audit boundary"] TOK --> PAY["EVSWAV01\npacked 12-bit tokens + identity header"] PAY --> ISO["source-blind decoder process\nsource waveform unavailable"] end subgraph Decoder["active reconstruction path"] ISO --> EMB["codes_to_features\n4096 × 512 lookup"] EMB --> ATTN["ResBlocks + full-width AttnBlock"] ATTN --> CNX["AdaLayerNorm + 12 ConvNeXt blocks\n512 → 768"] CNX --> SPEC["ISTFTHead\n1201 magnitude + 1201 phase"] SPEC --> ISTFT["n_fft 2400 / hop 600\nHann overlap-add ISTFT"] ISTFT --> OUT["24 kHz waveform\ntrim + resample to 16 kHz"] end subgraph LoadedNotActive["loaded state, not called by official decode"] LEG["legacy SEANetDecoder\n8,802,274 parameters\n35,209,096 state bytes"] end CKPT -. loaded .-> LEG LEG -. "not on token → waveform path" .-x OUT subgraph TrainingOnly["training only"] DATA["3 s crops + gain/norm"] --> MPD["multi-period discriminator"] DATA --> MRD["multi-resolution discriminator"] DATA --> DACD["DAC discriminator"] MPD --> LOSS["hinge adversarial + feature matching"] MRD --> LOSS DACD --> LSGAN["least-squares DACGANLoss"] VQ -.-> COMMIT["commitment × 1000"] OUT -.-> MEL["log-mel L1 × 45"] end

WavTokenizer:论文原生复现协议

D3 · 论文原生复现协议

D3 于 2026-07-21 冻结,正式 D4 codec decode、metric score 和结果 verdict 必须在本协议提交之后开始。冻结前允许做的事只有 来源与可执行性预检:核对论文/代码/checkpoint 身份,读取 evaluator 源码,解析远端资产 headers,确认标准数据集的官方 archive 大小/checksum,以及设计一个结果无关的选择规则。冻结前没有运行 300 条正式样本,也没有看到它们的最终 UTMOS、PESQ、STOI 或 V/UV F1。

一句话裁决

WavTokenizer 的论文重建 benchmark 比常见 codec 更清楚:LibriTTS test-clean、test-other 和 LJSpeech;UTMOS、wide-band PESQ、STOI、voiced/unvoiced F1。但公开 release 缺少 paper-exact 8K-hour checkpoint、完整 baseline outputs、paper-time metric lock 和 per-item archive。最诚实也最有信息量的 D4 是两层:严格验证当前官方 endpoint、judge 与标准数据资产身份;再在三个官方 dataset family 各跑 100 条冻结样本,得到当前 80K large-unified checkpoint 的 bounded cross-check。它可以告诉我们本地 pipeline 是否与论文量级方向相容,却不能冒充 Table 1 aggregate reproduction。

paper checkpoint 与 current checkpoint 必须分轨

paper §4.1 说主模型约 8,000 小时;fixed README 的 large endpoints 写 80,000 小时。两者 topology 都可能是 24 kHz、single codebook,但相同 topology 不证明相同 weights、data 或训练 snapshot。当前 local large-unified checkpoint 有完整 Hugging Face revision、 bytes、SHA-256,因而非常适合测当前 SOTA capability;它却没有论文 Table 1 的 lineage certificate。

D3 将 PN-WVT-PAPER-40-CHECKPOINT-LINEAGE 预先判为 blocked_before_execution,而把 current checkpoint identity 判为 strict_reproducible。D4 不用“分数接近”倒推它们是同一 checkpoint,也不用 current score refute paper number。若作者未来发布 paper hash 或 exact weights,可新增 protocol version;当前 v1 不追溯修改。

75-token endpoint 同样不能由 40-token checkpoint 的 bandwidth_id 生成。D2 已证明 75-token 改 hop/FFT/stride 并使用独立 checkpoint。 D3 将它列为 different_model_identity;为尽快完成已安装模型,不让额外 1.75 GB checkpoint 阻塞 40-token current track。未来若把 75-token 单独纳入,它要有自己的 D0 identity 和正式 protocol,而不是悄悄增加一行。

标准数据资产与冻结的 300 条选择

论文 Table 1 使用 LibriTTS test-clean 4,837 条、test-other 5,120 条和 LJSpeech 13,100 条。OpenSLR SLR60 对两个 LibriTTS archive 公布 CC BY 4.0、bytes 和 MD5;LJSpeech 1.1 archive 有稳定 URL、2,748,572,632 bytes 和 SHA-256。D4 下载后必须先复核 官方 checksum,再计算本地 SHA-256;archive identity 不通过就不生成 selection。

全量 23,057 条在 Apple CPU 上会把每个模型的 D4 变成数十小时甚至数日,与“尽快建立完整 SOTA baseline 再开始原创算法”的目标冲突。 因此 v1 在每个 domain 固定 100 条,总计 300 条。数量在分数前冻结,选择不看 duration、文本、speaker、codec 输出或 metric:把 archive 中所有 canonical waveform relative paths 排序,以 protocol salt、dataset ID 和 relative path 的 SHA-256 排名,取前 100。

selection JSON 必须在任何 codec execution 之前落盘,含 path、source bytes/hash、speaker(LibriTTS 可解析时)、duration 和 archive identity。 所有选中项都要出现在结果 JSONL;decode 或 metric failure 也保留一行,禁止删除“难例”后重算均值。这个 subset 的价值是可复核、跨模型可复用、 覆盖 paper 三域;局限是统计误差和 sample mismatch,所以只 eligible 为 approximate,不是 passed Table 1

四个 objective metric 如何冻结

UTMOS 按作者 wrapper 在 16 kHz 运行。wrapper 原本从 Hugging Face Space main 下载两个约 1.24 GB/0.95 GB assets;D3 将 Space HEAD 固定为 commit 47212055c2ecfb02d40cec2395233b83295d3d30,并记录两个文件的 content bytes 与 linked SHA-256。D4 实际下载必须重新 hash。即使当前文件与论文年代 相近,也只能称 current released UTMOS surface,因为论文没公布当时下载的 artifact hash、fairseq commit 或完整 environment。

PESQ 固定为 16 kHz wide-band,reference/reconstruction 先截到共同最短长度;STOI 固定 non-extended,并遵循作者代码对 LibriTTS 原 24 kHz、LJSpeech resample-to-24 kHz 的分支;V/UV F1 固定作者 metrics/periodicity.py 的 torchcrepe full model、50–550 Hz、silence -60 dB 与 unvoiced threshold 0.21。NaN 既不能变 0,也不能直接消失:逐项保存原因,aggregate 只在作者相同规则允许时排除,并同时报告排除数。

为了云端可迁移,D3 冻结一个 linux/amd64 metric Dockerfile 和 dependency lock。它是我们对 current release 的 reproducible reconstruction, 不是 paper environment。Apple Silicon 可以本地 emulation 验证,未来云端 CPU/GPU 使用同一 image;codec encode/decode 的 checkpoint/source identity仍独立保存,不让 evaluator 容器拥有未声明的 rate 或 source shortcut。

统计与 author delta 的边界

每项保存全部 metric 和 error。每个 split 报 mean、median、standard deviation。LibriTTS 的置信区间按 speaker cluster bootstrap,防止把同一 speaker 多句当完全独立;LJSpeech 是单 speaker,只能按 item bootstrap,并明确不能代表 speaker population。固定 10,000 replicates、seed 3407。

报告可以并排显示 author 40-token row,但 delta 标题必须写:current checkpoint、100-item subset、current-pinned evaluator、non-equivalent。 没有“误差小于 X 就算复现”的阈值,因为模型/evaluator/sample 均不等价,设阈值只会制造伪严格性。D4 的成功条件是 protocol 执行完整、身份通过、 结果无选择偏差,不是分数恰好接近 PDF。

MUSHRA、ARCH、TTS、ablation 为什么先判 blocked

Table 2 缺 exact 50-sample selections、low anchors、hidden reference assignments、raw votes、listener screening rows和 ± 公式。用户未来自己听 current samples 很有价值,但那是 D6 personal calibration,不能重构已经丢失的 author votes。

Table 3 只有 12 个 ARCH dataset 与 aggregate accuracy;没有 feature extraction layer 的完整实现、classifier、split、seed、optimizer 和 trained heads。 Table 4/12 缺 modified ParlerTTS、checkpoints、prompts、outputs、CMOS votes,而且 WER 的 ASR/normalizer没有命名。Whisper、SenseVoice 或 SOTA API 只能是 EvoSpeech 自己的 D5/D6 evaluator,不能成为“论文同款”。

Tables 5–10 虽有清晰 aggregate ablations,却没有每行 checkpoint。重新训练是未来原创/复验研究,不是现在下载一个 current model 就能完成的 artifact replay。Table 11 A100 RTF 缺 timing harness、batch、warm-up、precision、I/O boundary 和 baseline revisions;D4 可以记录 Apple CPU 或未来 cloud GPU 时间,但 verdict 只能 approximate_platform_conditioned

D4 的固定输出与失败规则

D4 先做 asset/endpoint preflight,再写 selection,然后 encode/decode,最后 metric。固定输出有 results JSON、300-row 以上 JSONL、Markdown report、 完整 run log、selection JSON、endpoint identity 和 metric identity。任一阶段的 stdout/stderr、版本、device、wall time、artifact hash 都必须进入 log/identity。

下载失败可以安全重试同一 URL;decode/metric failure 可以为诊断重跑同一 item,但原失败 attempt 不删除,formal row 只按预先规定的 deterministic final-attempt 规则汇总。禁止因为某条太长、PESQ 报错或 UTMOS 慢就换 item。若 Docker image 无法构建,UTMOS/VUV 相关 claim 明确 failed/blocked,PESQ/STOI 仍可 执行,但不能把部分指标称“D4 全通过”。

D3 允许与禁止的结论

D3 允许说:论文数据 family/metric surface 已完整冻结;当前 UTMOS remote identity 已由 full commit、bytes、linked hash 锁定;300-item deterministic selection 和统计规则在分数前确定;13 个 claim families 已分为 strict asset/current endpoint、approximate current subset/platform timing、blocked paper experiments 和 different endpoint;个人录音不属于 D4 前置。

D3 禁止说:任何本地 quality metric 已经通过;current 80K checkpoint 复现 paper 8K checkpoint;100 items 等价全量 23,057;当前 UTMOS assets 等于 paper-time assets;75-token score 可由 40-token推断;Whisper/SenseVoice 是 paper evaluator;MUSHRA/ARCH/TTS/ablation 因为“论文给了数字”就可重放; Apple CPU timing 可以验证 A100 RTF。

下一步 D4 会严格执行这份已提交协议。若 5 GB 标准数据或 2.2 GB UTMOS judge 下载较慢,那是一次性共享资产;之后多个模型可以复用 dataset/judge cache, 不会每个模型重复下载或重复 ASR。D4 完成后才进入 WavTokenizer D5 共同英中 benchmark;两轨都完成,才把它记为 benchmark complete。

WavTokenizer D4 · 论文原生评测重建结果

结论:300/300 codec,300/300 PESQ/STOI,300/300 UTMOS/V-UV。D4 状态为 passed;这是 current-release subset cross-check,不是 paper Table 1 等价复现。

我们实际跑了什么

对 LibriTTS test-clean、test-other 与 LJSpeech 各自按冻结哈希规则选择 100 条;encoder 写出真实 12-bit token payload,独立 decoder 只得到 payload 与固定模型,然后在冻结 evaluator 中计算 UTMOS、wide-band PESQ、STOI 与 V/UV F1。Linux Docker 依赖镜像已固定并通过 import 验证;300 条正式 UTMOS/V-UV 在隔离的 RunPod CUDA 环境执行;在正式运行前,17 条已完成 CPU 结果按预先冻结阈值完成跨设备数值校准,运行身份逐项归档。没有运行 Whisper、SenseVoice、ASR API 或 owner recording。

结果

数据集 UTMOS(recon) PESQ STOI V/UV F1 author 40-token UTMOS
LibriTTS test-clean 3.7089 1.8322 0.8647 0.9139 3.6016
LibriTTS test-other 3.2845 1.7504 0.8445 0.9006 3.0545
LJSpeech 1.1 3.9928 2.0912 0.9014 0.9295 4.0186

这些差值是描述性的:本地是 80K-hour current checkpoint、每域 100 条 hash subset、current-pinned evaluator;论文是约 8K-hour checkpoint、完整语料与未锁定的 paper-time evaluator。因此数值接近或更高都不能写成“复现/超过论文”。每个均值的 median、std 与 95% bootstrap CI 在 paper_native_results.json

Payload 与资源

  • nominal representation:480 bit/s;300 条按真实帧 padding 汇总为 480.948 bit/s。
  • encoder / decoder inverse RTF(Apple CPU、含 I/O):0.0981 / 0.0807。
  • 29 条因 16→24 kHz half-sample 边界追加一个零样本;总计 29 samples,规则在 codec 前固定且逐项记录。
  • complete payload bytes 与 representation bits 分开记账;没有把 EVSWAV01 header/container bytes 冒充论文码率。

论文交叉验证的边界

13 个 claim family 的 verdict 为:2 approximate、6 blocked、2 out_of_scope、3 passed。可严格通过的是 release plot、当前 40-token endpoint 与当前 UTMOS asset identity;三数据集质量是 approximate;paper checkpoint lineage、完整 Table 1、MUSHRA、ARCH、TTS 与 ablation 因缺失原始资产继续 blocked。

D5 才使用已经缓存的英语/中文 common benchmark 与 ASR;D4 不重复跑 Whisper/SenseVoice,也不要求个人录音。

WavTokenizer D5 · 公共统一横评结果

状态:passed。这是既有共同实验的确定性模型级归档,不是一次新的 WavTokenizer、Whisper、SenseVoice、ViSQOL 或其他 evaluator 运行。 60 个逐样本 JSON 对象与父证据逐字段、逐顺序相等;唯一 aggregate、codec-audit rate object 与固定 10,000-replicate bootstrap CI 原样保留。

唯一冻结点(30 英 + 30 中)

点位 representation bps EVSWAV01 bps container overhead endpoint state ViSQOL STOI SI-SNR WavLM Resemblyzer enc ×RT dec ×RT
wavtokenizer_large_unified_480bps 480.8 1805.7 +275.58% 340,459,156 B 4.1373 0.8347 -3.79 dB 0.9109 0.8610 0.90 0.61

representation_bps 是一个 4096-entry codebook 的 12-bit index、40 frame/s,并把尾帧 padding 除以原时长;EVSWAV01 bps 还包含逐句 JSON 身份/header。短句上完整 artifact 平均比 representation 高 +275.58%。这不是模型表示突然变成 1.8 kbps,而是当前审计容器把本可按 session 固定的 checkpoint/config 字段逐句重复。原创传输协议必须缩短或摊销 metadata,但不能为了数字好看而不计它。

340,459,156 loaded state bytes 是同一 checkpoint 分别驻留在 encoder 与 decoder endpoint 的共享成本,不是每句 payload;active path 为 305,250,060 bytes。80,913,988 loaded parameters、1.76-GB checkpoint artifact、Python/source 与 payload 继续分账。极小 token stream 并不自动意味着极小系统。

语言条件、内容评委与 95% CI

语言 ViSQOL [95% CI] STOI [95% CI] Whisper ΔER [95% CI] SenseVoice ΔER [95% CI] F0 RMSE Hz [95% CI]
en 3.9384 [3.8962, 3.9828] 0.8704 [0.8555, 0.8824] +0.1160 [+0.0684, +0.1673] +0.1244 [+0.0831, +0.1692] 8.3189 [6.5678, 10.5637]
zh 4.3362 [4.2703, 4.4011] 0.7989 [0.7797, 0.8166] +0.4390 [+0.3690, +0.5113] +0.2773 [+0.2074, +0.3552] 16.2876 [12.4714, 20.7220]

ΔER = decoded error rate − original-audio error rate。英文两个 ASR 都显示明确退化:Whisper +0.1160、SenseVoice +0.1244;中文退化更大,但幅度明显依 evaluator 而变:Whisper +0.4390、SenseVoice +0.2773。不能挑较小的一个宣布内容保持,也不能把两者平均成 ground truth。

原始中文音频的 reference CER 已强烈分歧:Whisper mean 0.2617,SenseVoice mean 0.0494。D5 因而保留原音 hypothesis、decoded hypothesis 和两套 delta;这些数字是已固定 evaluator 的描述性证据,不是中文转写真值。

中文 ViSQOL 4.3362 高于英文 3.9384,但中文 STOI 0.7989 低于英文 0.8704,两个 ASR delta、F0 与 speaker proxies 也更差。这不是悖论:ViSQOL 的 speech-mode MOS-LQO、可懂度、内容与身份观察的维度不同,两语料也不只差语言。单一高 ViSQOL 不能覆盖明显的中文内容损失。

从这个模型学到什么

  1. 低 token rate 是真实突破,但只是表示轴。 当前点用单码本、40 token/s、约 480.8 bit/s 保持全体 ViSQOL 4.1373,证明强训练先验可以把大量声学信息移入共享 decoder;代价是 340.5-MB state、非因果结构与本机 encode/decode 均低于 1× realtime。
  2. 内容必须独立成硬约束。 英中双 ASR 都显示重建退化,尤其中文;只优化 UTMOS/ViSQOL 很可能得到听起来顺滑、却改词或损失关键实体的 codec。原创进化 reward 必须把内容、关键实体和否定/数字顺序与自然度分开。
  3. container overhead 暴露系统设计空间。 12-bit codes 已紧凑 bit-pack,主要浪费来自逐句重复的 JSON identity。未来 CandidateContract 应把不可变模型身份放在会话/握手层,只在 packet 中携带最小版本、长度与校验,同时由 evaluator 独立计全部真实字节。
  4. 最小表示不等于最小充分表示。 480 bps 的漂亮 headline 与中文内容、speaker proxy、实时性和 340-MB prior 必须同时进入 Pareto。真正问题是:在给定 decoder state、延迟、算力、语言与错误率条件下,最小多少 bit 足够。
  5. large-unified 的价值还不能归因。 D5 没有同场运行 small-speech 40-token checkpoint;两个点图相同、参数相同、权重不同。当前结果不能证明 large-unified training 比 small 更好,更不能把训练小时数当因果解释。

D4 与 D5 的正确组合

D4 在 LibriTTS test-clean/test-other 与 LJSpeech 的另一个确定性子集运行 current large-unified checkpoint,复现当前 release 的 UTMOS/PESQ/STOI/V-UV surface;D5 在 LibriSpeech/FLEURS 中英共同集保留 ViSQOL、双 ASR、speaker/expression proxy 与本机 runtime。两者模型身份相同但语料、指标、采样和目的不同,不能拼接成 paper Table 1 或一个虚构的综合分。

D4 的 300-row CUDA metric run、D5 的 60-row macOS codec/evaluator结果也属于不同 runtime lane;D5 不用 GPU 时间替换 parent runtime。二者共同说明当前 release 的能力与失败面,但 paper 约 8K-hour checkpoint lineage 仍未建立。

明确没有证明什么

D5 没有评测 small-speech 40-token 或 75-token endpoint;没有复现论文完整 Table 1、MUSHRA、ARCH、TTS、ablation 或 A100 timing;没有验证噪声、丢包、误码、对话、长音频、关键实体专集、六语泛化、流式延迟、移动端或训练成本。 自动质量、内容、speaker 与 expression proxies 不等于人的自然度、身份、表达和总体偏好。个人录音仍是可选 D6 扩展,不阻塞本 Gate。 D5 passed 的准确含义只是:WavTokenizer large-unified 480-bps 的公共 60-row benchmark 档案完整、来源明确,并能由 16 个冻结父/模型证据确定性重建。

WavTokenizer D5 · 公共统一横评结果

状态:passed。这是既有共同实验的确定性模型级归档,不是一次新的 WavTokenizer、Whisper、SenseVoice、ViSQOL 或其他 evaluator 运行。 60 个逐样本 JSON 对象与父证据逐字段、逐顺序相等;唯一 aggregate、codec-audit rate object 与固定 10,000-replicate bootstrap CI 原样保留。

唯一冻结点(30 英 + 30 中)

点位 representation bps EVSWAV01 bps container overhead endpoint state ViSQOL STOI SI-SNR WavLM Resemblyzer enc ×RT dec ×RT
wavtokenizer_large_unified_480bps 480.8 1805.7 +275.58% 340,459,156 B 4.1373 0.8347 -3.79 dB 0.9109 0.8610 0.90 0.61

representation_bps 是一个 4096-entry codebook 的 12-bit index、40 frame/s,并把尾帧 padding 除以原时长;EVSWAV01 bps 还包含逐句 JSON 身份/header。短句上完整 artifact 平均比 representation 高 +275.58%。这不是模型表示突然变成 1.8 kbps,而是当前审计容器把本可按 session 固定的 checkpoint/config 字段逐句重复。原创传输协议必须缩短或摊销 metadata,但不能为了数字好看而不计它。

340,459,156 loaded state bytes 是同一 checkpoint 分别驻留在 encoder 与 decoder endpoint 的共享成本,不是每句 payload;active path 为 305,250,060 bytes。80,913,988 loaded parameters、1.76-GB checkpoint artifact、Python/source 与 payload 继续分账。极小 token stream 并不自动意味着极小系统。

语言条件、内容评委与 95% CI

语言 ViSQOL [95% CI] STOI [95% CI] Whisper ΔER [95% CI] SenseVoice ΔER [95% CI] F0 RMSE Hz [95% CI]
en 3.9384 [3.8962, 3.9828] 0.8704 [0.8555, 0.8824] +0.1160 [+0.0684, +0.1673] +0.1244 [+0.0831, +0.1692] 8.3189 [6.5678, 10.5637]
zh 4.3362 [4.2703, 4.4011] 0.7989 [0.7797, 0.8166] +0.4390 [+0.3690, +0.5113] +0.2773 [+0.2074, +0.3552] 16.2876 [12.4714, 20.7220]

ΔER = decoded error rate − original-audio error rate。英文两个 ASR 都显示明确退化:Whisper +0.1160、SenseVoice +0.1244;中文退化更大,但幅度明显依 evaluator 而变:Whisper +0.4390、SenseVoice +0.2773。不能挑较小的一个宣布内容保持,也不能把两者平均成 ground truth。

原始中文音频的 reference CER 已强烈分歧:Whisper mean 0.2617,SenseVoice mean 0.0494。D5 因而保留原音 hypothesis、decoded hypothesis 和两套 delta;这些数字是已固定 evaluator 的描述性证据,不是中文转写真值。

中文 ViSQOL 4.3362 高于英文 3.9384,但中文 STOI 0.7989 低于英文 0.8704,两个 ASR delta、F0 与 speaker proxies 也更差。这不是悖论:ViSQOL 的 speech-mode MOS-LQO、可懂度、内容与身份观察的维度不同,两语料也不只差语言。单一高 ViSQOL 不能覆盖明显的中文内容损失。

从这个模型学到什么

  1. 低 token rate 是真实突破,但只是表示轴。 当前点用单码本、40 token/s、约 480.8 bit/s 保持全体 ViSQOL 4.1373,证明强训练先验可以把大量声学信息移入共享 decoder;代价是 340.5-MB state、非因果结构与本机 encode/decode 均低于 1× realtime。
  2. 内容必须独立成硬约束。 英中双 ASR 都显示重建退化,尤其中文;只优化 UTMOS/ViSQOL 很可能得到听起来顺滑、却改词或损失关键实体的 codec。原创进化 reward 必须把内容、关键实体和否定/数字顺序与自然度分开。
  3. container overhead 暴露系统设计空间。 12-bit codes 已紧凑 bit-pack,主要浪费来自逐句重复的 JSON identity。未来 CandidateContract 应把不可变模型身份放在会话/握手层,只在 packet 中携带最小版本、长度与校验,同时由 evaluator 独立计全部真实字节。
  4. 最小表示不等于最小充分表示。 480 bps 的漂亮 headline 与中文内容、speaker proxy、实时性和 340-MB prior 必须同时进入 Pareto。真正问题是:在给定 decoder state、延迟、算力、语言与错误率条件下,最小多少 bit 足够。
  5. large-unified 的价值还不能归因。 D5 没有同场运行 small-speech 40-token checkpoint;两个点图相同、参数相同、权重不同。当前结果不能证明 large-unified training 比 small 更好,更不能把训练小时数当因果解释。

D4 与 D5 的正确组合

D4 在 LibriTTS test-clean/test-other 与 LJSpeech 的另一个确定性子集运行 current large-unified checkpoint,复现当前 release 的 UTMOS/PESQ/STOI/V-UV surface;D5 在 LibriSpeech/FLEURS 中英共同集保留 ViSQOL、双 ASR、speaker/expression proxy 与本机 runtime。两者模型身份相同但语料、指标、采样和目的不同,不能拼接成 paper Table 1 或一个虚构的综合分。

D4 的 300-row CUDA metric run、D5 的 60-row macOS codec/evaluator结果也属于不同 runtime lane;D5 不用 GPU 时间替换 parent runtime。二者共同说明当前 release 的能力与失败面,但 paper 约 8K-hour checkpoint lineage 仍未建立。

明确没有证明什么

D5 没有评测 small-speech 40-token 或 75-token endpoint;没有复现论文完整 Table 1、MUSHRA、ARCH、TTS、ablation 或 A100 timing;没有验证噪声、丢包、误码、对话、长音频、关键实体专集、六语泛化、流式延迟、移动端或训练成本。 自动质量、内容、speaker 与 expression proxies 不等于人的自然度、身份、表达和总体偏好。个人录音仍是可选 D6 扩展,不阻塞本 Gate。 D5 passed 的准确含义只是:WavTokenizer large-unified 480-bps 的公共 60-row benchmark 档案完整、来源明确,并能由 16 个冻结父/模型证据确定性重建。