OpenArchLabOpen Architecture — From Models to Systems

Huấn luyện tiếng nói

2A–2B · Encoder codec và lượng tử hóa phần dư RVQ

Học biểu diễn sóng theo khung rồi xấp xỉ mỗi vector bằng tổng các mã từ nhiều bảng codebook.

LESSON ID ta-codec GROUP Kiến trúc huấn luyện
Mục lục bài học

1Định nghĩa

Residual vector quantization (RVQ) là phép lượng tử hóa vector nhiều tầng, mỗi tầng chọn một vector mã gần phần dư mà các tầng trước chưa biểu diễn được.

Encoder codec đổi sóng thành latent, tức vector liên tục theo khung; RVQ lấy chỉ số mã rời rạc để decoder tái tạo sóng. Bảng mã gọi là codebook, mỗi hàng là một vector học được; ID chỉ định hàng, không phải chữ hay tên âm vị.

Ví dụ đời thường: trả một số tiền bằng tờ lớn trước rồi dùng tờ nhỏ bù phần còn thiếu. Tổng các tờ gần số tiền cần trả; tên tờ tiền không tự mang nghĩa câu nói.

2Luồng

Các ô cùng bài có thể là chẩn đoán hoặc lựa chọn thiết kế, không mặc định là các bước nối tiếp.

Sơ đồ kiến trúc huấn luyện · 22 ô (1A → 5D)

Huấn luyện tiếng nói · Ba mục tiêu và ánh xạ với lab

Bắt đầu 1A → 1B, rồi rẽ ba nhánh: codec 2A → 2B → 2C học sóng bằng loss ở 2D; TTS 3A → 3B → 3C → 3D học mã từ chữ và giọng; ASR 1C → 1D → 4A → 4B học chữ từ audio. 2E là chẩn đoán. 4C là vòng cập nhật dùng lại theo nhánh, 4D–4E và 5A–5B là kỹ thuật hoặc lựa chọn học. 5C → 5D nối hợp đồng streaming sang checkpoint và suy luận. Di chuột, Tab hoặc bấm ô để đọc năm phần.

Sơ đồ kiến trúc huấn luyện tiếng nói gồm 22 ô từ 1A đến 5D
2A2 · Neural codec
khung sóng → latent liên tục

2A · Encoder của codec

Học biểu diễn sóng theo khung rồi xấp xỉ mỗi vector bằng tổng các mã từ nhiều bảng codebook.

Nhận gì
Sóng đã chuẩn từ nhánh 1B, không nhận transcript làm đích.
Làm gì, vì sao
Mạng học nén từng khung sóng thành latent liên tục để RVQ có không gian chọn mã.
Ra gì
Vector z theo khung đi xuống RVQ 2B.
Ví dụ, cách đọc ô
Lab encoder tuyến tính đổi 64 mẫu thành 12 số; tham số encoder nhận gradient straight-through.
Lưu ý
Không nhầm với 1D: encoder này phục vụ dựng lại sóng.
Sơ đồ luồng (3 bước)
  1. Nhận đầu vào

    Nhận khung sóng, chạy encoder học được để tạo vector z. Với tầng đầu, phần dư r bằng z; tìm vector e trong codebook có khoảng cách bình phương nhỏ nhất. Ghi ID của e, trừ e khỏi r rồi lặp cho tầng kế.

  2. Biến đổi để học

    Gọi Q là tổng số codebook (bảng mã) và q là vector lượng tử bằng tổng các vector đã chọn. Mỗi khung có Q ID mã c0…c(Q−1), một ID cho mỗi bảng, thay vì lưu toàn bộ latent liên tục z. Decoder nhận vector q; LM TTS học dự đoán các ID nguyên chứ không coi q là một token. Khi huấn luyện LM, thường đóng băng codec để nhãn không đổi ý nghĩa giữa các bước.

  3. Đọc kết quả

    Một tensor chỉ số có trục khung và codebook, cùng vector q dùng tái tạo. Với RVQ thông thường, code đầu mô tả phần dễ xấp xỉ trước; chỉ khi mục tiêu huấn luyện ép nội dung ngôn ngữ vào c0 mới nên gọi nó là mã giàu ngữ nghĩa. Không suy vai trò semantic từ thứ tự codebook.

Mã Mermaid
flowchart TD
  step1["Nhận đầu vào"]
  step2["Biến đổi để học"]
  step3["Đọc kết quả"]
  step1 --> step2
  step2 --> step3

3Giải pháp

Đầu vào và kiến thức cần nhớ

Nhận khung sóng, chạy encoder học được để tạo vector z. Với tầng đầu, phần dư r bằng z; tìm vector e trong codebook có khoảng cách bình phương nhỏ nhất. Ghi ID của e, trừ e khỏi r rồi lặp cho tầng kế.

Thao tác và lý do

Gọi Q là tổng số codebook (bảng mã) và q là vector lượng tử bằng tổng các vector đã chọn. Mỗi khung có Q ID mã c0…c(Q−1), một ID cho mỗi bảng, thay vì lưu toàn bộ latent liên tục z. Decoder nhận vector q; LM TTS học dự đoán các ID nguyên chứ không coi q là một token. Khi huấn luyện LM, thường đóng băng codec để nhãn không đổi ý nghĩa giữa các bước.

Đầu ra và cách đọc

Một tensor chỉ số có trục khung và codebook, cùng vector q dùng tái tạo. Với RVQ thông thường, code đầu mô tả phần dễ xấp xỉ trước; chỉ khi mục tiêu huấn luyện ép nội dung ngôn ngữ vào c0 mới nên gọi nó là mã giàu ngữ nghĩa. Không suy vai trò semantic từ thứ tự codebook.

4Profiling

  • Kiểm đúng trước, đo sau

    So tái tạo dùng một tầng và đủ Q tầng trên cùng sóng; báo mã hoạt động và phân bố theo tầng. Thêm tầng có thể giảm lỗi lượng tử trên vector đã cố định, nhưng chất lượng hệ học chung phải đo lại; số bảng không thay thế đánh giá nghe.

  • Giới hạn kết luận

    Lab có encoder tuyến tính học được nhưng không semantic distillation; không gọi c0 của lab là âm vị.

Mẹo đo lường: ghim số liệu trên workload thật, ghi cả p50/p95/p99 thay vì chỉ trung bình, và luôn ghi lại điều kiện chạy (batch, cache, đồng thời, phần cứng) trước và sau khi tối ưu. Số đo thiếu điều kiện chạy thì không so sánh được.

5Ví dụ

Đối chiếu ô 2A–2B và lab giai đoạn 3

Bài tính tay một chiều: z = 0.8; tầng đầu chọn 0.5, dư 0.3; tầng hai chọn 0.25, tổng 0.75, dư 0.05. Lab dùng hai bảng, mỗi bảng tám vector 12 số. Tự kiểm: hai ID [4,6] có phải số 46 hay hai ký tự? Không, đó là chỉ số ở hai bảng khác nhau.

Tự thực hành có hướng dẫn

Mở [bài Lab tổng hợp](/courses/llm-training-audio/train-audio-lab/ta-end-to-end-lab/) rồi tìm khối [3] trong output. Viết lại đầu vào, kết quả và giới hạn của khối đó trước khi thử thay một hằng số. Nếu cơ chế chỉ được giải thích chứ chưa được thực thi, không ghi PASS của lab thành bằng chứng cho cơ chế ấy.

6Thuật ngữ

Encoder codec và lượng tử hóa phần dư RVQ
Residual vector quantization (RVQ) là phép lượng tử hóa vector nhiều tầng, mỗi tầng chọn một vector mã gần phần dư mà các tầng trước chưa biểu diễn được.
Glossary (1)
Đối chiếu sơ đồ
Ô 2A–2B; giai đoạn 3 của lab. Lab có encoder tuyến tính học được nhưng không semantic distillation; không gọi c0 của lab là âm vị.

7Bài liên quan

8Nguồn