स्पेशल ऑडियो और हेड ट्रैकिंग

Android 13 में, OEM के लिए स्पेशल ऑडियो और हेड ट्रैकिंग की सुविधा उपलब्ध है. इसके लिए, वेंडर को पसंद के मुताबिक बनाने या SDK टूल की ज़रूरत नहीं है.

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

हेड ट्रैकिंग की मदद से, उपयोगकर्ता को यह समझने में मदद मिलती है कि उसके सिर के चारों ओर, स्पेसलाइज़्ड साउंड के स्टेज को कैसे सिम्युलेट किया जा रहा है. यह सुविधा सिर्फ़ तब काम करती है, जब इंतज़ार का समय कम हो. इंतज़ार का समय, उपयोगकर्ता के सिर घुमाने के समय और वर्चुअल स्पीकर की पोज़िशन के हिसाब से सुनाई देने के बीच के समय के तौर पर मापा जाता है.

Android 13, स्पेशल ऑडियो और हेड ट्रैकिंग को ऑप्टिमाइज़ करता है. इसके लिए, ऑडियो पाइपलाइन में सबसे कम लेवल पर स्पेशल ऑडियो प्रोसेसिंग की सुविधा मिलती है, ताकि इंतज़ार का समय कम से कम रखा जा सके.

भवन निर्माण

Android 13 में बदले गए Android ऑडियो फ़्रेमवर्क और एपीआई की मदद से, पूरे नेटवर्क में स्पेशल ऑडियो टेक्नोलॉजी का इस्तेमाल किया जा सकता है.

नीचे दिए गए डायग्राम में, Android 13 वाले ऑडियो पाइपलाइन के आर्किटेक्चर में स्पेशल ऑडियो से जुड़े बदलाव दिखाए गए हैं:

spatial-audio

पहली इमेज. स्पेशलाइज़र के साथ ऑडियो पाइपलाइन आर्किटेक्चर

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

नीचे दिए गए डायग्राम में, स्पेशलाइज़र और हेड ट्रैकिंग इफ़ेक्ट के लिए ऑडियो फ़्रेमवर्क का सिस्टम आर्किटेक्चर दिखाया गया है:

स्पेशल-सिस-आर्क

दूसरी इमेज. स्पेसलाइज़र और हेड ट्रैकिंग के साथ सिस्टम का आर्किटेक्चर

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

Android 13 की ऑडियो पाइपलाइन के आर्किटेक्चर में होने वाले बदलावों से, इन चीज़ों में सुधार होगा:

  • स्पेशलाइज़र और हेडफ़ोन के बीच इंतज़ार का समय कम किया जा रहा है.
  • ऐप्लिकेशन डेवलपर को सेवा देने के लिए, यूनिफ़ाइड एपीआई उपलब्ध कराना.
  • सिस्टम एपीआई की मदद से, सिर की गति को ट्रैक करने की सुविधा की स्थिति को कंट्रोल करना.
  • हेड ट्रैकिंग सेंसर ढूंढना और उन्हें चालू ऑडियो डिवाइसों से जोड़ना.
  • अलग-अलग सेंसर से मिले सिग्नल को मर्ज करना और सिर के उस पोज़ को कैलकुलेट करना जिसका इस्तेमाल स्पेसलाइज़र इफ़ेक्ट इंजन कर सकता है.

हेड ट्रैकिंग यूटिलिटी लाइब्रेरी का इस्तेमाल करके, गड़बड़ी को ठीक करने, स्थिरता का पता लगाने, और फ़्रेम रेट को सीमित करने जैसी सुविधाओं को लागू किया जा सकता है.

स्पेशल ऑडियो एपीआई

Android 13 में स्पेशल ऑडियो सिस्टम और डेवलपर के लिए एपीआई उपलब्ध हैं.

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

डेवलपर के लिए उपलब्ध एपीआई के बारे में जानने के लिए, Spatializer देखें.

OEM, आवाज़ और ब्लूटूथ सेटिंग का यूज़र इंटरफ़ेस (यूआई) लागू करने के लिए, सिस्टम एपीआई का इस्तेमाल कर सकते हैं. इससे उपयोगकर्ता, अपने डिवाइस पर स्पेशल ऑडियो की स्थिति और हेड ट्रैकिंग की सुविधा को कंट्रोल कर सकते हैं. उपयोगकर्ता, साउंड की सेटिंग के यूज़र इंटरफ़ेस (यूआई) में जाकर, स्पीकर और वायर वाले हेडफ़ोन के लिए स्पेशल ऑडियो की सुविधा को चालू या बंद कर सकता है. स्पीकर के लिए स्पेशल ऑडियो की सेटिंग सिर्फ़ तब उपलब्ध होती है, जब स्पेशलाइज़र इफ़ेक्ट को लागू करने की सुविधा ट्रांससॉरल मोड के साथ काम करती हो.

उपयोगकर्ता हर डिवाइस के लिए ब्लूटूथ डिवाइस सेटिंग में स्पेशल ऑडियो और हेड ट्रैकिंग को चालू या बंद कर सकते हैं. हेड ट्रैकिंग की सेटिंग सिर्फ़ तब उपलब्ध होती है, जब ब्लूटूथ हेडसेट में हेड ट्रैकिंग सेंसर हो.

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

सेंसर फ़्रेमवर्क में, सिर की गति को ट्रैक करने वाला नया सेंसर टाइप Sensor.TYPE_HEAD_TRACKER जोड़ा गया है. साथ ही, सेंसर एचएएल ने ब्लूटूथ या यूएसबी के ज़रिए, डाइनैमिक सेंसर के तौर पर इसे दिखाया है.

स्पेशल ऑडियो को इंटिग्रेट करना

स्पेशलाइज़र इफ़ेक्ट इंजन को लागू करने के साथ-साथ, OEM को स्पेशल ऑडियो की सुविधा के लिए अपना प्लैटफ़ॉर्म कॉन्फ़िगर करना होगा.

ज़रूरी शर्तें

स्पेशल ऑडियो की सुविधा को इंटिग्रेट करने के लिए, यहां दी गई शर्तें पूरी करना ज़रूरी है:

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

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

      • 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) क्लासिक के लिए:
    • इंतज़ार का समय कम करने वाले कोडेक, जैसे कि ओपस का इस्तेमाल करें.
    • Audio HAL में, इंतज़ार के समय को कंट्रोल करने वाले फ़ंक्शन लागू करें. इससे हेड ट्रैकिंग बंद होने पर, बिजली और परफ़ॉर्मेंस को ऑप्टिमाइज़ किया जा सकता है. साथ ही, सही स्थिति न होने पर हेड ट्रैकिंग को बंद किया जा सकता है.

पुष्टि करें

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

स्पेशलाइज़ेशन या हेड ट्रैकिंग एल्गोरिदम सही तरीके से लागू न करने पर, हो सकता है कि दोतरफ़ा यात्रा के इंतज़ार का समय तय करने में समस्या हो और सुझाव दिए गए हों.