QOA Audio File Format คืออะไร? คุณลักษณะ, สถาปัตยกรรม, และวิธีการเปิดไฟล์
ในการวิศวกรรมเสียงดิจิทัลและการพัฒนาเกม การสมดุลระหว่างขนาดไฟล์, ความหน่วงเวลาการเล่น, และภาระงานของ CPU มักเป็นเรื่องท้าทายอยู่เสมอ รูปแบบมาตรฐานเช่น MP3, AAC, และ Ogg Vorbis ให้ระดับการบีบอัดสูงแต่ต้องการขั้นตอนการถอดรหัสที่ซับซ้อน, การคำนวณแบบ floating-point ที่หนัก, และการใช้หน่วยความจำจำนวนมาก อีกด้านหนึ่งของสเปกตรัม, PCM ที่ไม่ได้บีบอัด (.wav) ให้การเล่นที่ไม่มีความหน่วงเวลาแต่แลกมาด้วยการใช้พื้นที่ดิสก์มหาศาลและการส่งมอบทรัพยากรที่ช้า.
รูปแบบ QOA (Quite OK Audio) แก้ไขช่องว่างนี้ สร้างโดย Dominic Szablewski (ผู้สร้างรูปแบบภาพ QOI ที่ได้รับการชื่นชมอย่างกว้างขวาง) QOA เป็นรูปแบบออดิโอแบบ lossy แบบโอเพ่นซอร์สที่ออกแบบมาสำหรับการถอดรหัสที่เร็วเหมือนสายฟ้า, ความซับซ้อนต่ำ, และการใช้หน่วยความจำที่คาดการณ์ได้.
ไฟล์ QOA คืออะไร?
ไฟล์ที่มีนามสกุล .qoa จะเก็บเสียงดิจิทัลที่ถูกบีบอัดโดยใช้รูปแบบ Quite OK Audio มันทำงานกับข้อมูลเสียงแบบ pulse-code modulated (PCM) ที่มีความลึก 16 บิตในอัตราการสุ่มตัวอย่างตั้งแต่ $1\text{ Hz}$ ถึง $16,777,215\text{ Hz}$ และรองรับช่องเสียงได้สูงสุด 31 ช่อง
ไม่เหมือนกับโคเดกซ์แบบจิตวิทยาเสียงที่พึ่งพาการแปลงโดเมนความถี่ (เช่น Modified Discrete Cosine Transform หรือ MDCT) QOA ทำงานทั้งหมดใน time domain. มันบีบอัดเสียงให้เหลืออัตราส่วนคงที่ที่เท่ากับ $3.2\text{ bits per sample}$ ทำให้ได้อัตราการบีบอัดคงที่ $5:1$ บน PCM เชิงเส้น 16‑บิตดิบ
สำหรับเสียงคุณภาพ CD มาตรฐาน (44.1 kHz, สเตอริโอ) สตรีม QOA จะได้อัตราบิตที่แน่นอนและคงที่คือ:
$$\text{Bitrate} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
คุณลักษณะโดยละเอียดของ QOA
1. สเปคและการนำไปใช้แบบมินิมัล
โคเดกซ์สมัยใหม่แบบดั้งเดิมต้องการเอกสารสเปคทางเทคนิคหลายร้อยหน้าและโค้ดหลายพันบรรทัดเพื่อทำการใช้งาน ในทางตรงกันข้าม สเปครูปแบบ QOA ทั้งหมดสามารถใส่ใน single-page PDF ได้เพียงหน้าเดียว และการอิมพลีเมนต์อ้างอิงอย่างเป็นทางการ (qoa.h) มีประมาณ 400 บรรทัดของโค้ด C มาตรฐาน
2. การทำนาย LMS ในโดเมนเวลา
QOA หลีกเลี่ยงอัลกอริทึมการแปลงที่ต้องใช้การคำนวณหนัก แทนที่จะใช้ มันใช้ตัวกรองการทำนายแบบ Least Mean Squares (LMS) ที่ปรับตัวได้พร้อมน้ำหนักประวัติสี่ค่าต่อช่องสัญญาณ โดยการประมาณค่าตัวอย่างในอนาคตและบันทึกความแตกต่างของส่วนเหลือที่ถูกควอนไทซ์เท่านั้น QOA ให้คุณภาพเสียงที่รับรู้ได้อย่างโปร่งใสโดยไม่ต้องใช้ CPU มาก
3. การถอดรหัสที่เร็วมาก
เนื่องจาก QOA พึ่งพาการคำนวณแบบจำนวนเต็มและการดำเนินการที่เบา มันสามารถถอดรหัสได้เร็วขึ้นถึง $3\times$ เท่าจาก Ogg Vorbis และทำงานได้ดีกว่าตัวถอดรหัส MP3 มาตรฐานอย่างมีนัยสำคัญ มันยังถอดรหัสได้เร็วกว่า Microsoft ADPCM ทำให้เหมาะสำหรับฮาร์ดแวร์ฝังตัวที่ใช้พลังงานต่ำ, ไมโครคอนโทรลเลอร์, และเอนจิ้นเกมแบบเรียลไทม์
4. สถาปัตยกรรมแบบแบ่งส่วนพร้อมสตรีมมิ่ง
ไฟล์ QOA แบ่งเป็นเฟรมที่เป็นอิสระซึ่งเก็บได้สูงสุด $5,120$ ตัวอย่างต่อช่องสัญญาณ ($256$ ชิ้นส่วนของ $20$ ตัวอย่าง) แต่ละเฟรมมีน้ำหนักและประวัติของตัวกรอง LMS ของตนเอง ทำให้สามารถค้นหาได้ทันที, ฟื้นฟูโดยไม่มีค่าเสียหายจากแพ็กเก็ตที่สูญหาย, และสตรีมแบบไดนามิกแบบเรียลไทม์โดยไม่ต้องมีการทำดัชนีทั่วโลกที่บังคับใช้
ลักษณะสำคัญของ QOA
| ลักษณะ | สเปค / รายละเอียด |
|---|---|
| นามสกุลไฟล์ | .qoa |
| Magic Bytes | qoaf (0x71, 0x6f, 0x61, 0x66) |
| ผู้พัฒนา / ผู้สร้าง | Dominic Szablewski (PhobosLab) |
| ประเภทการบีบอัด | แบบสูญเสีย (การทำนาย LMS ในโดเมนเวลา) |
| อัตราการบีบอัด | คงที่ $5:1$ เทียบกับ PCM 16 บิต |
| การจัดเก็บต่อตัวอย่าง | เท่ากับ $3.2\text{ bits per sample}$ |
| อัตราบิต (44.1 kHz, สเตอริโอ) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ ข้อมูลบรรจุ) |
| ช่วงอัตราการสุ่มตัวอย่าง | $1\text{ Hz}$ ถึง $16,777,215\text{ Hz}$ ($24\text{-bit}$ แบบไม่มีเครื่องหมาย) |
| ช่องสัญญาณที่รองรับ | $1$ ถึง $31$ ช่องสัญญาณเสียง (โมโน, สเตอริโอ, 5.1, 7.1, เป็นต้น) |
| ค่าใช้จ่ายส่วนหัว | ส่วนหัวไฟล์ 8 ไบต์, ส่วนหัวเฟรม 8 ไบต์ |
| การให้สิทธิ์ | MIT (ซอร์สโค้ด) / CC0 (สเปคและโลโก้) |
วิธีสร้างและเข้ารหัสไฟล์ QOA
การเข้ารหัสเสียงเป็น QOA ทำได้ง่ายดายเนื่องจากมีไบนารีสำหรับนักพัฒนาที่สร้างไว้ล่วงหน้าและเครื่องมือของชุมชน
วิธีที่ 1: ใช้ CLI qoaconv อย่างเป็นทางการ
ตัวเข้ารหัสหลักจะถูกแจกจ่ายโดยตรงในคลังอ้างอิงอย่างเป็นทางการ
- คัดลอกที่เก็บข้อมูลและสร้างไฟล์ไบนารี:
git clone https://github.com/phoboslab/qoa.git cd qoa make - แปลงไฟล์ WAV ที่ไม่ได้บีบอัดเป็น QOA:
./qoaconv input.wav output.qoa - (Optional) หากคอมไพล์ด้วย
HAS_DRLIBS=trueqoaconvสามารถแปลงโดยตรงจากไฟล์.flacและ.mp3ได้เช่นกัน.
วิธีที่ 2: การเข้ารหัสในเอนจิน (Godot Engine)
ตั้งแต่ Godot 4.3 นักพัฒนาเกมสามารถนำเข้าไฟล์ .wav ที่ไม่ได้บีบอัดและเลือกการบีบอัด QOA โดยตรงจากแผงนำเข้า (Import dock) ของ Godot ได้ ซึ่งจะสร้างสินทรัพย์เกมที่กะทัดรัดและถอดรหัสโดยเนทีฟด้วยความหน่วงของ CPU ที่น้อยมากในฉากเกมที่หนัก.
วิธีที่ 3: ตัวแปลงเว็บในเบราว์เซอร์
ยูทิลิตี้ WebAssembly บนเว็บหลายตัว (เช่นที่โฮสต์บน qoaformat.org และเดโมโอเพ่นซอร์สที่เกี่ยวข้อง) ให้ผู้ใช้ลากและวางไฟล์เสียงมาตรฐานและดาวน์โหลดสินทรัพย์ .qoa ที่เข้ารหัสไว้ในเครื่องโดยไม่ต้องใช้คำสั่งเทอร์มินัล.
วิธีเปิดและเล่นไฟล์ QOA
เนื่องจาก QOA เป็นรูปแบบที่มีน้ำหนักเบาและสร้างขึ้นเพื่อการรวมในเวลารันไทม์เป็นหลัก ตัวเล่นสื่อทั่วไปอาจต้องการปลั๊กอินหรือการสร้างเฉพาะ.
- Dedicated CLI Player (
qoaplay): ที่เก็บข้อมูลอย่างเป็นทางการคอมไพล์เป็นqoaplayซึ่งใช้ระบบย่อยเสียงแบบเนทีฟ (ALSA บน Linux, CoreAudio บน macOS, WASAPI บน Windows) เพื่อเล่นไฟล์.qoaโดยตรง:./qoaplay audio.qoa - เฟรมเวิร์กเกมและเอนจิน:
- Raylib: การสนับสนุนแบบเนทีฟผ่านโมดูล
raudio. - Godot Engine: การสนับสนุนการเล่นแบบเนทีฟเต็มรูปแบบ (Godot 4.3+).
- Raylib: การสนับสนุนแบบเนทีฟผ่านโมดูล
- เครื่องเล่นสื่อและปลั๊กอิน:
- Qmmp: ตัวเล่นมัลติมีเดียขั้นสูงพร้อมโมดูลการถอดรหัส QOA แบบเนทีฟ.
- OpenCubicPlayer: ตัวติดตามคลาสสิกและเครื่องเล่นไฟล์เสียงที่รองรับสตรีม QOA.
- Audacious / foobar2000: รองรับผ่านปลั๊กอินอินพุตของชุมชนโอเพนซอร์ส.
- IDE และเครื่องมือสำหรับนักพัฒนา:
- VS Code: ส่วนขยาย QOA Preview ช่วยให้นักพัฒนาสามารถดูตัวอย่างและเล่นคลิปเสียง
.qoaได้โดยตรงภายในต้นไม้ซอร์สของพวกเขา.
- VS Code: ส่วนขยาย QOA Preview ช่วยให้นักพัฒนาสามารถดูตัวอย่างและเล่นคลิปเสียง
คำถามที่พบบ่อย (FAQ)
QOA ย่อมาจากอะไร?
QOA ย่อมาจาก Quite OK Audio, เป็นรูปแบบเสียง lossy ที่เร็ว, เรียบง่าย, และเป็นโอเพ่นซอร์ส.
QOA เป็นออดิโอแบบ lossless หรือ lossy?
QOA เป็นรูปแบบการบีบอัดเสียง lossy แต่ยังคงคุณภาพเสียงใกล้เคียงกับความโปร่งใสสำหรับการใช้งานเชิงปฏิบัติจำนวนมาก.
QOA ให้การบีบอัดมากแค่ไหน?
QOA บีบอัดเสียงที่ไม่ได้บีบอัด 16-bit ด้วยอัตราส่วนคงที่ $5:1$ (เท่ากับ $3.2\text{ bits per sample}$).
QOA สามารถแทนที่ MP3 หรือ AAC สำหรับการสตรีมเพลงทั่วไปได้หรือไม่?
ไม่, QOA ให้ความสำคัญกับการถอดรหัสที่เร็วมากและมีน้ำหนักเบากว่าการประหยัดแบนด์วิดท์สูงสุด, ทำให้เหมาะกับเกม, ไมโครคอนโทรลเลอร์, และแอปพลิเคชันที่ต้องการความหน่วงต่ำมากกว่า high-density web streaming.
QOA มีค่าใบอนุญาตหรือค่าลิขสิทธิ์หรือไม่?
ไม่, QOA ปราศจากสิทธิบัตรทั้งหมดและเผยแพร่ภายใต้ MIT license ที่อนุญาต, ในขณะที่สเปคและโลโก้ของมันเป็นสาธารณะ (CC0).
URL อ้างอิง & แหล่งข้อมูลอย่างเป็นทางการ
- เว็บไซต์อย่างเป็นทางการ: https://qoaformat.org/
- สเปคอย่างเป็นทางการ (PDF): https://qoaformat.org/qoa-specification.pdf
- คลัง GitHub: https://github.com/phoboslab/qoa
- การเจาะลึกเชิงเทคนิคของผู้เขียน: บล็อก PhobosLab - ประกาศ QOA & เกณฑ์การวัดผล