به گفته: CNX Software – Embedded Systems News
کتابخانه PCMFlow722 که توسط Tanaka Masayuki توسعه یافته است، امکان انتقال صدای HD دوطرفه (به صورت نیمهدوطرفه یا Half-Duplex) را بهصورت بلادرنگ (Real-time) بر روی پروتکل ESP-NOW فراهم میکند. این پلتفرم نرمافزاری برای بردهای ESP32 مجهز به اسپیکر و میکروفون طراحی شده است و عملاً آنها را به یک دستگاه واکیتاکی دیجیتال تبدیل مینماید.
این کتابخانه، افزونهی کدک پهنباند G.722 را برای کتابخانه پایه PCMFlow پیادهسازی میکند. PCMFlow یک ابزار سبکوزن برای رمزگشایی صوتی و جریان دادههای PCM در محیط آردوینو است که پیش از این از کدکهای صوتی فشردهنشده PCM، MP3 و FLAC پشتیبانی میکرد. از آنجا که فرمتهای PCM و FLAC پهنای باند بسیار زیادی را در پروتکل ESP-NOW اشغال میکنند و فرمت MP3 نیز برای انتقال صوت بلادرنگ (به دلیل تأخیر بالا) مناسب نیست، کدک استاندارد و قدیمی G.722 به عنوان بهترین جایگزین انتخاب شده است.
کلیدواژه اصلی در این پروژه «صدای HD» است؛ چرا که انتقال صوت دوطرفه بر بستر پروتکل بیسیم ESP-NOW پیش از این نیز در پروژههایی مانند esp32-walkie-talkie (توسط Atomic14 در سال ۲۰۱۹) و اخیراً در پروژه مستندسازیشده Adafruit ESP-NOW Walkie-Talkie پیادهسازی شده بود، اما آن راهکارها معمولاً بر پایه کدک کیفیت پایینتر G.711 یا صوت فشردهنشده کار میکردند.
کتابخانه PCMFlow722 و کدک G.722 امکان تجربه صدای HD را با «صوت ۷ کیلوهرتز در نرخ نمونهبرداری ۱۶ کیلوهرتز، با استفاده از همان پهنای باند ۶۴ کیلوبیت بر ثانیهای کدک G.711 (اندازه بسته مشابه، اما با دو برابر پهنای باند صوتی)» فراهم میکنند، همانطور که Tanaka توضیح داده است. جدول زیر کدکها و کتابخانههای G.711، G.722 و Opus را با هم مقایسه میکند.
| PCMFlowG711 | PCMFlowG722 (this lib) | PCMFlowOpus | |
|---|---|---|---|
| Audio band | narrowband (8 kHz / ≤ 3.4 kHz) | wideband (16 kHz / ≤ 7 kHz) | narrow / wide / fullband (8–48 kHz) |
| Bitrate (voice) | 64 kbps fixed | 64 kbps fixed (Mode 1) | 16–32 kbps typical |
| Compression vs raw 16-bit PCM | 2× | 4× | 10–15× |
| Codec flash footprint | < 4 KB | ~10 KB | ~150–180 KB |
| Codec CPU | negligible | low | non-trivial on M0/M3-class MCUs |
| Patent / license complexity | none (1972 standard, expired) | none (1988 standard, expired); core is Public Domain | royalty-free patent grant, BSD-3-Clause source |
| Quality | toll-grade telephony | HD voice (wideband telephony) | wideband / fullband, far better |
اگرچه کدک Opus پهنای باند کمتر و کیفیت صوتی تمامباند (Full-band) را ارائه میدهد، اما کدک صوتی G.722 پیچیدگی ریاضی بسیار کمتری داشته و به منابع سختافزاری جزییتری (از نظر حافظه فلش و مگاهرتز پردازنده) نیاز دارد. این ویژگیها، G.722 را برای پروتکل ESP-NOW ایدهآل میکند؛ زیرا این پروتکل بارهای داده (Payloads) را حداکثر تا ۲۵۰ بایت حمل میکند. یک فریم صوتی ۲۰ میلیثانیهای G.722 در فرکانس ۱۶ کیلوهرتز، دقیقاً ۱۶۰ بایت داده تولید میکند که با حجم دیتای G.711 برابر است اما کیفیتی دو برابر دارد؛ این در حالی است که فرمت خام PCM تککاناله ۱۶ بیتی با فرکانس ۱۶ کیلوهرتز به ۶۴۰ بایت فضا نیاز دارد (کدک G.722 فشردهسازی ۴ برابری انجام میدهد).

این کتابخانه یک انکودر G.722 (برای فشردهسازی دیتای PCM ۱۶ کیلوهرتز به G.722) و یک دیکودر (برای بازگرداندن دادهها به PCM) را ارائه میدهد. اگر میخواهید این قابلیت را روی سختافزار خود آزمایش کنید، نمونه کد (اسکچ آردوینو) EspNowTransceiver.ino بهترین گزینه برای شروع است. این کد یک فرستنده-گیرنده صدای HD نیمهدوطرفه بر بستر ESP-NOW را ایجاد میکند که در آن، یک فریمور واحد به صورت همزمان هم در نقش فرستنده و هم در نقش گیرنده عمل میکند.
این پروژه بر روی برد مدل M5Stack Core2 مجهز به SoC ESP32، هشت مگابایت PSRAM و ۱۶ مگابایت SPI flash، به همراه یک نمایشگر کوچک ۲ اینچی برای نمایش کانال ESP-NOW، یک اسپیکر ۱ وات (1W-0928) و یک میکروفون SPM4123 تست شده است. تا زمانی که دکمه A نگه داشته شود، صدا از طریق ESP-NOW برای یک یا چند دستگاه Core2 پخش میشود و در سایر مواقع، دستگاهها در حالت گیرنده صوتی قرار دارند.
این پروژه بهطور موفقیتآمیز روی برد توسعه M5Stack Core2 تست شده است که از مشخصات زیر بهره میبرد:
در سناریوی عملی، تا زمانی که کاربر دکمه A را روی برد فشرده نگه دارد، سیگنال صوتی از طریق پروتکل ESP-NOW برای یک یا چند دستگاه Core2 دیگر پخش میشود؛ در سایر مواقع، تمامی دستگاهها به صورت خودکار در حالت گیرنده (شنونده) صوتی قرار میگیرند.
من اون دیوونهام که وقتی بورد روشن نمیشه، ذوق میکنم؛ یعنی یه شب تا صبح قراره با منبع تغذیه و لاجیک آنالایزر عشق کنم! آدما قهوه میخورن که بیدار بمونن، ولی من بیدار میمونم تا بفهمم این بورد چرا باهام قهر کرده! زندگی من یه لوپ بینهایته بین باگ و دیباگ... با چاشنی یه کم امید و یه عالمه دیوونگی!
SPM1423 درسته
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.