الصوت المكاني وتتبُّع الرأس

يوفّر Android 13 طريقة عادية للمصنّعين الأصليين للأجهزة تتيح الصوت المكاني وتتبُّع حركة الرأس بدون الحاجة إلى أدوات أو SDKs.

الصوت المكاني عبارة عن تقنية تُستخدم لإنشاء مجال صوتي يحيط المستمع. تتيح ميزة الصوت المكاني للمستخدمين التعرّف على القنوات والأصوات الفردية. في أوضاع تختلف عن الأوضاع المادية لمحولات تحويل الطاقة جهاز سماعي مُستخدم للتشغيل. فعلى سبيل المثال، يقدم الصوت المكاني للمستخدم القدرة على الاستماع إلى مقاطع صوتية متعددة القنوات عبر سماعات الرأس. استخدام البيانات المكانية والصوت، يمكن لمستخدمي سماعات الرأس إدراك الحوار أمامهم التأثيرات وراءها، على الرغم من عدم وجود سوى محوّلين فقط للتشغيل.

تساعد ميزة تتبُّع حركة الرأس المستخدم في التعرّف على طبيعة الصوت المكاني. العميل قيد المحاكاة حول رؤوسهم. تكون هذه التجربة فعالة فقط عندما وقت الاستجابة منخفض، حيث يُقاس وقت الاستجابة على أنه الفترة التي تفصل بين تحريك رأسه ووقت سماعه تحرّك موضع مكبّر الصوت الافتراضي وفقًا لذلك.

يوفّر Android 13 تحسينات لتعزيز الصوت المكاني والرأس. من خلال توفير معالجة الصوت المكاني بأقل مستوى ممكن في مسار الصوت للوصول إلى أقل وقت استجابة ممكن.

هندسة معمارية

إطار عمل Android Audio وواجهة برمجة التطبيقات المعدَّلَين في Android 13 يسهّل استخدام تكنولوجيا الصوت المكاني في المنظومة المتكاملة.

يوضح الشكل التالي التغييرات المرتبطة بالصوت المكاني والتي يتم إجراؤها على بنية مسار الصوت في Android 13:

الصوت المكاني

الشكل 1. بنية خطوط الصوت باستخدام أداة تحسين الصوت المكاني

في النموذج الجديد، يشكّل محدِّد الصوت المكاني جزءًا من إطار عمل الصوت وأن يكون منفصلاً عن أداة فك الترميز. يتعامل محدِّد الصوت المكاني مع المحتوى الصوتي المختلط لعرض بث استريو إلى طبقة تجريد الأجهزة (HAL) الصوتية. فصل محدِّد الصوت المكاني يتيح برنامج فك الترميز للمصنّعين الأصليين للأجهزة اختيار مورّدين مختلفين لبرنامج فك الترميز ومحدِّد المكان. ولتحقيق وقت الاستجابة المطلوب ذهابًا وإيابًا لتتبُّع حركة الرأس. هذا النموذج الجديد كما تتضمن أيضًا خطافات لإطار أداة الاستشعار لتتبع حركة الرأس.

يوضّح الشكل التالي بنية النظام لإطار العمل الصوتي. لتأثير أداة البحث المكاني وتتبُّع حركة الرأس:

قوس النظام المكاني

الشكل 2. بنية النظام من خلال أداة البحث المكاني وتتبُّع حركة الرأس

كلّ واجهات برمجة تطبيقات الصوت المكاني مجمّعة بشكل علني Spatializer على مستوى التطبيق. SpatializerHelper فئة في واجهات خدمات الصوت مع مكونات واجهة مستخدم النظام لإدارة الوظائف المتعلّقة بمحدِّد المكان استنادًا إلى النظام الأساسي والجهاز المتصل والإمكانات. تنشئ الفئة Spatializer الجديدة في خدمة سياسة الصوت الصوت المكاني وتتحكّم فيه. مطلوب رسم بياني للصوت لمزج القنوات المتعددة وتحديد مكانها استنادًا إلى الإمكانات التي يعبّر عنها المصنّع الأصلي للجهاز والأجهزة المتصلة وحالات الاستخدام النشطة. تمزج فئة أداة المزج الجديدة SpatializerThread المقاطع الصوتية المتعددة القنوات وتزوِّد التشكيلة الناتجة بتأثيرات ما بعد المعالجة. يقدم إخراج استيريو إلى طبقة تجريد الأجهزة الصوتية (HAL). بالنسبة لتتبع الرأس، SpatializerPoseController مجموعات الفئات المتعلقة بتتبع حركة الرأس، مع مجموعة أداة الاستشعار ودمج وتصفية إشارات المستشعر التي تتم إضافتها إلى محرك التأثير. يتم نقل بيانات جهاز استشعار تتبُّع حركة الرأس من خلال بروتوكول HID. من برنامج تشغيل البلوتوث.

تغييرات على بنية مسار الصوت في Android 13 لتحسين ما يلي:

  • تقليل وقت الاستجابة بين محدِّد الصوت المكاني وسمّاعات الرأس
  • توفير واجهات برمجة تطبيقات موحَّدة لخدمة مطوّري التطبيقات
  • التحكّم في حالة تتبُّع الرأس من خلال واجهات برمجة تطبيقات النظام
  • رصد أجهزة استشعار تتبُّع حركة الرأس وربطها بأجهزة صوتية نشطة
  • دمج الإشارات من أجهزة الاستشعار المختلفة وحساب وضع الرأس الذي يمكن الذي يستهلكه محرك تأثير المحدِّد المكاني.

يمكن أن تؤدي وظائف مثل التعويض عن التحيز ورصد حالة السكون وتحديد المعدل إلى باستخدام مكتبة أدوات تتبع الرأس.

واجهات برمجة تطبيقات الصوت المكاني

يوفّر Android 13 أدوات ومطوِّرًا لنظام الصوت المكاني واجهات برمجة التطبيقات.

ويمكن للمصنّعين الأصليين للأجهزة تعديل سلوك التطبيق بناءً على مدى توفّر الميزات وحالة تفعيلها. والذي يتم ضبطه من خلال واجهات برمجة تطبيقات النظام. يمكن للتطبيقات أيضًا ضبط سمات الصوت إيقاف ميزة الصوت المكاني لأسباب جمالية أو للإشارة إلى أن البث الصوتي تمّت معالجتها مسبقًا لتوفير الصوت المكاني

للاطّلاع على واجهات برمجة التطبيقات الموجّهة للمطوِّرين، يُرجى الاطّلاع على Spatializer.

يمكن للمصنّعين الأصليين للأجهزة استخدام واجهات برمجة التطبيقات للنظام لتنفيذ واجهة مستخدم إعدادات الأصوات والبلوتوث، تتيح للمستخدم التحكّم في حالة الصوت المكاني والرأس الميزة الخاصة بأجهزتهم. يمكن للمستخدم تفعيل الصوت المكاني أو إيقافه لمكبّر الصوت وسماعات الرأس السلكية في واجهة مستخدم إعدادات الأصوات. يعبّر الاسم المكاني يتوفّر إعداد الصوت لمكبّر الصوت فقط في حال تفعيل تأثير محدِّد الصوت المكاني. التنفيذ يدعم الوضع عبر الصوت.

يمكن للمستخدم أيضًا تفعيل أو إيقاف الصوت المكاني وتتبُّع الرأس في إعداد الجهاز الذي يتضمّن بلوتوث لكل جهاز. يتوفّر إعداد تتبُّع حركة الرأس فقط إذا كشفت سماعة الرأس التي تعمل بالبلوتوث عن مستشعر تتبُّع حركة الرأس

تكون الإعدادات التلقائية للصوت المكاني مفعّلة دائمًا إذا كانت الميزة الاطّلاع على Spatializer.java للاطّلاع على قائمة كاملة بواجهات برمجة تطبيقات النظام.

تمت إضافة النوع الجديد من أداة استشعار تتبُّع حركة الرأس "Sensor.TYPE_HEAD_TRACKER" إلى إطار عمل أداة الاستشعار وكشفها بواسطة طبقة تجريد الأجهزة (HAL) في أداة الاستشعار كأداة استشعار ديناميكية بلوتوث أو USB.

دمج الصوت المكاني

إلى جانب تنفيذ محرك تأثير محدِّد المكان، يجب على المصنّعين الأصليين للأجهزة إعداد لدعم الصوت المكاني.

المتطلبات

يجب استيفاء المتطلبات التالية لدمج ميزة الصوت المكاني:

  • يجب أن يدعم كل من طبقة تجريد الأجهزة (HAL) للصوت ووسيط عرض صوت (DSP) الصوت مسار إخراج مخصصًا الصوت.
  • لاستخدام ميزة "الصوت المكاني" مع تتبُّع حركة الرأس، يجب أن تكون سماعات الرأس مزوّدة برأس مدمَجة. أجهزة التتبع.
  • يجب أن يتوافق التنفيذ مع المعيار المقترح لتتبُّع حركة الرأس عبر بروتوكول HID من سماعة رأس بلوتوث إلى هاتف.
  • الإصدار 7.1 من Audio HAL لدعم الصوت المكاني.

ادمج ميزة الصوت المكاني باتّباع الخطوات التالية:

  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. يجب أن يلتزم المورّدون الذين ينفّذون تأثير محدِّد المكاني بما يلي:

    • التكوين الأساسي والتحكم المتماثلان مع التأثيرات الأخرى في التأثير 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 عند توفّره لتسهيل التشغيل التفاعلي والوصول إلى وقت الاستجابة الأهداف.
  • وقت الاستجابة للذهاب والعودة، بدءًا من اكتشاف حركة أداة الاستشعار إلى الصوت الذي يتم استقباله من خلال سماعات الرأس، أن يكون أقل من 150 ملي ثانية للحصول على تجربة مستخدم جيدة.
  • عند استخدام الإصدار الكلاسيكي من البلوتوث (BT) مع الملف الشخصي المتقدم لتوزيع الصوت (A2DP):
    • استخدِم برنامج ترميز وقت الاستجابة السريع، مثل Opus.
    • تنفيذ وظائف التحكم في وقت الاستجابة في HAL للصوت ويتيح ذلك تحسين الطاقة والأداء عند تتبُّع حركة الرأس وإيقاف تتبع الرأس في ظروف غير مثالية.

التحقُّق

للتأكّد من صحة وظائف ميزة الصوت المكاني، استخدِم اختبارات CTS. متوفّرة في SpatializerTest.java.

يمكن أن يتسبب التنفيذ السيئ لخوارزميات تحديد المكان أو تتبُّع حركة الرأس في حدوث عدم تلبية توصية وقت الاستجابة لإرسال الرسائل واستقبالها كما هو موضح في الاقتراحات: