स्थानिक ऑडियो और हेड ट्रैकिंग

एंड्रॉइड 13 ओईएम के लिए विक्रेता-विशिष्ट अनुकूलन या एसडीके की आवश्यकता के बिना स्थानिक ऑडियो और हेड ट्रैकिंग का समर्थन करने के लिए एक मानक तरीका पेश करता है।

स्थानिक ऑडियो एक ऐसी तकनीक है जिसका उपयोग श्रोता के चारों ओर एक ध्वनि क्षेत्र बनाने के लिए किया जाता है। स्थानिक ऑडियो उपयोगकर्ताओं को उन चैनलों और व्यक्तिगत ध्वनियों को उन स्थितियों में देखने में सक्षम बनाता है जो प्लेबैक के लिए उपयोग किए जाने वाले ऑडियो डिवाइस के ट्रांसड्यूसर की भौतिक स्थिति से भिन्न होते हैं। उदाहरण के लिए, स्थानिक ऑडियो उपयोगकर्ता को हेडफ़ोन पर मल्टीचैनल साउंडट्रैक सुनने की क्षमता प्रदान करता है। स्थानिक ऑडियो का उपयोग करते हुए, हेडफोन उपयोगकर्ता प्लेबैक के लिए केवल दो ट्रांसड्यूसर होने के बावजूद, उनके सामने संवाद और उनके पीछे आसपास के प्रभावों को समझ सकते हैं।

हेड ट्रैकिंग उपयोगकर्ता को उनके सिर के चारों ओर अनुकरण किए जा रहे स्थानिक ध्वनि चरण की प्रकृति को समझने में मदद करती है। यह अनुभव केवल तभी प्रभावी होता है जब विलंबता कम होती है, जहां विलंबता को उस समय के रूप में मापा जाता है जब उपयोगकर्ता अपना सिर हिलाता है और वह समय जब वे वर्चुअल स्पीकर की स्थिति के अनुसार चलते हुए सुनते हैं।

एंड्रॉइड 13 न्यूनतम संभव विलंबता प्राप्त करने के लिए ऑडियो पाइपलाइन में न्यूनतम संभव स्तर पर स्थानिक ऑडियो प्रसंस्करण की पेशकश करके स्थानिक ऑडियो और हेड ट्रैकिंग के लिए अनुकूलन करता है।

वास्तुकला

एंड्रॉइड 13 में संशोधित एंड्रॉइड ऑडियो फ्रेमवर्क और एपीआई पूरे पारिस्थितिकी तंत्र में स्थानिक ऑडियो प्रौद्योगिकी को अपनाने की सुविधा प्रदान करता है।

निम्नलिखित चित्र एंड्रॉइड 13 के साथ ऑडियो पाइपलाइन आर्किटेक्चर में किए गए स्थानिक ऑडियो संबंधी परिवर्तनों को दर्शाता है:

spatial-audio

चित्र 1. स्पेटियलाइज़र के साथ ऑडियो पाइपलाइन वास्तुकला

नए मॉडल में, स्पैटियलाइज़र ऑडियो फ्रेमवर्क का हिस्सा है और इसे डिकोडर से अलग किया गया है। स्पैटियलाइज़र मिश्रित ऑडियो सामग्री लेता है और ऑडियो एचएएल को एक स्टीरियो स्ट्रीम प्रदान करता है। डिकोडर से स्पैटियलाइज़र को अलग करने से ओईएम को डिकोडर और स्पैटियलाइज़र के लिए अलग-अलग विक्रेताओं को चुनने और हेड ट्रैकिंग के लिए वांछित राउंड-ट्रिप विलंबता प्राप्त करने में सक्षम बनाता है। इस नए मॉडल में हेड ट्रैकिंग के लिए सेंसर फ्रेमवर्क में हुक भी शामिल हैं।

निम्नलिखित चित्र स्थानिक और हेड ट्रैकिंग प्रभाव के लिए ऑडियो फ्रेमवर्क के सिस्टम आर्किटेक्चर को दर्शाता है:

spatial-sys-arch

चित्र 2. स्थानिकीकरण और हेड ट्रैकिंग के साथ सिस्टम आर्किटेक्चर

सभी स्थानिक ऑडियो एपीआई को ऐप स्तर पर सार्वजनिक Spatializer वर्ग में समूहीकृत किया गया है। ऑडियो सेवा में SpatializerHelper वर्ग प्लेटफ़ॉर्म और कनेक्टेड डिवाइस क्षमताओं के आधार पर स्थानिक-संबंधित कार्यक्षमता को प्रबंधित करने के लिए सिस्टम UI घटकों के साथ इंटरफ़ेस करता है। ऑडियो नीति सेवा में नया Spatializer वर्ग ओईएम, कनेक्टेड डिवाइस और सक्रिय उपयोग के मामलों द्वारा व्यक्त क्षमताओं के आधार पर मल्टीचैनल मिश्रण और स्थानिकीकरण के लिए आवश्यक स्थानिक ऑडियो ग्राफ़ बनाता और नियंत्रित करता है। एक नया मिक्सर क्लास SpatializerThread मल्टीचैनल ट्रैक्स को मिश्रित करता है और परिणामी मिश्रण को पोस्ट-प्रोसेसिंग एफएक्स इंजन में फीड करता है जो ऑडियो एचएएल को एक स्टीरियो आउटपुट प्रदान करता है। हेड ट्रैकिंग के लिए, SpatializerPoseController वर्ग समूह हेड ट्रैकिंग से संबंधित कार्य करता है, सेंसर स्टैक से इंटरफ़ेस करता है और सेंसर सिग्नल को मर्ज और फ़िल्टर करता है जो प्रभाव इंजन को खिलाए जाते हैं। हेड ट्रैकिंग सेंसर डेटा को ब्लूटूथ ड्राइवर से HID प्रोटोकॉल पर ले जाया जाता है।

Android 13 ऑडियो पाइपलाइन आर्किटेक्चर में परिवर्तन से निम्नलिखित में सुधार होता है:

  • स्पैटियलाइज़र और हेडफ़ोन के बीच विलंबता कम करना।
  • ऐप डेवलपर्स को सेवा प्रदान करने के लिए एकीकृत एपीआई प्रदान करना।
  • सिस्टम एपीआई के माध्यम से हेड ट्रैकिंग स्थिति को नियंत्रित करना।
  • हेड ट्रैकिंग सेंसर की खोज करना और उन्हें सक्रिय ऑडियो उपकरणों के साथ जोड़ना।
  • विभिन्न सेंसरों से संकेतों को मर्ज करना और हेड पोज़ की गणना करना जिसे स्पैटियलाइज़र प्रभाव इंजन द्वारा उपभोग किया जा सकता है।

हेड ट्रैकिंग यूटिलिटी लाइब्रेरी का उपयोग करके पूर्वाग्रह क्षतिपूर्ति, शांति का पता लगाना और दर सीमा जैसे कार्यों को कार्यान्वित किया जा सकता है।

स्थानिक ऑडियो एपीआई

एंड्रॉइड 13 स्थानिक ऑडियो सिस्टम और डेवलपर एपीआई प्रदान करता है।

ओईएम सुविधा उपलब्धता और सक्षम स्थिति के आधार पर ऐप व्यवहार को अनुकूलित कर सकते हैं, जो सिस्टम एपीआई द्वारा निर्धारित किया जाता है। ऐप्स सौंदर्य संबंधी कारणों से स्थानिक ऑडियो को अक्षम करने के लिए या यह इंगित करने के लिए ऑडियो विशेषताओं को भी कॉन्फ़िगर कर सकते हैं कि स्थानिक ऑडियो के लिए ऑडियो स्ट्रीम पहले से ही संसाधित है।

डेवलपर-सामना वाले एपीआई के लिए, Spatializer देखें।

ओईएम ध्वनि और ब्लूटूथ सेटिंग्स यूआई को लागू करने के लिए सिस्टम एपीआई का उपयोग कर सकते हैं, जो उपयोगकर्ता को अपने डिवाइस के लिए स्थानिक ऑडियो और हेड ट्रैकिंग सुविधा की स्थिति को नियंत्रित करने में सक्षम बनाता है। उपयोगकर्ता ध्वनि सेटिंग्स यूआई में स्पीकर और वायर्ड हेडफ़ोन के लिए स्थानिक ऑडियो को सक्षम या अक्षम कर सकता है। स्पीकर के लिए स्थानिक ऑडियो सेटिंग केवल तभी उपलब्ध होती है जब स्थानिक प्रभाव कार्यान्वयन ट्रांसऑरल मोड का समर्थन करता है।

उपयोगकर्ता प्रत्येक डिवाइस के लिए ब्लूटूथ डिवाइस सेटिंग में स्थानिक ऑडियो और हेड ट्रैकिंग को सक्षम या अक्षम भी कर सकता है। हेड ट्रैकिंग सेटिंग केवल तभी उपलब्ध होती है जब ब्लूटूथ हेडसेट हेड ट्रैकिंग सेंसर को उजागर करता है।

यदि सुविधा समर्थित है तो स्थानिक ऑडियो के लिए डिफ़ॉल्ट सेटिंग्स हमेशा चालू रहती हैं। सिस्टम एपीआई की पूरी सूची के लिए Spatializer.java देखें।

नए हेड ट्रैकिंग सेंसर प्रकार Sensor.TYPE_HEAD_TRACKER को सेंसर फ्रेमवर्क में जोड़ा गया है और सेंसर HAL द्वारा ब्लूटूथ या यूएसबी पर एक गतिशील सेंसर के रूप में प्रदर्शित किया गया है।

स्थानिक ऑडियो एकीकृत करें

स्थानिक प्रभाव इंजन को लागू करने के साथ-साथ, ओईएम को स्थानिक ऑडियो समर्थन के लिए अपने प्लेटफ़ॉर्म को कॉन्फ़िगर करना होगा।

आवश्यकताएं

स्थानिक ऑडियो को एकीकृत करने के लिए निम्नलिखित आवश्यकताओं को पूरा किया जाना चाहिए:

  • ऑडियो एचएएल और ऑडियो डीएसपी को स्थानिक ऑडियो के लिए एक समर्पित आउटपुट पथ का समर्थन करना चाहिए।
  • हेड ट्रैकिंग के साथ स्थानिक ऑडियो के लिए, हेडफ़ोन में अंतर्निहित हेड ट्रैकर सेंसर होना चाहिए।
  • कार्यान्वयन को ब्लूटूथ हेडसेट से फ़ोन तक HID प्रोटोकॉल पर हेड ट्रैकिंग के लिए प्रस्तावित मानक के अनुरूप होना चाहिए।
  • स्थानिक ऑडियो समर्थन के लिए ऑडियो 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. स्थानिक प्रभाव को लागू करने वाले विक्रेताओं को निम्नलिखित के अनुरूप होना चाहिए:

    • इफ़ेक्ट एचएएल में अन्य प्रभावों के समान बुनियादी विन्यास और नियंत्रण।
    • समर्थित क्षमताओं और कॉन्फ़िगरेशन की खोज के लिए फ़्रेमवर्क के लिए आवश्यक विशिष्ट पैरामीटर, जैसे:

      • 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 देखें।

सिफारिशों

हम अनुशंसा करते हैं कि OEM कार्यान्वयन के दौरान निम्नलिखित दिशानिर्देशों का उपयोग करें:

  • अंतरसंचालनीयता को आसान बनाने और विलंबता लक्ष्यों को प्राप्त करने के लिए उपलब्ध होने पर LE ऑडियो का उपयोग करें।
  • सेंसर मूवमेंट डिटेक्शन से लेकर हेडफोन द्वारा प्राप्त ऑडियो तक राउंड-ट्रिप विलंबता, अच्छे यूएक्स के लिए 150 एमएस से कम होनी चाहिए।
  • उन्नत ऑडियो वितरण प्रोफ़ाइल (A2DP) के साथ ब्लूटूथ (BT) क्लासिक के लिए:
    • ओपस जैसे कम-विलंबता कोडेक का उपयोग करें।
    • ऑडियो एचएएल पर विलंबता नियंत्रण फ़ंक्शन लागू करें। यह हेड ट्रैकिंग बंद होने पर पावर और प्रदर्शन अनुकूलन को सक्षम बनाता है, और गैर-इष्टतम स्थितियों के दौरान हेड ट्रैकिंग को अक्षम करता है।

मान्यकरण

स्थानिक ऑडियो सुविधा की कार्यक्षमता को सत्यापित करने के लिए, SpatializerTest.java में उपलब्ध सीटीएस परीक्षणों का उपयोग करें।

स्थानिकीकरण या हेड ट्रैकिंग एल्गोरिदम के खराब कार्यान्वयन से अनुशंसाओं में सूचीबद्ध राउंड-ट्रिप विलंबता अनुशंसा को पूरा करने में विफलता हो सकती है।