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

ב-Android 13 יש דרך סטנדרטית ליצרני ציוד מקורי (OEM) תמיכה באודיו מרחבי ובמעקב אחר ראש ללא צורך במודלים ספציפיים של ספק התאמות אישיות או ערכות SDK.

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

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

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

ארכיטקטורה

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

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

אודיו-מרחבי

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

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

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

קשת-מרחבית

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

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

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

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

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

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

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

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

לממשקי API שמיועדים למפתחים: Spatializer.

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

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

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

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

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

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

הדרישות

כדי לשלב אודיו מרחבי, המפרסמים צריכים לעמוד בדרישות הבאות:

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

    • התצורה הבסיסית והשליטה זהות לאפקטים אחרים באפקט HAL.
    • פרמטרים ספציפיים הדרושים ל-framework כדי לאתר תכונות נתמכות יכולות והגדרות אישיות, כמו:

      • 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.

המלצות

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

  • שימוש באודיו LE כשיש אפשרות כזו כדי להקל על יכולת הפעולה ההדדית ולשפר את זמן האחזור יעדים.
  • זמן אחזור הלוך ושוב, מזיהוי תנועת החיישן ועד לאודיו שהתקבל אוזניות צריכות להיות באורך של פחות מ-150 אלפיות השנייה כדי לספק חוויית משתמש טובה.
  • ל-Bluetooth (BT) Classic עם Advanced Audio Distribution Profile (A2DP):
    • משתמשים בקודק עם זמן אחזור קצר, כמו Opus.
    • הטמעת פונקציות של בקרת זמן האחזור ב-Audio HAL. הפעולה הזו מאפשרת אופטימיזציה של ביצועים וביצועים כשהמעקב אחר הראש מושבת והשבתת המעקב אחר תנועות הראש במהלך תנאים לא אופטימליים.

אימות

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

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