# Bàn giao — nhánh tối ưu ngoài miền

Đọc file này trước khi làm bất cứ thí nghiệm nào. Nó ghi lại **bảy hướng đã thử và thất bại**, để không lặp lại.

Nhánh song song (viết bài) dùng bộ `ban-giao-00` → `03` và `abstract-va-bo-cuc-ban-gian-di.md`. Hai nhánh chia sẻ cùng checkpoint và cùng đường ống đánh giá.

---

## 1. Vấn đề trong một đoạn

Encoder Audio-JEPA (ViT-Base 86 M, tiền huấn luyện AudioSet-2M) + gộp thống kê chú ý + đầu phân lớp, huấn luyện trên ASVspoof2019 LA train. Hệ hoạt động tốt trên dữ liệu có giọng thật từ **VCTK** — cùng kho ghi âm với tập huấn luyện — và kém hẳn trên mọi kho ghi âm khác. Mục tiêu của nhánh này: **tìm cách hoạt động tốt ngoài miền**.

---

## 2. Số liệu hiện tại

EER %, thấp là tốt. Đường ống Speech DF Arena, cổng `aasist` khớp số công bố trên ba tập.

| tập | giọng thật từ | JEPA đóng băng *(0,5 M học)* | JEPA fine-tune *(86 M)* | AASIST | tốt nhất công bố |
|---|---|---|---|---|---|
| **DFADD** | **VCTK** | **8,47 ± 0,35** | 10,75 ± 3,48 | 39,05 | 7,54 |
| ASVspoof2019 LA | **VCTK** *(tập train)* | 17,70 ± 1,44 | **7,39 ± 0,69** | 0,83 | 0,12 |
| ADD22 Track 1 | tiếng Trung | — | 44,10 ± 2,04 | 47,92 | 31,04 |
| LibriSeVoc | LibriTTS | 47,38 ± 4,19 | 41,96 ± 2,93 | 37,95 | 1,72 |
| In-the-Wild | YouTube | 47,55 ± 8,55 | 52,00 *(1 seed)* | 43,02 | 6,70 |

Ba tập cuối là mục tiêu của nhánh này. Ngưỡng tối thiểu để có tiến bộ đáng báo cáo: **thắng AASIST** — 37,95 · 43,02 · 47,92.

**Ablation mục tiêu SSL** (ASVspoof2019, ba seed): JEPA 7,39 ± 0,69 · AudioMAE 13,25 ± 0,57 · khởi tạo ngẫu nhiên 13,68.

---

## 3. Chẩn đoán đã có

**Không phải lỗi dấu.** Trên LibriSeVoc, điểm trung bình lớp thật cao hơn lớp giả ở mọi hệ. Chiều đúng.

**Không phải quá khớp.** Quét 2/3/4/6 epoch: trên DFADD hiệu năng cải thiện **đơn điệu theo số epoch**; trên LibriSeVoc không cấu hình nào vượt AASIST. Giảm epoch làm giảm bão hoà điểm số (|hiệu logit| từ ~14 xuống 5–8) nhưng **không** cải thiện khả năng phân biệt.

**Là lệch kho ghi âm nguồn.** Quy luật duy nhất giải thích được cả năm tập: mạnh khi giọng thật là VCTK, yếu khi là LibriTTS / YouTube / tiếng Trung.

**Bão hoà điểm số** là triệu chứng đi kèm: trên LibriSeVoc khoảng cách trung bình giữa hai lớp chỉ 0,24–0,62 (AASIST: 0,81), điểm dồn quanh −14.

---

## 4. ĐÃ THỬ VÀ THẤT BẠI — đừng lặp lại

| # | hướng | kết quả | ghi chú |
|---|---|---|---|
| 1 | **backend đồ thị AASIST** thay gộp thống kê | ASVspoof19 8,76 *(vs 6,78)*; In-the-Wild **65,78** *(vs 52,00)* | lợi thế AASIST phụ thuộc đặc trưng khung dày của wav2vec2 (~128 khung/2,56 s); patch ViT chỉ cho 16–32 bước thời gian nên đồ thị thời gian gần như rỗng |
| 2 | **khớp đúng quy cách mel lúc tiền huấn luyện** (10 s, hop 39 ms, fmax 16000) | holdout A05 cải thiện 5× (2,46 vs ~12) nhưng ASVspoof19 eval **tệ đi** (9,41 vs 6,78); In-the-Wild 55,18 vs 52,00 | quy cách tối ưu cho sự kiện âm thanh 10 s không phải quy cách tốt cho phát hiện giả mạo |
| 3 | **đóng băng encoder** | thắng ở DFADD (8,47 vs 10,75) nhưng thua ở LibriSeVoc (47,38 vs 41,96); In-the-Wild ba seed 37,74 · 51,52 · 53,39, độ lệch 8,55 | lợi thế chỉ đặc thù DFADD, không phải quy luật |
| 4 | **giảm số epoch** (2/3/4) | LibriSeVoc tốt nhất 40,82 ở 3 epoch, vẫn thua AASIST 37,95 | xem mục 3 |
| 5 | **hợp nhất z-score ba seed** | ASVspoof19 7,17 *(vs 6,78 seed tốt nhất)* | |
| 6 | **holdout A05 để chọn siêu tham số** | **nghịch chiều bốn lần**: Spearman −1,00 với CodecFake; MAE thắng A05 gấp ba nhưng thua ASVspoof eval gấp đôi; mel đúng cho A05 2,46 nhưng eval 9,41 | **không dùng A05 để chọn gì cả**, chỉ để theo dõi |
| 7 | **quét learning rate** trên lưới cũ | cực tiểu nằm ở mép lưới, và giá trị tối ưu khác nhau theo tập test | |

---

## 5. Hướng CHƯA thử, xếp theo mức hứa hẹn

**1. Huấn luyện đa nguồn.** Nguyên nhân trực tiếp nhất là chỉ dùng ASVspoof2019 (VCTK). Thêm dữ liệu huấn luyện từ kho ghi âm khác — LibriTTS, CommonVoice, VoxCeleb — là cách chắc ăn nhất. Cần tập huấn luyện mới, không chỉ tập test.

**2. Tăng cường dữ liệu kiểu RawBoost.** Chuẩn mực của ngành để phá dấu hiệu kênh truyền. Ta **chưa dùng gì ngoài SpecAugment cơ bản**. Rẻ và có nhiều khả năng ăn.

**3. Chuẩn hoá đặc trưng theo từng utterance.** Nếu mô hình bám vào đặc tính kênh, chuẩn hoá mean/var theo từng mẫu (CMVN) trước khi đưa vào encoder có thể xoá phần lớn dấu hiệu đó. Một dòng code.

**4. Bộ predictor của JEPA làm điểm phát hiện.** Checkpoint `JEPA.ckpt` chứa đủ `encoder` (149 tensor), `target_encoder` (149), `predictor` (80, `predictor_embed` 768→384). Che một phần mảnh, dự đoán biểu diễn phần bị che, lấy sai số làm điểm bất thường. Chỉ suy luận, không cần tiền huấn luyện lại. Đây là hướng duy nhất mang tính riêng của JEPA.

**5. Che theo dải tần khi tiền huấn luyện tiếp.** Audio-JEPA kế thừa cách che của I-JEPA (thiết kế cho ảnh, hai trục tương đương). Với phổ thì hai trục khác nhau về bản chất. Che vùng tần cao và bắt đoán từ vùng thấp có thể hợp hơn. Cần tiền huấn luyện tiếp, chi phí cao.

**6. Tiền huấn luyện tiếp trên tiếng nói không nhãn.** Tách được ảnh hưởng của miền tiền huấn luyện khỏi ảnh hưởng của mục tiêu SSL.

---

## 6. Hạ tầng dùng lại được

**Checkpoint trên Drive** `MyDrive/jepa_spoof/`:

| tên | cấu hình |
|---|---|
| `audio_jepa_s1/s2/s3` | fine-tune đầy đủ, mel cũ, 6 epoch — **hệ chính** |
| `audio_mae_s1/s2/s3` · `audio_rand_s1` | đối chứng mục tiêu SSL |
| `jfrz_s1/s2/s3` | encoder đóng băng, mel cũ |
| `jep_ep2/ep3/ep4` | quét epoch |
| `fix_e6/e2/frz` | mel theo quy cách tiền huấn luyện *(hướng đã loại)* |

**Cấu hình mel của hệ chính** — dùng lại nguyên: 32 kHz, 128 dải, 20–8000 Hz, cửa sổ 25 ms, bước 10 ms, cắt 2,56 s → 256 khung, patch (8,32) → lưới 32×4 = 128 token.

**Notebook** (thư mục outputs):

| | dùng để |
|---|---|
| `v34_chon_bang_chuot` | chấm một tập bất kỳ, chọn bằng dropdown, không cần gõ |
| `v35_quet_epoch` | mẫu để train nhiều cấu hình rồi chấm |
| `v36_dong_bang` | mẫu train encoder đóng băng |
| `v37_dongbang_ngoai_mien` | mẫu chấm nhiều tập bằng checkpoint có sẵn |

**Nguồn dữ liệu:** tổ chức `SpeechAntiSpoofingBenchmarks` trên HuggingFace đóng gói ~24 tập anti-spoofing dạng parquet, schema chung (`path`, `audio` 16 kHz, `label`), tải nhanh gấp ~30 lần Zenodo.

---

## 7. Quy tắc bắt buộc

**Luôn chạy `aasist` kèm làm cổng.** Giá trị đối chiếu: ASVspoof19 **0,82** · ADD22-T1 **47,91** · LibriSeVoc **37,65** · In-the-Wild **43,00** · DFADD **41,86**. Lệch quá 1,5 điểm nghĩa là protocol khác, phải ghi rõ.

**Ba seed tối thiểu.** Đã có ba lần một seed cho kết luận ngược với ba seed. Cụ thể: ADD22-T1 một seed cho "JEPA thắng MAE 0,67", ba seed cho "MAE thắng JEPA 2,08".

**Kiểm va chạm tiền tố tên checkpoint.** Arena tra file bằng `startswith`, nên `audio_mae` khớp cả `audio_mae_s2.pth`. Lỗi này đã làm hỏng một bảng kết quả.

**Assert bằng số tuyệt đối, không theo tỉ lệ.** `len(x) >= 0.99*len(y)` lọt khi cả hai bằng 0.

Chín cạm bẫy kỹ thuật khác của đường ống arena nằm trong `ban-giao-03-cam-nang-arena.md`.
