صدای فراگیر و ردیابی سر

‫Android 13 روشی استاندارد برای سازندگان تجهیزات اصلی معرفی می‌کند تا از صدای فضایی و ردیابی سر بدون نیاز به سفارشی‌سازی‌های مختص فروشنده یا کیت‌های توسعه نرم‌افزار پشتیبانی کنند.

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

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

Android 13 با ارائه پردازش صدای فضایی در پایین‌ترین سطح ممکن در خط لوله صوتی، صدای فضایی و ردیابی سر را بهینه‌سازی می‌کند تا کمترین تأخیر ممکن را به‌دست آورد.

معماری

چارچوب صوتی و میانای برنامه‌سازی کاربردی Android اصلاح‌شده در Android 13 به پذیرش فناوری صدای فراگیر در سراسر بوم‌سازگان کمک می‌کند.

شکل زیر تغییرات مربوط به صوت فضایی را که در معماری خط لوله صوتی با Android 13 ایجاد شده است نشان می‌دهد:

صوتی فضایی

شکل ۱. معماری خط لوله صوتی با فضاساز

در مدل جدید، فضاساز بخشی از چارچوب صوتی است و از رمزگشا جدا شده است. فضاساز محتوای صوتی ترکیبی را دریافت می‌کند و جاری‌سازی استریو را به Audio HAL ارائه می‌دهد. جداسازی فضاساز از رمزگشا به «تولیدکنندگان تجهیزات اصلی» امکان می‌دهد فروشندگان مختلفی را برای رمزگشا و فضاساز انتخاب کنند و به تأخیر رفت‌وبرگشت مطلوب برای ردیابی سر دست یابند. این مدل جدید همچنین شامل قلاب‌هایی برای چارچوب حسگر برای ردیابی سر است.

شکل زیر معماری سیستم چارچوب صوتی را برای جلوه فضاساز و ردگیری سر نشان می‌دهد:

معماری سیستم فضایی

شکل ۲. معماری سیستم با فضاساز و ردگیری سر

همه میاناهای برنامه‌سازی کاربردی صدای فراگیر در کلاس عمومی Spatializer در سطح برنامه گروه‌بندی شده‌اند. کلاس SpatializerHelper در سرویس صوتی با مؤلفه‌های میانای کاربر سامانه ارتباط برقرار می‌کند تا عملکرد مربوط به فضاساز را براساس قابلیت‌های پلاتفرم و دستگاه متصل‌شده مدیریت کند. کلاس جدید Spatializer در سرویس خط‌مشی صوتی، گراف صدای فضایی موردنیاز برای ترکیب چندکاناله و فضاسازی را براساس قابلیت‌های بیان‌شده توسط سازنده تجهیزات اصلی، دستگاه‌های متصل، و موارد استفاده فعال ایجاد و کنترل می‌کند. کلاس میکسر جدید SpatializerThread قطعه‌های چندکاناله را ترکیب می‌کند و ترکیب حاصل را به موتور FX پس‌پردازش ارسال می‌کند که خروجی استریو را به Audio HAL ارائه می‌دهد. برای ردیابی سر، کلاس SpatializerPoseController عملکردهای مربوط به ردیابی سر را گروه‌بندی می‌کند تا با پشته حسگر میانایابی کند و سیگنال‌های حسگر را که به موتور جلوه داده می‌شوند ادغام و فیلتر کند. داده‌های حسگر ردیابی سر ازطریق پروتکل HID از درایور بلوتوث منتقل می‌شود.

تغییرات در معماری خط لوله صوتی Android 13 در موارد زیر بهبود می‌یابد:

  • کاهش تأخیر بین فضاساز و هدفون.
  • ارائه میاناهای برنامه‌سازی کاربردی یکپارچه برای خدمت‌رسانی به توسعه‌دهندگان نرم‌افزار.
  • کنترل وضعیت ردیابی سر ازطریق سیستم APIs.
  • درحال پیدا کردن حسگرهای ردیابی سر و مرتبط کردن آن‌ها با دستگاه‌های صوتی فعال.
  • ادغام کردن نشان‌های مختلف از حسگرهای مختلف و محاسبه وضعیت سر که می‌تواند توسط موتور جلوه فضاساز مصرف شود.

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

میاناهای برنامه‌سازی کاربردی صدای فضایی

‫Android 13 سیستم صدای فضایی و API توسعه‌دهنده ارائه می‌دهد.

تولیدکنندگان تجهیزات اصلی می‌توانند عملکرد برنامه را براساس دردسترس بودن ویژگی و وضعیت فعال‌شده آن که توسط میاناهای برنامه‌سازی کاربردی سیستم تنظیم می‌شود، تطبیق دهند. برنامه‌ها همچنین می‌توانند ویژگی‌های صوتی را برای غیرفعال کردن صدای فضایی به دلایل زیبایی‌شناختی یا برای نشان دادن اینکه جاری‌سازی صوتی قبلاً برای صدای فضایی پردازش شده است پیکربندی کنند.

برای میاناهای برنامه‌سازی کاربردی توسعه‌دهنده، Spatializer را ببینید.

تولیدکنندگان تجهیزات اصلی می‌توانند از میاناهای برنامه‌سازی کاربردی سیستم برای پیاده‌سازی رابط کاربری تنظیمات «صداها» و «بلوتوث» استفاده کنند که به کاربر امکان می‌دهد وضعیت صدای فراگیر و ویژگی ردیابی سر را برای دستگاهش کنترل کند. کاربر می‌تواند صدای فضایی را برای بلندگو و هدفون سیمی در واسط کاربر تنظیمات «صداها» فعال یا غیرفعال کند. تنظیم صدای فضایی برای بلندگو فقط درصورتی دردسترس است که پیاده‌سازی جلوه فضاساز از حالت بین‌گوشی پشتیبانی کند.

کاربر همچنین می‌تواند صدای فضایی و ردیابی سر را در تنظیمات دستگاه بلوتوث برای هر دستگاه فعال یا غیرفعال کند. تنظیم ردیابی سر فقط درصورتی دردسترس است که هدست بلوتوث حسگر ردیابی سر داشته باشد.

اگر ویژگی صدای فراگیر پشتیبانی شود، تنظیمات پیش‌فرض برای صدای فراگیر همیشه روشن است. برای فهرست کامل میاناهای برنامه‌سازی کاربردی سیستم، Spatializer.java را ببینید.

نوع حسگر ردیابی سر جدید Sensor.TYPE_HEAD_TRACKER به چارچوب حسگر اضافه شده است و «لایه انتزاعی سخت‌افزار حسگر» آن را به‌عنوان حسگر پویا ازطریق بلوتوث یا USB نمایان می‌کند.

ادغام صدای فراگیر

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

الزامات

برای ادغام صدای فراگیر، باید الزامات زیر برآورده شود:

  • ‫Audio HAL و DSP صوتی باید از مسیر خروجی اختصاصی برای صدای فضایی پشتیبانی کنند.
  • برای صدای فضایی با ردگیری سر، هدفون باید حسگرهای ردگیری سر داخلی داشته باشد.
  • پیاده‌سازی باید با استاندارد پیشنهادی برای ردیابی سر ازطریق پروتکل HID از هدست بلوتوث به تلفن مطابقت داشته باشد.
  • برای پشتیبانی از صدای فراگیر، Audio HAL v7.1 لازم است.

بااستفاده از مراحل زیر، صدای فضایی را ادغام کنید:

  1. پشتیبانی از صدای فضایی را در فایل device.mk خود به‌صورت زیر اعلام کنید:

    PRODUCT_PROPERTY_OVERRIDES += \
         ro.audio.spatializer_enabled=true
    

    این کار باعث می‌شود AudioService از پشتیبانی فضاساز اولیه استفاده کند.

  2. خروجی اختصاصی برای ترکیب صدای فضایی را در audio_policy_configuration.xml به‌صورت زیر اعلام کنید:

    <audioPolicyConfiguration>
      <modules>
       <module>
         <mixPorts>
         <mixPort name="spatializer" role="source"   flags="AUDIO_OUTPUT_FLAG_SPATIALIZER">
           <profile name="sa" format="AUDIO_FORMAT_PCM_FLOAT"
             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
    
  3. کتابخانه جلوه فضاساز را در audio_effects.xml به‌صورت زیر اعلام کنید:

    <audio_effects_conf>
          <libraries>
             <library name="spatializer_lib" path="libMySpatializer.so"/>
              …
             </libraries>
          <effects>
           <effect name="spatializer" library="spatializer_lib" uuid="myunique-uuid-formy-spatializereffect"/>
    
  4. فروشندگانی که جلوه فضاساز را پیاده‌سازی می‌کنند باید از موارد زیر پیروی کنند:

    • پیکربندی و کنترل پایه مشابه با دیگر جلوه‌ها در Effect HAL.
    • پارامترهای خاصی که برای چارچوب لازم است تا قابلیت‌ها و پیکربندی‌های پشتیبانی‌شده را کشف کند، مانند:

      • SPATIALIZER_PARAM_SUPPORTED_LEVELS
      • SPATIALIZER_PARAM_LEVEL
      • SPATIALIZER_PARAM_HEADTRACKING_SUPPORTED
      • SPATIALIZER_PARAM_HEADTRACKING_MODE
      • SPATIALIZER_PARAM_SUPPORTED_CHANNEL_MASKS
      • SPATIALIZER_PARAM_SUPPORTED_SPATIALIZATION_MODES
      • SPATIALIZER_PARAM_HEAD_TO_STAGE

    برای اطلاعات بیشتر، effect_spatializer.h را ببینید.

توصیه‌ها

توصیه می‌کنیم که تولیدکنندگان تجهیزات اصلی درطول پیاده‌سازی از رهنمودهای زیر استفاده کنند:

  • درصورت دردسترس بودن، از LE Audio برای تسهیل قابلیت همکاری و دستیابی به اهداف تأخیر استفاده کنید.
  • تأخیر رفت‌وبرگشت، از تشخیص حرکت حسگر تا دریافت صدا توسط هدفون، باید کمتر از ۱۵۰ میلی‌ثانیه باشد تا تجربه کاربری خوبی ارائه شود.
  • برای بلوتوث کلاسیک (BT) با «نمایه توزیع صوتی پیشرفته» (A2DP):
    • از یک کدک با تأخیر کم، مانند Opus استفاده کنید.
    • عملکردهای کنترل تأخیر را در Audio HAL پیاده‌سازی کنید. این کار بهینه‌سازی توان و عملکرد را وقتی ردیابی سر خاموش است و غیرفعال کردن ردیابی سر را در شرایط غیربهینه فعال می‌کند.

اعتبارسنجی

برای تأیید عملکرد ویژگی صدای فراگیر، از آزمون‌های CTS موجود در SpatializerTest.java استفاده کنید.

پیاده‌سازی ضعیف الگوریتم‌های فضاسازی یا ردیابی سر می‌تواند باعث شود توصیه تأخیر رفت‌وبرگشت که در توصیه‌ها فهرست شده است برآورده نشود.