Định dạng tệp âm thanh QOA là gì? Các tính năng, Kiến trúc và Cách mở
Trong kỹ thuật âm thanh kỹ thuật số và phát triển trò chơi, việc cân bằng kích thước tệp, độ trễ phát và tải CPU luôn là thách thức. Các định dạng tiêu chuẩn như MP3, AAC và Ogg Vorbis cung cấp tỷ lệ nén cao nhưng đòi hỏi quy trình giải mã phức tạp, tính toán dấu phẩy động nặng và dung lượng bộ nhớ đáng kể. Ngược lại, PCM không nén (.wav) cung cấp phát không độ trễ nhưng phải trả giá bằng việc sử dụng đĩa khổng lồ và giao hàng tài sản chậm.
Định dạng QOA (Quite OK Audio) giải quyết khoảng trống này. Được tạo ra bởi Dominic Szablewski (người sáng tạo định dạng ảnh QOI được đánh giá cao), QOA là một định dạng âm thanh có mất dữ liệu mã nguồn mở, được thiết kế cho việc giải mã siêu nhanh, độ phức tạp tối thiểu và việc sử dụng bộ nhớ có thể dự đoán.
Tệp QOA là gì?
Một tệp có phần mở rộng .qoa lưu trữ âm thanh kỹ thuật số đã nén bằng định dạng Quite OK Audio. Nó hoạt động trên dữ liệu âm thanh pulse-code modulated (PCM) với độ sâu 16-bit trên các tần số mẫu từ $1\text{ Hz}$ đến $16,777,215\text{ Hz}$ và hỗ trợ lên tới 31 kênh âm thanh.
Khác với các codec tâm lý âm học dựa vào các phép biến đổi miền tần số (như Modified Discrete Cosine Transform hay MDCT), QOA hoạt động hoàn toàn trong miền thời gian. Nó nén âm thanh xuống tỷ lệ cố định chính xác là $3.2\text{ bits per sample}$, đạt tỷ lệ nén cố định $5:1$ trên PCM tuyến tính 16-bit thô.
Đối với âm thanh chất lượng CD tiêu chuẩn (44,1 kHz, stereo), một luồng QOA đạt tốc độ bit chính xác, cố định là:
$$\text{Bitrate} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
Các tính năng chi tiết của QOA
1. Đặc tả và triển khai tối giản
Các codec hiện đại truyền thống đòi hỏi hàng trăm trang tài liệu kỹ thuật và hàng nghìn dòng mã để triển khai. Ngược lại, toàn bộ đặc tả định dạng QOA chỉ vừa trong một PDF một trang, và bản triển khai tham chiếu chính thức (qoa.h) gồm khoảng 400 dòng mã C tiêu chuẩn.
2. Dự đoán LMS trong miền thời gian
QOA tránh các thuật toán biến đổi tốn kém về tính toán. Thay vào đó, nó sử dụng bộ lọc dự đoán Least Mean Squares (LMS) thích ứng với bốn trọng số lịch sử cho mỗi kênh. Bằng cách ước tính giá trị mẫu trong tương lai và chỉ ghi lại các khác biệt dư lượng đã lượng tử hoá, QOA mang lại chất lượng âm thanh nhận thức trong suốt mà không gây tải nặng cho CPU.
3. Giải mã cực nhanh
Vì QOA chỉ dựa vào phép toán nguyên và các thao tác nhẹ, nó giải mã nhanh tới $3\times$ so với Ogg Vorbis và vượt trội đáng kể so với các bộ giải mã MP3 tiêu chuẩn. Nó thậm chí giải mã nhanh hơn Microsoft ADPCM, khiến nó lý tưởng cho phần cứng nhúng tiêu thụ năng lượng thấp, vi điều khiển và các engine game thời gian thực.
4. Kiến trúc chia thành khối sẵn sàng cho streaming
Các tệp QOA được chia thành các khung tự chứa, mỗi khung chứa tối đa $5,120$ mẫu cho mỗi kênh ($256$ lát của $20$ mẫu). Mỗi khung mang theo các trọng số và lịch sử bộ lọc LMS của riêng nó, cho phép tìm kiếm ngay lập tức, khôi phục không mất phí từ các gói tin bị mất, và truyền phát động trên fly một cách linh hoạt mà không cần chỉ mục toàn cục bắt buộc.
Đặc điểm chính của QOA
| Đặc điểm | Thông số kỹ thuật / Chi tiết |
|---|---|
| Đuôi tệp | .qoa |
| Magic Bytes | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Nhà phát triển / Người tạo | Dominic Szablewski (PhobosLab) |
| Loại Nén | Mất dữ liệu (dự đoán LMS miền thời gian) |
| Tỷ lệ nén | Cố định $5:1$ so với PCM 16-bit |
| Bộ nhớ mỗi mẫu | Chính xác $3.2\text{ bits per sample}$ |
| Tốc độ bit (44.1 kHz, Stereo) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ tải trọng) |
| Phạm vi tần số mẫu | $1\text{ Hz}$ đến $16,777,215\text{ Hz}$ ($24\text{-bit}$ không dấu) |
| Kênh được hỗ trợ | $1$ đến $31$ kênh âm thanh (Mono, Stereo, 5.1, 7.1, v.v.) |
| Chi phí tiêu đề | Tiêu đề tệp 8-byte, tiêu đề khung 8-byte |
| Cấp phép | MIT (Mã nguồn) / CC0 (Đặc tả & Logo) |
Cách tạo và mã hoá các tệp QOA
Mã hoá âm thanh thành QOA rất đơn giản nhờ các binary dành cho nhà phát triển đã được xây dựng sẵn và các chuỗi công cụ cộng đồng.
Phương pháp 1: Sử dụng CLI qoaconv chính thức
Bộ mã hoá chính được phân phối trực tiếp trong kho tham chiếu chính thức.
- Sao chép kho lưu trữ và biên dịch tệp nhị phân:
git clone https://github.com/phoboslab/qoa.git cd qoa make - Chuyển đổi tệp WAV chưa nén sang QOA:
./qoaconv input.wav output.qoa - (Tùy chọn) Nếu biên dịch với
HAS_DRLIBS=true,qoaconvcũng có thể chuyển mã trực tiếp từ các tệp.flacvà.mp3.
Phương pháp 2: Mã hoá trong engine (Godot Engine)
Bắt đầu từ Godot 4.3, các nhà phát triển trò chơi có thể nhập các tệp .wav chưa nén và chọn nén QOA trực tiếp từ bảng nhập Godot. Điều này tạo ra các tài sản trò chơi gọn nhẹ, giải mã một cách tự nhiên với độ trễ CPU không đáng kể trong các cảnh chơi game nặng.
Phương pháp 3: Bộ chuyển đổi web trong trình duyệt
Một số công cụ WebAssembly dựa trên web (như những công cụ được lưu trữ trên qoaformat.org và các bản demo mã nguồn mở liên quan) cho phép người dùng kéo và thả các tệp âm thanh tiêu chuẩn và tải xuống tài sản .qoa đã mã hoá cục bộ mà không cần chạy lệnh terminal.
Cách mở và phát các tệp QOA
Vì QOA là định dạng nhẹ được xây dựng chủ yếu cho việc tích hợp thời gian chạy, các trình phát media tiêu dùng thông thường có thể yêu cầu plugin hoặc bản dựng chuyên dụng.
- Trình phát CLI chuyên dụng (
qoaplay): Kho lưu trữ chính biên dịch thànhqoaplay, sử dụng các hệ thống âm thanh gốc (ALSA trên Linux, CoreAudio trên macOS, WASAPI trên Windows) để phát trực tiếp các tệp.qoa:./qoaplay audio.qoa - Các khung và engine game:
- Raylib: Hỗ trợ gốc thông qua mô-đun
raudio. - Godot Engine: Hỗ trợ phát lại gốc đầy đủ (Godot 4.3+).
- Raylib: Hỗ trợ gốc thông qua mô-đun
- Trình phát đa phương tiện & Plugin:
- Qmmp: Trình phát đa phương tiện nâng cao với các mô-đun giải mã QOA gốc.
- OpenCubicPlayer: Trình theo dõi cổ điển và trình phát tệp âm thanh hỗ trợ luồng QOA.
- Audacious / foobar2000: Được hỗ trợ thông qua các plugin nhập liệu cộng đồng mã nguồn mở.
- IDE & Công cụ phát triển:
- VS Code: Tiện ích mở rộng QOA Preview cho phép các nhà phát triển xem trước và phát các đoạn âm thanh
.qoatrực tiếp trong cây nguồn của họ.
- VS Code: Tiện ích mở rộng QOA Preview cho phép các nhà phát triển xem trước và phát các đoạn âm thanh
Câu hỏi thường gặp (FAQ)
QOA viết tắt của gì?
QOA viết tắt cho Quite OK Audio, một định dạng âm thanh nén mất dữ liệu nhanh, đơn giản, mã nguồn mở.
Âm thanh QOA là không mất dữ liệu hay có mất dữ liệu?
QOA là một định dạng nén âm thanh mất dữ liệu, nhưng nó duy trì chất lượng âm thanh gần như trong suốt cho hầu hết các trường hợp sử dụng thực tế.
QOA cung cấp mức nén bao nhiêu?
QOA nén âm thanh không nén 16-bit với tỷ lệ cố định là $5:1$ (chính xác là $3.2\text{ bits per sample}$).
QOA có thể thay thế MP3 hoặc AAC cho việc phát nhạc chung không?
Không, QOA ưu tiên việc giải mã siêu nhanh, nhẹ cân hơn là tối đa hóa tiết kiệm băng thông, khiến nó phù hợp hơn cho trò chơi, vi điều khiển và các ứng dụng độ trễ thấp hơn so với phát trực tuyến web mật độ cao.
QOA có phí cấp phép hoặc bằng sáng chế không?
Không, QOA hoàn toàn không có bằng sáng chế và được phát hành dưới giấy phép MIT cho phép, trong khi đặc tả và logo của nó thuộc phạm vi công cộng (CC0).
URL Tham Khảo & Tài Nguyên Chính Thức
- Trang web chính thức: https://qoaformat.org/
- Đặc tả chính thức (PDF): https://qoaformat.org/qoa-specification.pdf
- Kho GitHub: https://github.com/phoboslab/qoa
- Phân tích sâu kỹ thuật của tác giả: Blog PhobosLab - Thông báo QOA & Các chỉ số chuẩn