স্পেশিয়ল অডিও ও হেড ট্র্যাকিং

Android 13-এ OEM-এর জন্য স্পেশিয়াল অডিও ও হেড ট্র্যাকিংয়ের সুবিধা দেওয়ার একটি স্ট্যান্ডার্ড পদ্ধতি চালু করা হয়েছে, যার জন্য ভেন্ডর-নির্দিষ্ট কাস্টমাইজেশন বা SDK-এর প্রয়োজন হয় না।

স্পেশিয়াল অডিও হল এমন একটি প্রযুক্তি যা শ্রোতাকে ঘিরে থাকা সাউন্ড ফিল্ড তৈরি করতে ব্যবহার করা হয়। স্পেশিয়াল অডিও ব্যবহারকারীদের চ্যানেল ও স্বতন্ত্র সাউন্ডকে এমন পজিশনে পারসিভ করতে দেয় যা প্লেব্যাকের জন্য ব্যবহৃত অডিও ডিভাইসের ট্রান্সডিউসারের ফিজিক্যাল পজিশনের থেকে আলাদা। যেমন, স্পেশিয়াল অডিও ব্যবহারকারীকে হেডফোনে মাল্টিচ্যানেল সাউন্ডট্র্যাক শোনার সুবিধা দেয়। স্পেশিয়াল অডিও ব্যবহার করে, হেডফোন ব্যবহারকারীরা প্লেব্যাকের জন্য শুধুমাত্র দুটি ট্রান্সডিউসার থাকা সত্ত্বেও তাদের সামনে ডায়ালগ এবং তাদের পিছনে সারাউন্ড ইফেক্ট শুনতে পান।

হেড ট্র্যাকিং ব্যবহারকারীকে তার মাথার চারপাশে সিমুলেট করা স্পেশিয়ালাইজড সাউন্ড স্টেজের প্রকৃতি বুঝতে সাহায্য করে। এই অভিজ্ঞতা তখনই কার্যকর হয় যখন লেটেন্সি কম থাকে, যেখানে লেটেন্সি বলতে ব্যবহারকারী তার মাথা ঘোরানো এবং সেই অনুযায়ী ভার্চুয়াল স্পিকারের পজিশন পরিবর্তন হওয়ার শব্দ শোনার মধ্যবর্তী সময়কে বোঝায়।

Android 13, স্পেশিয়াল অডিও এবং হেড ট্র্যাকিংয়ের জন্য অপ্টিমাইজ করে। এর জন্য, সবচেয়ে কম লেটেন্সি পেতে অডিও পাইপলাইনে সবচেয়ে কম সম্ভাব্য লেভেলে স্পেশিয়াল অডিও প্রসেসিং অফার করে।

স্থাপত্যশিল্প

Android 13-এ পরিবর্তিত Android অডিও ফ্রেমওয়ার্ক ও API ইকোসিস্টেম জুড়ে স্পেশিয়াল অডিও টেকনোলজি গ্রহণ করার সুবিধা প্রদান করে।

নিচের ছবিতে Android 13-এর অডিও পাইপলাইন আর্কিটেকচারে স্পেশিয়াল অডিও সম্পর্কিত পরিবর্তনগুলি দেখানো হয়েছে:

স্পেশিয়াল-অডিও

ছবি ১. স্পেশিয়ালাইজার সহ অডিও পাইপলাইন আর্কিটেকচার

নতুন মডেলে, স্পেশিয়ালাইজার হল অডিও ফ্রেমওয়ার্কের অংশ এবং এটি ডিকোডার থেকে আলাদা করা হয়েছে। স্পেশিয়ালাইজার মিক্সড অডিও কন্টেন্ট নেয় এবং অডিও HAL-এ স্টিরিও স্ট্রিম রেন্ডার করে। ডিকোডারের থেকে স্পেশিয়ালাইজারকে আলাদা করলে, OEM-রা ডিকোডার ও স্পেশিয়ালাইজারের জন্য আলাদা আলাদা ভেন্ডর বেছে নিতে এবং হেড ট্র্যাকিংয়ের জন্য কাঙ্ক্ষিত রাউন্ড-ট্রিপ ল্যাটেন্সি অর্জন করতে পারে। এই নতুন মডেলে হেড ট্র্যাকিংয়ের জন্য সেন্সর ফ্রেমওয়ার্কের সাথে হুকও অন্তর্ভুক্ত আছে।

স্পেশিয়ালাইজার ও হেড ট্র্যাকিং এফেক্টের জন্য অডিও ফ্রেমওয়ার্কের সিস্টেম আর্কিটেকচার নিম্নলিখিত ছবিতে দেখানো হয়েছে:

spatial-sys-arch

ছবি ২. স্পেশিয়ালাইজার ও হেড ট্র্যাকিং সহ সিস্টেম আর্কিটেকচার

অ্যাপ লেভেলে পাবলিক Spatializer ক্লাসে সব স্পেশিয়াল অডিও API গ্রুপ করা আছে। SpatializerHelper অডিও পরিষেবা ইন্টারফেসে ক্লাস, প্ল্যাটফর্ম ও কানেক্ট করা ডিভাইসের ক্ষমতার উপর ভিত্তি করে স্পেশিয়ালাইজার-সম্পর্কিত ফাংশনালিটি ম্যানেজ করতে সিস্টেম UI কম্পোনেন্টের সাথে ইন্টার‍্যাক্ট করে। অডিও পলিসি পরিষেবায় নতুন Spatializer ক্লাস, মাল্টিচ্যানেল মিক্সিং ও স্প্যাশিয়ালাইজেশনের জন্য প্রয়োজনীয় স্পেশিয়াল অডিও গ্রাফ তৈরি ও কন্ট্রোল করে। এটি OEM-এর দেওয়া ক্ষমতা, কানেক্ট করা ডিভাইস ও অ্যাক্টিভ ব্যবহারের কেসের উপর ভিত্তি করে করা হয়। নতুন মিক্সার ক্লাস SpatializerThread মাল্টিচ্যানেল ট্র্যাক মিক্স করে এবং এর ফলে প্রাপ্ত মিক্সকে পোস্ট-প্রসেসিং FX ইঞ্জিনে ফিড করে যা অডিও HAL-এ একটি স্টিরিও আউটপুট রেন্ডার করে। হেড ট্র্যাকিংয়ের জন্য, SpatializerPoseController ক্লাস গ্রুপ হেড ট্র্যাকিং সম্পর্কিত ফাংশন, সেন্সর স্ট্যাকের ইন্টারফেস এবং ইফেক্ট ইঞ্জিনে ফিড করা সেন্সর সিগন্যাল মার্জ ও ফিল্টার করার কাজ করে। হেড ট্র্যাকিং সেন্সর ডেটা ব্লুটুথ ড্রাইভার থেকে HID প্রোটোকল-এর মাধ্যমে ক্যারি করা হয়।

Android 13 অডিও পাইপলাইন আর্কিটেকচারে করা পরিবর্তন নিম্নলিখিত বিষয়গুলি উন্নত করে:

  • স্পেশিয়ালাইজার ও হেডফোনের মধ্যে লেটেন্সি কমানো।
  • অ্যাপ ডেভেলপারদের সাহায্য করার জন্য ইউনিফায়েড API প্রদান করা।
  • সিস্টেম API-এর মাধ্যমে হেড ট্র্যাকিং স্টেট কন্ট্রোল করা।
  • হেড ট্র্যাকিং সেন্সর খুঁজে বের করা এবং সেগুলিকে অ্যাক্টিভ অডিও ডিভাইসের সাথে যুক্ত করা।
  • বিভিন্ন সেন্সর থেকে সিগন্যাল মার্জ করা এবং হেড পোজ কম্পিউট করা যা স্পেশিয়ালাইজার এফেক্ট ইঞ্জিন ব্যবহার করতে পারে।

হেড ট্র্যাকিং ইউটিলিটি লাইব্রেরি ব্যবহার করে পক্ষপাতিত্বের ক্ষতিপূরণ, স্থিরতা শনাক্তকরণ এবং রেট সীমিতকরণের মতো ফাংশন ইমপ্লিমেন্ট করা যেতে পারে।

স্পেশিয়ল অডিও API

Android 13 স্পেশিয়াল অডিও সিস্টেম ও ডেভেলপার API অফার করে।

OEM, ফিচার উপলভ্যতা ও চালু থাকার অবস্থা অনুযায়ী অ্যাপের আচরণ মানিয়ে নিতে পারে, যা সিস্টেম API দ্বারা সেট করা হয়। এছাড়াও, অ্যাপগুলি স্পেশিয়াল অডিও বন্ধ করতে এস্থেটিক কারণে অথবা অডিও স্ট্রিম স্পেশিয়াল অডিওর জন্য আগে থেকেই প্রসেস করা হয়েছে তা বোঝাতে অডিও অ্যাট্রিবিউট কনফিগার করতে পারে।

ডেভেলপার-ফেসিং API-এর জন্য, Spatializer দেখুন।

OEM, সাউন্ড ও ব্লুটুথ সেটিংস UI প্রয়োগ করতে সিস্টেম API ব্যবহার করতে পারে, যা ব্যবহারকারীকে তার ডিভাইসের জন্য স্পেশিয়াল অডিও ও হেড ট্র্যাকিং ফিচারের স্ট্যাটাস নিয়ন্ত্রণ করতে দেয়। ব্যবহারকারী সাউন্ড সেটিংস UI-তে স্পিকার ও ওয়্যার্ড হেডফোনের জন্য স্পেশিয়াল অডিও চালু বা বন্ধ করতে পারবেন। স্পিকারের জন্য স্পেশিয়াল অডিও সেটিং শুধুমাত্র তখনই উপলভ্য হয় যদি স্পেশিয়ালাইজার এফেক্ট ইমপ্লিমেন্টেশন ট্রান্সঅরাল মোড সাপোর্ট করে।

এছাড়াও, ব্যবহারকারী প্রতিটি ডিভাইসের জন্য ব্লুটুথ ডিভাইস সেটিং থেকে স্পেশিয়াল অডিও ও হেড ট্র্যাকিং চালু বা বন্ধ করতে পারবেন। ব্লুটুথ হেডসেট হেড ট্র্যাকিং সেন্সর দেখালে তবেই হেড ট্র্যাকিং সেটিং উপলভ্য হয়।

স্পেশিয়াল অডিও ফিচারের ডিফল্ট সেটিংস সবসময় চালু থাকে, যদি ফিচারটি কাজ করে। সিস্টেম API-এর সম্পূর্ণ তালিকা দেখতে Spatializer.java দেখুন।

নতুন হেড ট্র্যাকিং সেন্সর টাইপ Sensor.TYPE_HEAD_TRACKER সেন্সর ফ্রেমওয়ার্কে যোগ করা হয়েছে এবং সেন্সর HAL-এর মাধ্যমে ব্লুটুথ বা USB-তে ডায়নামিক সেন্সর হিসেবে দেখানো হয়েছে।

স্পেশিয়ল অডিও ইন্টিগ্রেট করা

স্পেশিয়ালাইজার এফেক্ট ইঞ্জিন প্রয়োগ করার পাশাপাশি, OEM-কে স্পেশিয়াল অডিওর জন্য তাদের প্ল্যাটফর্ম কনফিগার করতে হবে।

প্রয়োজনীয়তা

Spatial Audio ইন্টিগ্রেট করতে হলে নিম্নলিখিত প্রয়োজনীয়তা পূরণ করতে হবে:

  • অডিও HAL এবং অডিও DSP-কে অবশ্যই স্পেশিয়াল অডিওর জন্য একটি ডেডিকেটেড আউটপুট পাথ সাপোর্ট করতে হবে।
  • হেড ট্র্যাকিং সহ স্পেশিয়াল অডিওর জন্য, হেডফোনে অবশ্যই বিল্ট-ইন হেড ট্র্যাকার সেন্সর থাকতে হবে।
  • ইমপ্লিমেন্টেশনকে অবশ্যই হেড ট্র্যাকিংয়ের জন্য প্রস্তাবিত স্ট্যান্ডার্ড মেনে চলতে হবে HID প্রোটোকলের মাধ্যমে ব্লুটুথ হেডসেট থেকে ফোনে।
  • Spatial Audio কাজ করার জন্য 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 দেখুন।

সাজেশন

আমরা সাজেস্ট করি যে প্রয়োগ করার সময় OEM নিম্নলিখিত নির্দেশিকা ব্যবহার করবে:

  • ইন্টারঅপারেবিলিটি সহজ করতে এবং লেটেন্সি সংক্রান্ত লক্ষ্য পূরণ করতে, উপলভ্য হলে LE অডিও ব্যবহার করুন।
  • সেন্সর মুভমেন্ট শনাক্তকরণ থেকে হেডফোনে অডিও পাওয়ার মধ্যে রাউন্ড-ট্রিপ ল্যাটেন্সি ভাল UX-এর জন্য অবশ্যই ১৫০ মিলি সেকেন্ডের কম হতে হবে।
  • Advanced Audio Distribution Profile (A2DP) সহ Bluetooth (BT) Classic-এর জন্য:
    • Opus-এর মতো লো-লেটেন্সি কোডেক ব্যবহার করুন।
    • Audio HAL-এ লেটেন্সি কন্ট্রোল ফাংশন প্রয়োগ করুন। হেড ট্র্যাকিং বন্ধ থাকলে এটি পাওয়ার ও পারফর্ম্যান্স অপ্টিমাইজ করে এবং অনুকূল পরিস্থিতি না থাকলে হেড ট্র্যাকিং বন্ধ করে দেয়।

যাচাইকরণ

স্পেশিয়াল অডিও ফিচারের কার্যকারিতা যাচাই করতে, SpatializerTest.java-এ উপলভ্য CTS টেস্ট ব্যবহার করুন।

স্পেশিয়ালাইজেশন বা হেড ট্র্যাকিং অ্যালগরিদম সঠিকভাবে প্রয়োগ করা না হলে, সাজেশন-এ তালিকাভুক্ত রাউন্ড-ট্রিপ লেটেন্সি সংক্রান্ত সাজেশন পূরণ করা যাবে না।