স্থানিক অডিও এবং মাথা ট্র্যাকিং

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

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

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

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

স্থাপত্য

অ্যান্ড্রয়েড ১৩-এর পরিবর্তিত অ্যান্ড্রয়েড অডিও ফ্রেমওয়ার্ক এবং এপিআই সমগ্র ইকোসিস্টেম জুড়ে স্পেশিয়াল অডিও প্রযুক্তি গ্রহণকে সহজতর করে।

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

spatial-audio

চিত্র ১. স্পেশিয়ালাইজার সহ অডিও পাইপলাইন স্থাপত্য

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

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

spatial-sys-arch

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

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

অ্যান্ড্রয়েড ১৩-এর অডিও পাইপলাইন আর্কিটেকচারের পরিবর্তনগুলো নিম্নলিখিত বিষয়গুলোর উন্নতি সাধন করে:

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

বায়াস কম্পেনসেশন, স্টিলনেস ডিটেকশন এবং রেট লিমিটেশনের মতো ফাংশনগুলো হেড ট্র্যাকিং ইউটিলিটি লাইব্রেরি ব্যবহার করে বাস্তবায়ন করা যায়।

স্থানিক অডিও এপিআই

অ্যান্ড্রয়েড ১৩-এ স্পেশিয়াল অডিও সিস্টেম এবং ডেভেলপার এপিআই রয়েছে।

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

ডেভেলপার-মুখী এপিআইগুলোর জন্য, Spatializer দেখুন।

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

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

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

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

স্থানিক অডিও একীভূত করুন

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

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

স্পেশিয়াল অডিও সংহত করার জন্য নিম্নলিখিত শর্তগুলি অবশ্যই পূরণ করতে হবে:

  • অডিও 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 দেখুন।

সুপারিশসমূহ

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

  • আন্তঃকার্যক্ষমতা সহজ করতে এবং লেটেন্সি লক্ষ্যমাত্রা অর্জনের জন্য, উপলব্ধ থাকলে LE অডিও ব্যবহার করুন।
  • ভালো ইউএক্স (UX)-এর জন্য, সেন্সরের নড়াচড়া শনাক্তকরণ থেকে হেডফোনে অডিও পৌঁছানো পর্যন্ত রাউন্ড-ট্রিপ ল্যাটেন্সি অবশ্যই ১৫০ মিলিসেকেন্ডের কম হতে হবে।
  • অ্যাডভান্সড অডিও ডিস্ট্রিবিউশন প্রোফাইল (A2DP) সহ ব্লুটুথ (BT) ক্লাসিকের জন্য:
    • ওপাস- এর মতো একটি লো-ল্যাটেন্সি কোডেক ব্যবহার করুন।
    • অডিও HAL- এ ল্যাটেন্সি কন্ট্রোল ফাংশনগুলো প্রয়োগ করুন। এটি হেড ট্র্যাকিং বন্ধ থাকাকালীন পাওয়ার ও পারফরম্যান্স অপটিমাইজেশন এবং প্রতিকূল পরিস্থিতিতে হেড ট্র্যাকিং নিষ্ক্রিয় করতে সক্ষম করে।

বৈধতা

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

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