تأخیر صدا را اندازه گیری کنید

در این صفحه روش های رایج برای اندازه گیری تاخیر ورودی و خروجی توضیح داده شده است.

تأخیر خروجی را اندازه گیری کنید

چندین تکنیک برای اندازه گیری تاخیر خروجی با درجات مختلف دقت و سهولت اجرا وجود دارد که در زیر توضیح داده شده است. همچنین مدار تست را برای نمونه محیط تست ببینید.

تست ال ای دی و اسیلوسکوپ

این تست تاخیر را در رابطه با نشانگر LED دستگاه اندازه گیری می کند. اگر دستگاه تولیدی شما LED ندارد، می توانید LED را روی یک دستگاه نمونه اولیه فرم فاکتور نصب کنید. برای دقت بیشتر در دستگاه‌های نمونه اولیه با مدار در معرض، یک پروب اسیلوسکوپ را مستقیماً به LED وصل کنید تا تأخیر سنسور نور را دور بزنید.

اگر نمی توانید LED را روی دستگاه تولیدی یا نمونه اولیه خود نصب کنید، راه حل های زیر را امتحان کنید:

  • برای همین منظور از یک پین ورودی/خروجی عمومی (GPIO) استفاده کنید.
  • از JTAG یا پورت دیباگ دیگری استفاده کنید.
  • از نور پس زمینه صفحه استفاده کنید. این ممکن است خطرناک باشد زیرا نور پس‌زمینه ممکن است تأخیر غیر قابل چشم پوشی داشته باشد و می‌تواند به خواندن تأخیر نادرست کمک کند.

برای انجام این آزمون:

  1. برنامه ای را اجرا کنید که همزمان با خروجی صدا، LED را به صورت دوره ای پالس می کند.

    توجه: برای به دست آوردن نتایج مفید، بسیار مهم است که از API های صحیح در برنامه آزمایشی استفاده کنید تا مسیر خروجی صوتی سریع را انجام دهید. برای پس‌زمینه، به طراحی برای کاهش تأخیر مراجعه کنید.

  2. یک سنسور نور را در کنار LED قرار دهید.
  3. پروب های یک اسیلوسکوپ دو کاناله را به جک هدفون سیمی (خروجی خط) و سنسور نور وصل کنید.
  4. از اسیلوسکوپ برای اندازه گیری اختلاف زمانی بین مشاهده سیگنال خروجی خط در مقابل سیگنال سنسور نور استفاده کنید.

تفاوت در زمان تاخیر تقریبی خروجی صدا است، با این فرض که تأخیر LED و تأخیر سنسور نور هر دو صفر هستند. به طور معمول، LED و سنسور نور هر کدام تاخیر نسبتاً کمی در حدود یک میلی ثانیه یا کمتر دارند، که به اندازه کافی کم است که بتوان نادیده گرفت.

تأخیر رفت و برگشت را اندازه گیری کنید

تأخیر رفت و برگشت مجموع تأخیر خروجی و تأخیر ورودی است.

تست لارسن

یکی از آسان‌ترین تست‌های تاخیر، تست بازخورد صوتی (اثر لارسن) است. این یک معیار خام از خروجی و تاخیر ورودی ترکیبی را با زمان بندی یک حلقه پاسخ ضربه ای ارائه می دهد. این تست به خودی خود به دلیل ماهیت آزمون برای تجزیه و تحلیل دقیق بسیار مفید نیست، اما می تواند برای کالیبراسیون تست های دیگر و برای ایجاد یک حد بالایی مفید باشد.

این روش زمان‌های مؤلفه را تجزیه نمی‌کند، که زمانی مهم است که تأخیر خروجی و تأخیر ورودی مستقل باشند. بنابراین این روش برای اندازه گیری دقیق تاخیر خروجی یا مقادیر تاخیر ورودی به صورت مجزا توصیه نمی شود، اما ممکن است برای ایجاد تخمین های تقریبی مفید باشد.

تأخیر خروجی به بلندگوی روی دستگاه می تواند به طور قابل توجهی بیشتر از تأخیر خروجی به کانکتور هدست باشد. این به دلیل اصلاح و محافظت بلندگو است.

برای انجام این آزمون:

  1. برنامه‌ای را اجرا کنید که صدا را از میکروفون ضبط می‌کند و بلافاصله داده‌های گرفته‌شده را روی بلندگو پخش می‌کند.
  2. صدایی از بیرون ایجاد کنید، مانند ضربه زدن روی یک مداد توسط میکروفون. این نویز یک حلقه بازخورد ایجاد می کند. از طرف دیگر، می توان با استفاده از نرم افزار یک ضربه به حلقه تزریق کرد.
  3. زمان بین پالس های بازخورد را اندازه گیری کنید تا مجموع تأخیر خروجی، تأخیر ورودی و سربار برنامه را بدست آورید.

در اینجا منابعی برای دریافت اپلیکیشن برای تست لارسن آمده است:

دانگل حلقه بک صوتی

دانگل لوپ بک صوتی Dr. Rick O'Rang برای اندازه گیری تاخیر رفت و برگشت روی کانکتور هدست مفید است. تصویر زیر نتیجه تزریق یک ضربه به حلقه یک بار و سپس اجازه دادن به حلقه بازخورد را برای نوسان نشان می دهد. دوره نوسانات تأخیر رفت و برگشت است. دستگاه خاص، انتشار نرم افزار و شرایط آزمایش در اینجا مشخص نشده است. نتایج نشان داده شده نباید برون یابی شوند.

اندازه گیری رفت و برگشت

شکل 1. اندازه گیری رفت و برگشت

ممکن است لازم باشد کابل USB را برای کاهش نویز بردارید و سطح صدا را تنظیم کنید تا نوسانی پایدار داشته باشید.

اندازه گیری تاخیر ورودی

اندازه گیری تأخیر ورودی دشوارتر از تأخیر خروجی است. تست های زیر ممکن است کمک کننده باشد.

یک روش این است که ابتدا تأخیر خروجی را با استفاده از روش LED و اسیلوسکوپ تعیین کنید و سپس از آزمون بازخورد صوتی (لارسن) برای تعیین مجموع تأخیر خروجی و تأخیر ورودی استفاده کنید. تفاوت بین این دو اندازه گیری در تاخیر ورودی است.

تکنیک دیگر استفاده از پین GPIO در دستگاه نمونه اولیه است. به صورت خارجی، همزمان با ارائه سیگنال صوتی به دستگاه، یک ورودی GPIO را پالس کنید. برنامه ای را اجرا کنید که تفاوت زمان رسیدن سیگنال GPIO و داده های صوتی را مقایسه می کند.

تأخیر را کاهش دهید

برای دستیابی به تأخیر کم صدا، در سراسر سیستم به زمان‌بندی، مدیریت وقفه، مدیریت انرژی و طراحی درایور دستگاه توجه ویژه‌ای داشته باشید. هدف شما این است که از مسدود کردن یک رشته صوتی SCHED_FIFO برای بیش از چند میلی ثانیه هر بخشی از پلتفرم جلوگیری کنید. با اتخاذ چنین رویکرد سیستماتیک، می‌توانید تأخیر صوتی را کاهش دهید و به طور کلی از مزایای جانبی عملکرد قابل پیش‌بینی‌تر بهره ببرید.

افت های صوتی، زمانی که رخ می دهند، اغلب فقط در شرایط خاص یا فقط در انتقال قابل تشخیص هستند. سعی کنید با راه اندازی برنامه های جدید و پیمایش سریع در نمایشگرهای مختلف، سیستم را تحت فشار قرار دهید. اما توجه داشته باشید که برخی از شرایط آزمون آنقدر استرس زا هستند که فراتر از اهداف طراحی هستند. به عنوان مثال، گرفتن یک گزارش اشکال چنان بار زیادی را بر روی سیستم وارد می کند که ممکن است در آن حالت زیر بارگذاری قابل قبول باشد.

هنگام آزمایش برای underrun:

  • هر DSP را بعد از پردازنده برنامه پیکربندی کنید تا حداقل تأخیر را اضافه کند.
  • تست ها را تحت شرایط مختلف مانند روشن یا خاموش بودن صفحه نمایش، وصل یا جدا بودن USB، روشن یا خاموش کردن WiFi، روشن یا خاموش کردن بلوتوث، و روشن یا خاموش بودن رادیوهای تلفن و داده انجام دهید.
  • موسیقی نسبتاً آرامی را انتخاب کنید که بسیار با آن آشنا هستید و به راحتی می توان صدای زیر را شنید.
  • برای حساسیت بیشتر از هدفون سیمی استفاده کنید.
  • به خود استراحت دهید تا «خستگی گوش» را تجربه نکنید.

هنگامی که دلایل زیربنایی را پیدا کردید، تعداد و اندازه بافرها را کاهش دهید تا از این مزیت استفاده کنید. رویکرد مشتاقانه کاهش تعداد و اندازه بافرها قبل از تجزیه و تحلیل کمبود و رفع علل زیرشاخه تنها منجر به ناامیدی می شود.

ابزار

systrace یک ابزار همه منظوره عالی برای تشخیص اشکالات عملکرد در سطح سیستم است.

خروجی dumpsys media.audio_flinger همچنین شامل بخش مفیدی به نام "آمار متحرک ساده" است. این خلاصه ای از تغییرپذیری زمان های سپری شده برای هر ترکیب صوتی و چرخه ورودی/خروجی دارد. در حالت ایده‌آل، تمام اندازه‌گیری‌های زمانی باید تقریباً برابر با میانگین یا زمان چرخه اسمی باشند. اگر حداقل یا حداکثر بسیار پایین را مشاهده کردید، این نشانه یک مشکل است، احتمالاً تأخیر زمان‌بندی بالا یا زمان غیرفعال کردن وقفه. قسمت انتهایی خروجی بسیار مفید است، زیرا تغییرپذیری فراتر از +/- 3 انحراف استاندارد را برجسته می کند.