שמע מרחבי ומעקב ראש

אנדרואיד 13 מציגה דרך סטנדרטית עבור יצרני OEM לתמוך באודיו מרחבי ובמעקב ראש ללא צורך בהתאמות אישיות או SDK ספציפיות לספק.

אודיו מרחבי הוא טכנולוגיה המשמשת ליצירת שדה קול המקיף את המאזין. אודיו מרחבי מאפשר למשתמשים לתפוס ערוצים וצלילים בודדים במיקומים שונים מהמיקומים הפיזיים של המתמרים של מכשיר האודיו המשמש להשמעה. לדוגמה, אודיו מרחבי מציע למשתמש את היכולת להאזין לפסקול רב-ערוצי באמצעות אוזניות. באמצעות אודיו מרחבי, משתמשי אוזניות יכולים לתפוס דיאלוג מולם, ואפקטים היקפיים מאחוריהם, למרות שיש להם רק שני מתמרים להשמעה.

מעקב ראש עוזר למשתמש להבין את אופי בימת הקול המרחבית המדמה סביב ראשו. חוויה זו יעילה רק כאשר ההשהיה נמוכה, כאשר ההשהיה נמדדת כזמן שבין הזמן שבו המשתמש מזיז את ראשו לבין הזמן שבו הוא שומע את תנוחת הרמקול הוירטואלי נע בהתאם.

אנדרואיד 13 מבצע אופטימיזציה של אודיו מרחבי ומעקב ראש על ידי מתן עיבוד אודיו מרחבי ברמה הנמוכה ביותר האפשרית בצינור האודיו כדי להשיג את ההשהיה הנמוכה ביותר האפשרית.

ארכיטקטורה

מסגרת האודיו וה-API של אנדרואיד שהשתנו באנדרואיד 13 מאפשרים אימוץ של טכנולוגיית אודיו מרחבית ברחבי המערכת האקולוגית.

האיור הבא ממחיש את השינויים הקשורים לאודיו המרחביים שבוצעו בארכיטקטורת צינור האודיו עם אנדרואיד 13:

spatial-audio

איור 1. ארכיטקטורת צינור אודיו עם מרווח

בדגם החדש, המרווח הוא חלק ממסגרת האודיו והוא מנותק מהמפענח. המרווח קולט תוכן שמע מעורב ומעביר זרם סטריאו ל- Audio HAL. ניתוק המרווח מהמפענח מאפשר ליצרני ציוד מקורי לבחור ספקים שונים עבור המפענח והמרווח ולהשיג את השהייה הלוך ושוב הרצויה עבור מעקב ראש. דגם חדש זה כולל גם ווים למסגרת החיישן למעקב ראש.

האיור הבא ממחיש את ארכיטקטורת המערכת של מסגרת האודיו עבור אפקט המרווח ומעקב הראש:

spatial-sys-arch

איור 2. ארכיטקטורת מערכת עם מרווח ומעקב ראש

כל ממשקי ה-API של האודיו המרחביים מקובצים במחלקת Spatializer הציבורית ברמת האפליקציה. מחלקת SpatializerHelper בשירותי אודיו מתממשקת עם רכיבי ממשק המשתמש של המערכת כדי לנהל פונקציונליות הקשורה ל- spatializer בהתבסס על הפלטפורמה ויכולות ההתקן המחובר. מחלקת Spatializer החדשה בשירות מדיניות האודיו יוצרת ושולטת בגרף האודיו המרחבי הדרוש למיקס ומרחב רב-ערוצי בהתבסס על יכולות המבוטאות על ידי ה-OEM , המכשירים המחוברים ומקרי שימוש פעילים. מחלקה חדשה של מיקסר SpatializerThread מערבבת רצועות רב-ערוציות ומזינה את התמהיל המתקבל למנוע FX שלאחר עיבוד המציג פלט סטריאו ל- Audio HAL. עבור מעקב ראש, מחלקה SpatializerPoseController מקבצת פונקציות הקשורות למעקב ראש, להתממשקות לערימת החיישנים ולמיזוג ולסנן אותות חיישנים המוזנים למנוע האפקט. נתוני חיישן מעקב ראש מועברים על גבי פרוטוקול HID ממנהל ההתקן של Bluetooth.

שינויים בארכיטקטורת צינור האודיו של אנדרואיד 13 משתפרים בדברים הבאים:

  • הורדת זמן ההשהיה בין המרווח לאוזניות.
  • מתן ממשקי API מאוחדים לשרת מפתחי אפליקציות.
  • שליטה במצב מעקב הראש באמצעות ממשקי API של המערכת.
  • גילוי חיישני מעקב ראש ושיוך אותם להתקני שמע פעילים.
  • מיזוג אותות מחיישנים שונים ומחשוב תנוחת הראש שניתן לצרוך על ידי מנוע אפקט המרחב.

ניתן ליישם פונקציות כמו פיצוי הטיה, זיהוי שקט והגבלת קצב באמצעות ספריית השירות למעקב ראש .

ממשקי API של אודיו מרחביים

אנדרואיד 13 מציע מערכת שמע מרחבית וממשקי API למפתחים.

יצרני ציוד מקורי יכולים להתאים את התנהגות האפליקציה בהתבסס על זמינות תכונות ומצב מופעל, אשר נקבע על ידי ממשקי API של המערכת. אפליקציות יכולות גם להגדיר תכונות אודיו להשבית אודיו מרחבי מסיבות אסתטיות או כדי לציין שזרם האודיו כבר מעובד עבור אודיו מרחבי .

לממשקי API הפונים למפתחים, ראה Spatializer .

יצרני OEM יכולים להשתמש בממשקי API של מערכת כדי ליישם את ממשק המשתמש של הגדרות צלילים ו-Bluetooth, המאפשר למשתמש לשלוט במצב השמע המרחבי ובתכונת מעקב הראש עבור המכשיר שלהם. המשתמש יכול להפעיל או לבטל אודיו מרחבי עבור הרמקול והאוזניות החוטיות בממשק המשתמש של הגדרות הצלילים. הגדרת האודיו המרחבית עבור הרמקול זמינה רק אם יישום אפקט המרווח תומך במצב טרנסאורלי.

המשתמש יכול גם להפעיל או לבטל אודיו מרחבי ומעקב ראש בהגדרת מכשיר ה-Bluetooth עבור כל מכשיר. הגדרת מעקב הראש זמינה רק אם אוזניות ה-Bluetooth חושפות חיישן מעקב ראש.

הגדרות ברירת המחדל של שמע מרחבי תמיד פועלות אם התכונה נתמכת. ראה Spatializer.java לרשימה מלאה של ממשקי API של המערכת.

חיישן מעקב ראש חדש מסוג Sensor.TYPE_HEAD_TRACKER נוסף למסגרת החיישן ונחשף על ידי ה-Sensor HAL כחיישן דינמי דרך Bluetooth או USB.

שלב אודיו מרחבי

יחד עם יישום מנוע אפקט המרחב, יצרני OEM חייבים להגדיר את הפלטפורמה שלהם לתמיכה בשמע מרחבי.

דרישות

יש לעמוד בדרישות הבאות על מנת לשלב אודיו מרחבי:

  • ה- Audio HAL ו- Audio DSP חייבים לתמוך בנתיב פלט ייעודי לאודיו מרחבי.
  • עבור אודיו מרחבי עם מעקב ראש, לאוזניות חייבות להיות חיישני מעקב מובנים.
  • ההטמעה חייבת להתאים לתקן המוצע למעקב ראשים על פרוטוקול HID מאוזניות Bluetooth לטלפון.
  • יש צורך ב- 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 כאשר זמין כדי להקל על יכולת פעולה הדדית ולהשיג יעדי חביון.
  • זמן השהייה הלוך ושוב, מזיהוי תנועת חיישן ועד אודיו המתקבל באוזניות, חייב להיות פחות מ-150 אלפיות השנייה עבור UX טוב.
  • עבור Bluetooth (BT) קלאסי עם פרופיל הפצת אודיו מתקדם (A2DP):
    • השתמש ב-codec עם אחזור נמוך, כגון Opus .
    • הטמע פונקציות בקרת אחזור ב- Audio HAL . זה מאפשר אופטימיזציה של כוח וביצועים כאשר מעקב ראש כבוי, והשבתת מעקב ראש בתנאים לא אופטימליים.

מַתַן תוֹקֵף

כדי לאמת את הפונקציונליות של תכונת האודיו המרחבית, השתמש במבחני CTS הזמינים ב- SpatializerTest.java .

יישום לקוי של אלגוריתמי המרחביות או מעקב הראש עלול לגרום לאי עמידה בהמלצת ההשהיה הלוך ושוב כפי שמופיעה בהמלצות .