اگر نسخهٔ نگهداریِ ضبط گفتار را انتخاب میکنید، «برابرماندن نمونههای صوت» را از «برابرماندن همهٔ بایتها و متادیتای فایل» جدا کنید. FLAC برای فشردهسازی بیاتلاف صوت طراحی شده است؛ WAV ظرفی است که محتوای فنیِ آن باید مشخص شود. برای مقایسهٔ این دو، صرفِ یکسانبودن یا نبودنِ هش کل فایل پاسخ کامل نیست.
منظور از بیاتلاف دقیقاً کدام بخش است؟
در تبدیل سازگارِ صوتِ صحیح به FLAC و بازگشایی آن، هدف حفظ مقدارهای صوتی است. این به معنی حفظ خودکار تمام chunkهای جانبیِ WAV با تنظیمهای پیشفرض نیست. مستندات رسمی FLAC برای نگهداشتن متادیتای خارجی گزینهٔ جدا معرفی میکنند؛ امکان و محدودیتِ همان نسخهٔ ابزار را بررسی کنید. فایلِ خروجی WAV ممکن است نمونههای برابر و سرآیند متفاوت داشته باشد.
WAV را هم بدون بررسی PCM فرض نکنید. مثال این مقاله فقط WAV با PCM صحیح۱۶بیتی، تککاناله و۸۰۰۰هرتز است. FLAC را روی فایل اصلیِ دارای صوتِ اتلافی اعمالکردن، اطلاعاتی را که پیشتر حذف شده برنمیگرداند. برای انتخاب ورودی سرویس، راهنمای WAV، MP3 و M4A مسئلهٔ دیگری را حل میکند.
آزمایش واقعیِ محدود: دو ظرف متفاوت، یک PCM
کد همراه شش نمونهٔ ساختگی [۰،۱۰۰۰،−۱۰۰۰،۳۰۰،−۳۰۰،۰] را داخل دو WAV در حافظه میگذارد. در دومی یک chunk جانبی JUNK با متن آزمایشی اضافه است. هر دو با wave خوانده میشوند؛ مقدارهای صوتی و مشخصات اصلی برابرند، اما هشِ کل فایلها فرق دارد. هیچ فایل خصوصی خوانده نمیشود و هیچ WAV روی سایت منتشر نمیکنیم.
| کنترل اجراشده | نتیجهٔ نمونه | برداشت |
|---|---|---|
| بایت و SHA-256 کل دو WAV | متفاوت | ظرفها عیناً یک فایل نیستند |
| نرخ، کانال، عرض نمونه و تعداد فریم | برابر | قرارداد فنیِ مقایسه یکسان است |
| ۱۲بایت PCM خواندهشده | برابر | شش نمونهٔ همین تمرین حفظ شدهاند |
| تغییر عمدی یک نمونه از−۱۰۰۰به−۹۹۹ | نابرابری PCM تشخیص داده شد | مقایسه فقط به طول فایل تکیه ندارد |
این آزمون نمایشِ تفاوتِ ظرف و صوت است؛ FLAC کدگذاری یا بازگشایی نشده، حجم فشرده و زمان اجرا اندازهگیری نشدهاند. آن را آزمون بیاتلافبودن یک نسخهٔ ابزار FLAC معرفی نکنید.
پروتکل پیشنهادی برای فایل واقعی
- نسخهٔ اصلی را دستنخورده نگه دارید و هش و مشخصات آن را در دفتر خصوصی ثبت کنید.
- مشخص کنید هدف حفظ صوت است یا همهٔ متادیتا، برچسبها و نشانگرهای تدوین هم لازماند؛ فهرست اقلام موردنیاز را پیش از تبدیل بنویسید.
- با ابزار موجود و سازگار، خروجی تازه بسازید؛ نرخ، کانال یا عمق را همزمان بدون هدف عوض نکنید.
- در مسیر بازگشایی، مشخصات و PCM را تحت یک قرارداد عددی مقایسه کنید؛ سپس اقلام متادیتای لازم را جدا بررسی کنید.
- خواندهشدن ابتدا و انتها و پخش در مقصد را کنترل کنید و نتیجهٔ نامعلوم را pass نزنید.
مقایسهٔ بایت PCM تنها وقتی تفسیر درست دارد که نوع عدد، ترتیب بایت، کانال و نرخ با هم سازگار باشند. این کد فقط PCM16 little-endian تمرین را میشناسد و مبدل عمومیِ قالبهای صوت نیست. شنیدن نیز برای کنترل کاربرد مفید است، ولی برابری دقیقِ تمام نمونهها را بهتنهایی ثابت نمیکند.
کدام را نگه داریم؟
اگر ابزارهای کار شما PCM-WAV مشخص را مستقیم میخوانند، سازگاریِ مسیر و حفظ نسخهٔ اصلی میتواند مهمتر از تبدیل اضافی باشد. اگر نگهداری بیاتلاف فشرده میخواهید، پذیرش FLAC و متادیتای لازم را در زنجیرهٔ ابزار خود آزمون کنید؛ درصد ثابتِ صرفهجویی قول نمیدهیم. برای ارسال به اپرانگار، قالب پذیرفتهشده را جدا هماهنگ کنید؛ انتخاب نسخهٔ آرشیو، پذیرش خودکار آن در سرویس را ثابت نمیکند.
فایل تمرین و منبع
دو WAV واقعیِ درحافظه با PCM برابر و سرآیند متفاوت · سه لایهٔ مقایسه؛ نتیجهٔ فشردهسازی و شنیدن نامعلوم است
- پرسشهای رسمی FLAC؛ صوت بیاتلاف و متادیتای خارجی WAV
- شرح رسمی ساختار FLAC و اطلاعات جریان
- مستندات Python۳٫۱۲ برای خواندن PCM در WAV
منابع در ۳ نوامبر ۲۰۲۶ خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.