# Hồ sơ nguồn kiến trúc kỹ thuật

**Cập nhật:** 2026-10-11 (Asia/Saigon)  
**Phạm vi:** nguồn phương pháp và hiện thực chính thức liên quan đến bộ phát hiện giả mạo âm thanh của lớp 4. Hồ sơ này đối chiếu các ghi chú trong 04-KY-THUAT-DETECTOR.md, 07-LITERATURE.md, phần phương pháp của 06-GIAI-PHAU-PAPER.md và công thức liên quan trong lop-03-ssl-jepa/14-HO-SO-RECIPE.md với bài báo/mã nguồn gốc. Nó không sửa nội dung chương hay xác nhận thực nghiệm của dự án.

## Cách đọc và giới hạn

- **F — toàn văn/tài liệu cục bộ:** đã đọc toàn bộ tệp ghi chú cục bộ được nêu trong phạm vi.
- **P — phần phương pháp:** đã mở và đọc các mục phương pháp/thiết lập liên quan của bài báo, không hàm ý đã đọc toàn bài.
- **R — mã/config:** đã mở các tệp mã hoặc cấu hình được dẫn; không chạy mã và không kiểm toán mọi helper/phụ thuộc.
- **P-fragment — trích đoạn:** chỉ lấy được một phần văn bản nguồn; không coi là đã đọc PDF/toàn văn.

Đã đọc toàn bộ bốn ghi chú cục bộ nêu trên (**F**). Các URL GitHub dùng commit SHA đã tra từ nhánh chính trong ngày ghi hồ sơ. Không tải checkpoint hay corpus, không huấn luyện/chạy model và không đánh giá kết quả. Các nhận định về phương pháp của bài Audio-JEPA downstream bên dưới là đối chiếu với bản ghi phương pháp cục bộ của dự án; PDF bài SOICT gốc chưa được mở lại để kiểm chứng độc lập.

## LFCC-GMM và CQCC-GMM — baseline ASVspoof 2021

### LFCC-GMM

- **Nguồn:** [script MATLAB baseline chính thức](https://github.com/asvspoof-challenge/2021/blob/9b33f5eca887bd3bf629e3fb79428cd9bb7ac972/LA/Baseline-LFCC-GMM/matlab/LFCC_GMM_ASVspoof_2021_baseline.m), repo asvspoof-challenge/2021, commit 9b33f5eca887bd3bf629e3fb79428cd9bb7ac972; tiêu đề trong script “High resolution LFCC and GMM”; tác giả ghi trong header: Massimiliano Todisco, EURECOM, 2021. **Đã đọc:** R, phần cấu hình, huấn luyện, đánh giá.
- **Claim hỗ trợ:** script đặt use_preTrained_models=true mặc định. Nhánh huấn luyện dùng LFCC với cửa sổ 30 ms, NFFT 1024, 70 bộ lọc, 19 hệ số gồm c0, dải 0–4000 Hz; hai GMM lớp 512 thành phần, tối đa 10 vòng lặp. Script đọc protocol LA của ASVspoof 2019 để huấn luyện và chấm các tệp LA 2021 bằng hiệu trung bình log-likelihood bonafide − spoof. LFCC được lấy ở dạng tĩnh, delta và delta-delta.
- **Caveat:** không chạy helper lfcc_bp, protocol hoặc GMM. Trong vòng lấy mẫu spoof, code lặp theo spoofIdx nhưng đường dẫn âm thanh được tạo từ filelist{bonafideIdx(i)}. Đây là sai khác chỉ số nhìn thấy trong source; vì nhánh pretrained bật mặc định, chưa xác định nó có ảnh hưởng thế nào khi huấn luyện thực tế hoặc tới artifact/checkpoint phát hành. Không suy ra số lượng/tính hợp lệ các mẫu từ đây.
- **Ví dụ / phản ví dụ:** đây là baseline đặc trưng phổ + likelihood hai lớp; không phải mạng end-to-end từ waveform. Không nên tuyên bố đã tái tạo baseline chỉ vì dùng tên “LFCC-GMM” nếu tham số, protocol, model pretrained/tự huấn luyện và bước tính điểm khác.

### CQCC-GMM

- **Nguồn:** [script MATLAB baseline chính thức](https://github.com/asvspoof-challenge/2021/blob/9b33f5eca887bd3bf629e3fb79428cd9bb7ac972/LA/Baseline-CQCC-GMM/matlab/CQCC_GMM_ASVspoof_2021_baseline.m), cùng repo/commit; tiêu đề “High time resolution CQCC and GMM”; tác giả ghi Massimiliano Todisco, EURECOM, 2021. **Đã đọc:** R, cấu hình, nhánh lấy mẫu, chấm điểm.
- **Claim hỗ trợ:** use_preTrained_models=true mặc định. Nhánh huấn luyện đặt 12 bins/octave, fmin=62.5 Hz, fmax=4000 Hz, d=16, cf=19 hệ số không gồm c0, tùy chọn ZsdD; GMM có 512 thành phần và tối đa 10 vòng. Nhánh spoof chọn mỗi mẫu thứ 10 (spoof_ds=10, so với bona 1), huấn luyện từ ASVspoof 2019 LA và đánh giá ASVspoof 2021 LA với hiệu trung bình log-likelihood bonafide − spoof.
- **Caveat:** trong vòng lấy mẫu spoof, source tham chiếu filelist{bonafideIdx(i)} thay vì spoofIdx(i), tương tự script LFCC. Chưa chạy script hoặc audit cqcc()/compute_llk(); chưa xác định ý đồ/chất lượng cân bằng của lấy mỗi mẫu spoof thứ 10. Tác động lên artifact/checkpoint dựng sẵn chưa rõ.
- **Ví dụ / phản ví dụ:** CQCC và LFCC là hai frontend khác nhau, dù cùng dùng GMM và cùng kiểu likelihood score. Kết quả của chúng không thể được coi là cùng một baseline chỉ vì cả hai có hậu tố GMM.

### Protocol đánh giá ASVspoof 2021

- **Nguồn:** [ASVspoof 2021 Evaluation Plan](https://www.asvspoof.org/asvspoof2021/asvspoof2021_evaluation_plan.pdf), do ban tổ chức ASVspoof; thông tin tác giả cá nhân chưa xác minh. **Đã đọc:** P-fragment — lấy được trích đoạn mục 7.2 và 8; thao tác mở toàn PDF bị timeout, nên đây không phải xác nhận đã đọc toàn tài liệu.
- **Claim hỗ trợ:** mục 7.2 liệt kê các baseline LFCC-GMM, CQCC-GMM, LFCC-LCNN và RawNet2. Trích đoạn mục 8 nói chấm từng mẫu kiểm tra độc lập; không dùng domain adaptation trên tập test hoặc chuẩn hóa score bằng chính score tập test.
- **Caveat:** cần mở PDF toàn văn trước khi trích dẫn các điều khoản khác hoặc diễn giải chi tiết giao thức. Không dùng trích đoạn này để khẳng định các ràng buộc ngoài nội dung đã lấy được.
- **Ví dụ / phản ví dụ:** chuẩn hóa ngưỡng bằng dev trước khi đánh giá khác với lấy thống kê score của tập eval để tự hiệu chỉnh; không gộp hai thao tác này dưới cụm “calibration” chung chung.

## RawNet2: bài báo và cấu hình baseline 2021 là hai recipe riêng

### Bài báo RawNet2

- **Nguồn:** [End-to-end anti-spoofing with RawNet2](https://arxiv.org/html/2011.01108), Hemlata Tak, Jose Patino, Massimiliano Todisco, Andreas Nautsch, Nicholas Evans, Anthony Larcher, arXiv v3 (2021). **Đã đọc:** P, mục phương pháp 3 và thiết lập/thí nghiệm 4.1–4.4; không hàm ý đã đọc toàn bài.
- **Claim hỗ trợ:** recipe của bài nhận khoảng 64.000 mẫu waveform; frontend Sinc có 128 bộ lọc cố định, kernel 129, theo sau bởi max-pool(3), hai residual block 128 kênh rồi bốn block 512 kênh, filter-wise feature-map scaling (FMS), GRU 1024 và fully-connected 1024 với 2 lớp. Bài mô tả các dải lọc S1 Mel, S2 inverse-Mel, S3 linear là cố định. Bài báo cáo score fusion SVM; LFCC L + RawNet2 S1 cải thiện EER và min t-DCF so với LFCC L riêng trong thiết lập được báo cáo.
- **Caveat:** tác giả nêu các giải thích về cue của một số codec/attack như giả thuyết, không phải kết luận nhân quả. Fusion cho thấy tính bổ sung của score trong tập đánh giá đó, không chứng minh đặc trưng nào là nguyên nhân. Kết quả ASVspoof 2019 không đảm bảo tổng quát sang corpus khác.
- **Ví dụ / phản ví dụ:** fusion score SVM của hai hệ thống là bằng chứng về tổ hợp score trong thí nghiệm; nó không đồng nghĩa một head attention trên embedding chắc chắn học cùng phép kết hợp hoặc sẽ có cùng hiệu quả.

### RawNet2 trong repo baseline ASVspoof 2021

- **Nguồn:** [README](https://github.com/asvspoof-challenge/2021/blob/9b33f5eca887bd3bf629e3fb79428cd9bb7ac972/LA/Baseline-RawNet2/README.md), [model_config_RawNet.yaml](https://github.com/asvspoof-challenge/2021/blob/9b33f5eca887bd3bf629e3fb79428cd9bb7ac972/LA/Baseline-RawNet2/model_config_RawNet.yaml), [model.py](https://github.com/asvspoof-challenge/2021/blob/9b33f5eca887bd3bf629e3fb79428cd9bb7ac972/LA/Baseline-RawNet2/model.py), repo/commit nêu trên. README ghi Hemlata Tak, EURECOM, 2021. **Đã đọc:** R, các tệp này; không cài môi trường hay chạy.
- **Claim hỗ trợ:** README mô tả đây là baseline dùng kiến trúc RawNet2, train LA 2019/test track ASVspoof 2021, môi trường Python 3.6.10/PyTorch 1.4.0; ví dụ train DF dùng CCE, lr 1e-4, batch 32. YAML ghi nb_samp=64600, first_conv=1024, filts=[20,[20,20],[20,128],[128,128]], blocks=[2,4], GRU 3 lớp × 1024, FC 1024, 2 lớp. model.py nhận 20 bộ lọc Sinc; kernel chẵn 1024 được tăng thành 1025; code xây các mốc Mel cố định, rồi residual blocks, attention, GRU và logits 2 lớp.
- **Caveat:** recipe baseline này khác đáng kể với thông số bài báo RawNet2 ở trên: 20 thay vì 128 bộ lọc đầu, kernel 1025 thay vì 129, và stage residual 128 thay vì 512 kênh. Vì vậy không gọi config 2021 là bản tái tạo nguyên xi paper. Đây là source code của một phiên bản baseline cụ thể, không xác nhận tương thích với thư viện PyTorch mới.
- **Ví dụ / phản ví dụ:** khi so sánh kết quả, ghi rõ baseline “RawNet2 paper” hay “ASVspoof 2021 official RawNet2 config”; chỉ ghi tên họ kiến trúc sẽ che mất khác biệt recipe.

## AASIST: frontend waveform và hai trục graph

- **Bài báo:** [AASIST: Audio Anti-Spoofing using Integrated Spectro-Temporal Graph Attention Networks](https://arxiv.org/html/2110.01200), Jee-weon Jung, Hee-Soo Heo, Hemlata Tak, Hye-jin Shim, Joon Son Chung, Bong-Jin Lee, Ha-Jin Yu, Nicholas Evans, arXiv v1 (2021). **Đã đọc:** P, phương pháp §§2–4.2; không toàn văn.
- **Hiện thực chính thức:** [AASIST.py](https://github.com/clovaai/aasist/blob/a04c9863f63d44471dde8a6abcb3b082b07cd1/models/AASIST.py), [AASIST.conf](https://github.com/clovaai/aasist/blob/a04c9863f63d44471dde8a6abcb3b082b07cd1/config/AASIST.conf), [main.py](https://github.com/clovaai/aasist/blob/a04c9863f63d44471dde8a6abcb3b082b07cd1/main.py), [data_utils.py](https://github.com/clovaai/aasist/blob/a04c9863f63d44471dde8a6abcb3b082b07cd1/data_utils.py), repo clovaai/aasist, commit a04c9863f63d44471dde8a6abcb3b082b07cd1. **Đã đọc:** P cho bài báo, R cho các tệp cấu hình/đường chạy được dẫn.
- **Claim hỗ trợ:** mô hình lấy waveform qua Sinc frontend và residual encoder tạo feature map F ∈ R^(C×S×T). Nhánh spectral giảm trục thời gian bằng max trên T; nhánh temporal giảm trục tần số bằng max trên S; các node sau đó tham gia graph attention đầy đủ trong từng nhóm và heterogeneous spectral-temporal graph attention. Pool/readout giữ các tổng hợp max và mean riêng cho node temporal, spectral, cùng master/stack node. Đây là hai tập node có ý nghĩa thời gian/tần số, không phải một graph tùy ý trên vector đã flatten.
- **Chi tiết config/code:** config ghi nb_samp=64600, first_conv=128, 70 Sinc filters, 6 residual blocks, GAT dims [64,32], pool ratios [0.5,0.7,0.5,0.5], Adam lr 1e-4 và cosine schedule. Trong data_utils.py, train chọn crop ngẫu nhiên 64.600 mẫu cho clip dài và lặp clip ngắn; dev/eval dùng prefix khi clip dài và lặp khi ngắn. Trong đường đánh giá ở main.py, model.eval() và torch.no_grad() bao quanh inference; main nhận (_, batch_out) từ model và ghi batch_out[:,1] làm một score cho mỗi clip. AASIST.py trả (last_hidden, output), trong đó output là đầu ra Linear 2 chiều; không có softmax/log-softmax trong forward. Do đó score trong script là raw class-1 logit, không phải log-prob.
- **Caveat:** đọc source liên quan, không chạy dữ liệu/model, không xác nhận checkpoint/artifact nào đã được nạp/chạy, và chưa audit mọi dependency. Cách crop prefix cho clip dài cùng các phép max/graph toàn clip cho thấy đây là đánh giá theo clip cố định trong source đã xem; không phải bằng chứng cho streaming nhân quả. Tham số/cách tổng quát hóa sang corpus khác cần đánh giá riêng.
- **Ví dụ / phản ví dụ:** AASIST-inspired head cần chỉ ra token nào đại diện trục thời gian và tần số, cách giảm từng trục, và edge/group nào được dùng. Tạo graph dense trên 128 token đã flatten không tự động trở thành AASIST.

## Audio-JEPA: pretraining objective khác downstream spoof score

- **Bài báo:** [Audio-JEPA: Joint-Embedding Predictive Architecture for Audio Representation Learning](https://arxiv.org/abs/2507.02915), Ludovic Tuncay, Etienne Labbé, Emmanouil Benetos, Thomas Pellegrini; arXiv v2, sửa ngày 2026-09-26; ICME 2025. **Đã đọc:** P, các mục phương pháp, hiện thực và đánh giá có liên quan; không toàn văn.
- **Mã:** [repo tại commit dự án đã ghim](https://github.com/LudovicTuncay/Audio-JEPA/tree/ddd97ee9b88c00572f59bf2a00eb42120e6a4dea), [jepa_module.py](https://raw.githubusercontent.com/LudovicTuncay/Audio-JEPA/ddd97ee9b88c00572f59bf2a00eb42120e6a4dea/src/models/jepa_module.py). **Đã đọc:** P cho paper; R cho module pretraining được dẫn.
- **Claim hỗ trợ:** pretraining dùng context encoder, target encoder EMA và predictor; loss là L2 giữa embedding dự đoán và embedding target tại vùng mask. Trong module, target bị freeze, chạy dưới torch.no_grad() và được cập nhật EMA; forward() module trả context encoder. Paper mô tả đánh giá downstream X-ARES với target encoder frozen, linear probe/kNN. Vì thế output forward() của module pretraining không nên mặc định coi là đúng wrapper/encoder dùng trong mọi downstream evaluation.
- **Ánh xạ cẩn thận sang detector dự án:** ghi chú phương pháp cục bộ của dự án mô tả dùng released context encoder AudioSet/ViT-Base làm extractor, rồi supervised head với weighted cross-entropy cho phân loại bona fide/spoof và score z_bonafide − z_spoof. Đây là nội dung trong 06-GIAI-PHAU-PAPER.md, chưa được xác nhận độc lập bằng PDF gốc hoặc downstream code ở lượt này. Theo ghi chú đó, score detector không phải predictor error của JEPA.
- **Token/patch:** paper Audio-JEPA native patch grid 128 mel × 256 time, patch 16×16 tạo 8×16=128 token. Phương pháp downstream trong ghi chú cục bộ dùng log-mel 128×256, patch 32 mel × 8 thời điểm tạo 4×32=128 token. **128 token ở phương pháp detector là 32 time × 4 frequency, không phải 128 time.** Cùng số token không làm hai grid cùng ý nghĩa trục; kích thước/chiều patch và phép chiếu patch phải được ghi riêng.
- **Caveat:** không tải checkpoint hoặc chạy model; chưa audit script X-ARES hay wrapper downstream cụ thể. Encoder context/target, resolution, frontend và checkpoint phải khớp recipe đang được tuyên bố.
- **Ví dụ / phản ví dụ:** loss JEPA huấn luyện khả năng dự đoán embedding vùng bị mask; detector có nhãn bona/spoof học biên phân loại từ nhãn. Không thay weighted CE detector bằng prediction error rồi gọi đó là score đã báo cáo.

## LoRA, freeze và chế độ thực thi PyTorch

### LoRA

- **Nguồn:** [LoRA paper](https://arxiv.org/html/2106.09685v2), Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen, v2 (2021); [official Microsoft LoRA Linear layer](https://github.com/microsoft/LoRA/blob/c4593f060e6a368d7bb5af5273b8e42810cdef90/loralib/layers.py), commit c4593f060e6a368d7bb5af5273b8e42810cdef90. **Đã đọc:** P, §4.1–4.2; R, lớp Linear liên quan.
- **Claim hỗ trợ:** paper viết W = W0 + ΔW = W0 + BA, với A ∈ R^(r×k), B ∈ R^(d×r), r nhỏ; giữ W0 frozen, học A/B, thường scale α/r. Official Linear layer giữ phép chiếu gốc và cộng nhánh low-rank; có hỗ trợ merge update vào weight để suy luận.
- **Caveat:** paper tập trung LLM, không chứng minh LoRA có ích cho detector âm thanh cụ thể. Chi phí nhánh chưa merge và đường chạy đã merge khác nhau; phải đo theo implementation.
- **Ví dụ / phản ví dụ:** rank update r=8 của một phép chiếu có output width 768 vẫn cho output 768 chiều. Rank 8 giới hạn không gian cập nhật trọng số; không có nghĩa embedding bị thu còn 8 chiều.

### PyTorch autograd, eval, Dropout và BatchNorm

- **Nguồn:** tài liệu chính thức PyTorch stable được tra ngày 2026-10-11: [Autograd mechanics](https://docs.pytorch.org/docs/stable/notes/autograd.html), [no_grad](https://docs.pytorch.org/docs/stable/generated/torch.no_grad.html), [inference_mode](https://docs.pytorch.org/docs/stable/generated/torch.autograd.grad_mode.inference_mode.html), [Module](https://docs.pytorch.org/docs/stable/generated/torch.nn.Module.html), [Dropout](https://docs.pytorch.org/docs/stable/generated/torch.nn.Dropout.html), [BatchNorm1d](https://docs.pytorch.org/docs/stable/generated/torch.nn.BatchNorm1d.html), [serialization](https://docs.pytorch.org/docs/stable/notes/serialization.html). **Đã đọc:** các trang/đoạn API liên quan, không phải toàn bộ tài liệu PyTorch.
- **Claim hỗ trợ:** requires_grad=False ngăn tính/giữ gradient cho tham số đó, nhưng không bỏ qua forward của module. no_grad() tắt ghi đồ thị gradient trong phạm vi context; inference_mode() giảm thêm một số overhead và có ràng buộc chặt hơn. Cả hai không tự gọi eval(). eval() độc lập với chế độ gradient, điều khiển hành vi module như Dropout và BatchNorm. Dropout là identity khi eval. BatchNorm thường cập nhật running_mean/var (buffers) trong train và dùng running stats trong eval nếu track_running_stats=True; với False, dùng batch stats cả eval. Buffer không phải parameter có gradient.
- **Caveat:** các chi tiết này theo API PyTorch stable tại ngày tra, còn baseline RawNet2 2021 ghi PyTorch 1.4.0. Kiểm tra phiên bản thực tế và module cụ thể trước khi áp dụng mặc định tài liệu hiện hành.
- **Ví dụ / phản ví dụ:** freeze encoder rồi huấn luyện head vẫn chạy forward encoder mỗi batch; no_grad có thể giảm bộ nhớ/đồ thị nhưng không tiết kiệm toàn bộ tính toán encoder. eval() không tự tắt autograd, và no_grad() không tự tắt Dropout.

### Cache đặc trưng

- **Cơ sở:** hệ quả từ ngữ nghĩa PyTorch nêu trên và pipeline cục bộ; đây là hướng dẫn điều kiện, không phải benchmark của dự án.
- **Claim hỗ trợ:** cache embedding có thể tránh tính encoder lặp lại khi input waveform, preprocessing, checkpoint, crop và trạng thái/mode của encoder là như nhau. Để cache inference ổn định thường cần eval() cùng no_grad() hoặc inference_mode().
- **Caveat:** nếu online augmentation/crop/noise trên waveform thay đổi theo epoch thì một embedding cache cố định mỗi file không còn là cùng recipe. Nếu encoder có BN buffers đang cập nhật, cache trước/sau cập nhật cũng có thể không tương đương. Cache cũng không loại bỏ forward khi mỗi lần cần một waveform/crop khác.
- **Ví dụ / phản ví dụ:** “encoder frozen” chỉ có nghĩa không cập nhật tham số; nó vẫn có thể chạy và thấy waveform đã augment khác nhau mỗi epoch. “cache embeddings” là bỏ qua các forward lặp cho đúng input đã cache; không đồng nghĩa “online waveform augmentation”.

## Attentive statistics pooling: trục, mask, phương sai

- **Nguồn:** [Attentive Statistics Pooling for Deep Speaker Embedding](https://www.isca-archive.org/interspeech_2018/okabe18_interspeech.pdf), Koji Okabe, Takafumi Koshinaka, Koichi Shinoda, Interspeech 2018. **Đã đọc:** P, §§3.1–3.3 trong PDF; không toàn văn. Đây là paper speaker verification, không phải bằng chứng trực tiếp về hiệu quả anti-spoof.
- **Claim hỗ trợ:** với frame feature h_t, attention chuẩn hóa qua các frame hợp lệ cho trọng số α_t; cùng trọng số đó tạo weighted mean μ=Σ_t α_t h_t và weighted variance Σ_t α_t (h_t−μ)^2, rồi lấy căn cho standard deviation. Vì Σα=1, đây là weighted population standard deviation, không có hiệu chỉnh Bessel/sample N−1.
- **Axes/mask:** nếu đầu vào [B,N,D], phải xác định N là trục vị trí được gom và softmax trên chính trục ấy; padding positions phải bị loại khỏi softmax hoặc có trọng số zero. Nếu N là patch grid đã flatten thì có thể gồm cả thời gian lẫn tần số. Bài gốc dùng frame sequence; không suy ra rằng mọi implementation patch-token dùng cùng trục. Ghi chú phương pháp cục bộ nói 128 token vào ASP và concat mean/std ra 1536 chiều, nhưng code detector/mask chưa được audit độc lập.
- **Caveat:** một số biến thể có attention theo channel/dimension; không gán axis của biến thể đó cho paper gốc khi chưa xem implementation cụ thể. Xác minh mask padding, thứ tự reshape và trục softmax trong code dự án trước khi mô tả là temporal-only.
- **Ví dụ / phản ví dụ:** với hai giá trị [0,2] và trọng số [0.5,0.5], mean = 1, weighted population std = 1; sample std sẽ là √2. Nếu padding có logit lớn nhưng không mask trước softmax, pooled mean/std bị lệch dù sau pooling đã cắt frame.

## Chấm điểm, crop, fusion và streaming

- **Score của baseline:** LFCC/CQCC scripts lấy trung bình log-likelihood theo lớp và trừ spoof khỏi bonafide. AASIST forward trả logits thô; script chính thức ghi class-1 logit cho mỗi clip, không log-prob. Ghi chú detector cục bộ mô tả logits bona/spoof và score z_bonafide − z_spoof; không đồng nhất công thức đó với score RawNet/AASIST nếu chưa đối chiếu output cụ thể. Ngưỡng và thứ tự dấu phải nêu rõ.
- **Crop:** AASIST code train random crop 64.600 mẫu nhưng eval dùng prefix cố định cho clip dài, lặp clip ngắn. RawNet2 paper/baseline cũng phân loại đoạn utterance cố định. Ghi chú dự án mô tả tile/truncate 64.600 mẫu ở 16 kHz rồi resample 32 kHz và lấy 2.56 giây; đây là crosswalk của 06-GIAI-PHAU-PAPER.md, chưa kiểm tra source downstream. Crop prefix có thể bỏ qua sự kiện giả mạo xuất hiện muộn; đây là counterexample rủi ro, không phải quan sát lỗi đã đo trên corpus.
- **Fusion:** paper RawNet2 báo cáo SVM score fusion; cần tách tập dev dùng fit/tune fusion và eval chỉ dùng hệ số đã cố định. Theo trích đoạn evaluation plan, không chuẩn hóa score dựa trên eval. EER đánh giá thứ hạng/ngưỡng; biến đổi tăng nghiêm ngặt giữ thứ tự (trừ ties), trong khi fusion có thể đổi thứ hạng. Cải thiện calibration không tự động là cải thiện discrimination.
- **Streaming:** các nguồn đã mở không xác nhận detector Audio-JEPA/AASIST/RawNet2 của dự án hỗ trợ streaming nhân quả. Full-clip ViT attention, max qua thời gian, graph toàn đoạn và GRU trên đoạn cố định đều không chứng minh khả năng phát score trực tuyến. Muốn tuyên bố streaming cần báo cáo window length/hop, lookahead/causality, trạng thái xuyên chunk, điểm số từng cửa sổ, phép tổng hợp thành score clip và latency; hiện các mục này **chưa xác minh**.

## Chưa giải quyết / cần xác minh trước khi biến thành claim thực nghiệm

1. Hai script GMM chính thức dùng bonafideIdx(i) để nạp đường dẫn ở vòng spoof trong nhánh huấn luyện. Chưa chạy để xác định tác động; không suy rộng tới pretrained checkpoint.
2. Chưa audit toàn bộ helpers MATLAB (đặc biệt lfcc_bp, cqcc, compute_llk) hoặc toàn bộ môi trường/reproducibility của baseline.
3. ASVspoof 2021 Evaluation Plan mới đọc được trích đoạn §7.2 và §8 do PDF timeout; cần toàn văn để xác nhận các điều khoản khác.
4. Phần downstream Audio-JEPA trong ghi chú dự án chưa được đối chiếu với PDF SOICT gốc hoặc code downstream; encoder context, checkpoint, preprocessing, patch projection, axis/mask ASP, label weighting, và score dấu cần khớp artifact thực tế trước khi tuyên bố đã tái tạo.
5. Không có bằng chứng trong lượt này về cache recipe đã dùng, equivalence cache-vs-online augmentation, fusion đã fit ở split nào, streaming, hay tổng quát hóa ngoài tập báo cáo. Hãy đánh dấu các điểm này chưa xác minh thay vì đoán.
