بیتدپث یا عمق بیت، تعداد بیت برای نمایش مقدار یک نمونه است؛ بیتریت، تعداد بیت در واحد زمان است. عدد۱۶بیت را با۱۲۸کیلوبیتبرثانیه مقایسهٔ مستقیم نکنید. برای دیدن تفاوت، هفت مقدار نمونه را با یک قاعدهٔ صریح از شبکهٔ۱۶بیتی به شبکهٔ۸بیتی میبریم و خطای عددی را حساب میکنیم.
واحدها را اول جدا کنیم
| کمیت | واحد | سؤال |
|---|---|---|
| نرخ نمونهبرداری | نمونه در ثانیه، برای هر کانال | هر ثانیه چند مقدار ثبت میشود؟ |
| عمق بیت | بیت برای هر نمونهٔ کانال | هر مقدار روی چه شبکهای نمایش مییابد؟ |
| بیتریت | بیت در ثانیه | داده با چه نرخ حجمی ذخیره یا منتقل میشود؟ |
در PCM صحیحِ فشردهنشده، نرخ دادهٔ خام از نرخ نمونه ضرب در تعداد کانال ضرب در عمق بیت به دست میآید. برای۱۶۰۰۰نمونه در ثانیه و یک کانال،۱۶بیت برابر۲۵۶۰۰۰بیتبرثانیه است؛۸بیت برابر۱۲۸۰۰۰. این نرخ، حجم سرآیند یا متادیتا را در بر ندارد و فرمول مستقیمِ بیتریت MP3 نیست.
تعداد کدها با کیفیت شنیداری یکی نیست
۸بیت میتواند۲۵۶کد و۱۶بیت۶۵۵۳۶کد نمایش دهد. در قرارداد signed16 نمونهٔ ما، بازهٔ صحیح−۳۲۷۶۸تا۳۲۷۶۷ است. صرف دیدن این تعداد، نتیجهٔ دقت تشخیص گفتار یا کیفیت ضبط را مشخص نمیکند؛ سیگنال ورودی، نویز، کلیپشدن و پردازش هم دخیلاند. قالبِ عدد صحیح را نیز با float یکی نگیرید.
یک قاعدهٔ آموزشیِ کاهش عمق
برای هر ورودی صحیح x، عدد q=x//256 را میگیریم و بازسازی را 256*q میگذاریم. // در Python به سمت منفیِ بینهایت گرد میکند؛ این روش «گردکردن به نزدیکترین»، dither یا دستور تبدیل فایل صوت نیست. هشت بیت خروجی را بهصورت کد signed نشان میدهیم؛ روش ذخیرهٔ بایتِ PCM8 در WAV را پیاده نکردهایم.
| ورودی۱۶بیتی | کدِ۸بیتی | بازسازی روی شبکهٔ قدیم | خطا، ورودی منهای بازسازی |
|---|---|---|---|
| −۱۲۳۴۵ | −۴۹ | −۱۲۵۴۴ | ۱۹۹ |
| −۱۲۸ | −۱ | −۲۵۶ | ۱۲۸ |
| ۱۲۸ | ۰ | ۰ | ۱۲۸ |
| ۱۲۳۴۵ | ۴۸ | ۱۲۲۸۸ | ۵۷ |
فایلCSVهفت مقدار از جمله دو سر بازه دارد. کد علاوه بر این نمونهها، همهٔ۶۵۵۳۶ورودی مجاز را واقعاً بررسی میکند که خطا در قرارداد ما بین۰و۲۵۵باشد. این خطای یکطرفه از قاعدهٔ floor میآید؛ آن را نویز تصادفیِ بیسوگیری معرفی نکنید.
زیادکردن عمق، مقدارهای حذفشده را پیدا نمیکند
مثلاً کد۴۸را در۲۵۶ضرب میکنیم و۱۲۲۸۸میگیریم؛ از روی همین کد نمیفهمیم ورودی اصلی۱۲۳۴۵بوده است. پس افزایش ظرفیت ذخیره بهتنهایی، جزئیاتِ پیش از کاهش را بازیابی نمیکند. همین مرز را از بحثِ تغییر نرخ نمونه جدا بخوانید؛ اینجا تعداد جایگاههای زمانی تغییر نکرده است.
کلیپشدن هنگام ضبط هم مسئلهٔ دیگری است؛ زیادکردن عمق فایلِ ازقبلکلیپشده، قلهٔ اصلی را ثابت نمیکند. برای کار واقعی، نسخهٔ اصلی را حفظ و تبدیل لازم را با ابزار معتبر و کنترل شنیداری انجام دهید. این صفحه صدای واقعی، اختلاف شنیداری یا دقت مدل را آزمایش نکرده است.
برای تحویل صوت چه بنویسیم؟
نرخ نمونه، کانال، نوع نمونه و کدک را جدا ثبت کنید. اگر مقصد گفتار به متن است، در درخواست اپرانگار مشخصات فایل موجود را بدهید تا ورودی مورد پذیرش روشن شود؛ این اعداد پیشنهاد تنظیم برای همهٔ خدمات نیستند. فایل Python فقط عددهای آموزشی را تبدیل میکند و روی فایل شخصی یا شبکه کاری انجام نمیدهد.
فایل تمرین و منبع
هفت مقدار صحیح و خطای نگاشتِ آموزشی۱۶به۸بیت · کد خطای کوانتیزهٔ ساده؛ کنترل تمام۶۵۵۳۶مقدار ورودی
منابع در ۳ نوامبر ۲۰۲۶ خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.