# Bài 5: nén audio khác với sinh token audio mới

[Bắt đầu](00-BAT-DAU-LOP-02.md) · Trước: [diffusion/FM](04-DIFFUSION-VA-FLOW-MATCHING.md) · Tiếp: [task/threat/supervision](06-THREAT-MODEL-DAU-RA-SUPERVISION.md)

## Mục tiêu và tiền đề

Bạn cần tính hai tầng residual quantization, đọc một ma trận token, phân biệt compression/entropy coding với generation, và đặt nhãn codec audio theo task. Cần vector, khoảng cách bình phương và factorization AR ở bài 3. **Codebook** là bảng vector; **index/token** là số chọn entry; index 5 không nghĩa biên độ 5.

## 1. Ba khối codec, hai cách có được tokens

```mermaid
flowchart LR
    X[Waveform ghi âm] --> E[Codec encoder]
    E --> Z[Latent liên tục]
    Z --> Q[Quantization]
    Q --> C[Codec indices]
    C --> D[Tra codebook và codec decoder]
    L[Audio LM: text/prompt tới tokens mới] --> D
    D --> W[Waveform tái tạo hoặc được sinh]
```

Compression đi từ waveform cần truyền qua encoder/quantizer; output cố gắng tái tạo bản ghi. Audio LM có thể sample tokens mới conditioned on text/prompt; output có thể là lời nói mới chưa có waveform tương ứng. Hai nhánh dùng chung decoder không làm hai task bằng nhau.

EnCodec §3 có encoder, RVQ và decoder; training kết hợp reconstruction/adversarial/commitment losses. LM ở §3.3 phục vụ **entropy coding**: dự đoán probability để mã hóa hiệu quả tokens đã lấy từ audio. Nó không tự sửa/sinh lại content của bản ghi. [EnCodec](https://arxiv.org/pdf/2210.13438).

**Phản ví dụ:** một codec dùng LM cho arithmetic coding vẫn truyền đúng discrete tokens, nếu coding/decoding đúng. Chỉ thấy “language model” trong codec chưa đủ gọi cuộc gọi là synthetic speech generation.

## 2. RVQ: codebook sau sửa phần còn dư

Residual vector quantization (RVQ) bắt đầu với latent $z$, đặt $r_0=z$. Ở tầng $j$, bảng $C_j$ chứa các vectors. Chọn vector $q_j$ gần residual nhất theo distance đã định; đặt $r_j=r_{j-1}-q_j$. Sau K tầng, quantized vector $\hat z=\sum_{j=1}^Kq_j$, residual $z-\hat z=r_K$. Đây là quy tắc greedy quantization; encoder/decoder/codebooks được học có thể làm quality perceptual khác raw latent error.

**Toy một chiều, biên soạn:** $z=1,7$; $C_1=\{0,1,2\}$; $C_2=\{-0.5,\ 0,\ +0.5\}$ (dùng dấu chấm trong tập này để tách rõ ba entries −0,5 / 0 / +0,5).

1. Tầng 1 chọn 2 vì khoảng cách 0,3 nhỏ nhất; $r_1=-0,3$.
2. Tầng 2 chọn −0,5 vì distance 0,2; $r_2=0,2$.
3. Sum là 1,5; squared latent error 0,04. Chỉ tầng 1 error 0,09.

Tokens lưu **indices** của 2 và −0,5 trong hai bảng, không lưu số 1,5 dưới dạng waveform. Decoder đọc chuỗi vector sums và tái tạo waveform; giảm latent error không bảo đảm mọi spectral cue/phân loại forensic được bảo toàn.

Một codebook không có entry 0 còn có thể làm residual norm tăng ở bước greedy nào đó; không có định lý “thêm mọi codebook tùy ý đều cải thiện” cho mọi metric. EnCodec multi-bandwidth training là một thiết kế cụ thể, không phải quy luật cho mọi codec.

## 3. Ma trận token và bitrate

Đặt $N$ là số latent time steps, $K$ số codebooks, $M$ số entries mỗi bảng. Token matrix có $N\times K$ indices. Nếu latent rate $r$ steps/s và dùng fixed-length coding, nominal bitrate $rK\log_2 M$ bits/s, chưa tính headers/scales/entropy coding.

**Toy tính toán:** r=50, K=4, M=256 → 50×4×8=1.600 bits/s. Clip 2 s có 100×4=400 indices. 400 token symbols không phải 400 time steps; mỗi time step có bốn indices. Tăng K làm token matrix rộng hơn, không tăng temporal sample rate r.

VALL-E original §3–4 dùng EnCodec 24 kHz, 75 latent steps/s, 8 codebooks×1.024 entries: 6.000 bits/s nominal. Codebook đầu được model AR theo thời gian; các tầng còn lại được predict NAR theo thời gian và sequential theo tầng. [VALL-E](https://arxiv.org/pdf/2301.02111).

Đừng mặc định mọi audio LM flatten matrix cùng cách. Có thể order time-major, codebook-major, delayed interleaving hoặc masked iterative decoding. Các ordering tạo different conditionals/latency; nhìn shape chưa đủ suy factorization. Những lựa chọn này là schema phân tích, không claim VALL-E dùng tất cả.

## 4. Tách các nguồn sai khác

**Suy luận biên soạn:** với reference $x$, codec reconstruction $\hat x=D(Q(E(x)))$ và LM generation $\tilde x=D(\tilde C)$, ta có ba câu hỏi khác nhau:

- Codec reconstruction đổi gì so với x dưới bitrate/config đã chọn?
- LM sampled codes khác observed codes ở nội dung, duration hoặc tương quan thế nào?
- Decoder và signal chain làm gì với cả hai nhánh?

Không thể gán toàn difference $\tilde x-x$ cho token LM, vì x có thể không là paired target và codec đã gây reconstruction change. Một codec-trained detector bắt được ALM samples trong một study là transfer evidence có điều kiện, không chứng minh codec traces đủ cho mọi future ALM.

CodecFake **Wu et al., 2406.07237** dùng codec resynthesis để làm training data và thử transfer tới codec TTS (§2–3). Tên gần giống Codecfake của Xie/Lu là nguồn khác; xem passport. [CodecFake paper](https://arxiv.org/pdf/2406.07237), [project chính thức](https://codecfake.github.io/).

## 5. Nhãn và Audio-JEPA

Codec audio không tự spoof: đối với cuộc gọi bona fide, nén là nuisance hợp lệ; đối với benchmark process-origin, codec resynthesis có thể được gán spoof. Nếu detector học “neural decoder=spoof” và triển khai ở cuộc gọi dùng decoder đó, nó có nguy cơ false alarm theo operational label mới. Đây là case logic, chưa đo trên hệ của mình.

Audio-JEPA paper xử lý log-mel của waveform, **không dùng codec tokens làm detector input**. “128 tokens” trong encoder là patch vectors liên tục từ mel; chúng khác discrete codec indices. Đổi bitrate có thể thay signal và cues, nhưng muốn kết luận encoder nhạy/kháng codec phải có evaluation có kiểm soát. [Chương 06 §3](../06-GIAI-PHAU-PAPER.md).

## Bài tập

1. Toy z=0,6 với hai codebooks ở trên. Chọn q1/q2, tính sum/residual. Tầng 2 có đang quantize lại z trực tiếp không?
2. r=50, K=6, M=256, clip 2 s. Bitrate/shape là gì? K tăng có tăng temporal resolution không?
3. Cùng decoder tạo (a) nén lời nói thật, (b) TTS tokens mới. Một detector có nên dùng cùng label chỉ vì decoder giống nhau?
4. Tất cả codebooks đầu là semantic, sau là acoustic: có được coi là định luật RVQ không?

<details>
<summary>Đáp án có giải thích</summary>

1. q1=1; r1=−0,4; q2=−0,5; sum=0,5, residual=0,1. Tầng 2 quantize residual; nếu quantize z lại sẽ sai algorithm.
2. 2.400 bits/s, shape 100×6. Temporal rate vẫn 50; thêm residual detail/budget, không thêm time positions.
3. Nhãn dựa task và provenance chain. Decoder chung có thể cho shared cue nhưng không quyết định legitimacy, consent hay intent.
4. Không. RVQ định residual approximation; semantic/acoustic separation còn phụ thuộc objectives, architecture và probes. Đó có thể là design/claim của một tokenizer cụ thể, không suy từ chỉ số codebook.

</details>

## Đào sâu tự chọn

Thử flatten một matrix 2×3 theo time-major và codebook-major, ghi prefix mà từng token thấy. Sau đó so với hybrid AR/NAR của VALL-E: một factorization là lựa chọn model, không phải thuộc tính duy nhất của token matrix.
