הטמעת אודיו מרחבי באיכות גבוהה ומעקב אחר תנועת הראש

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

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

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

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

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

הטמעת API

יצרני ציוד מקורי חייבים להטמיע את המחלקה Spatializer שהושקה ב-Android 12. ההטמעה חייבת לעבור את בדיקות ה-CTS שנוספו לכיתה Spatializer.

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

ממשק משתמש

אחרי שמטמיעים את הכיתה Spatializer, צריך לוודא שההתנהגות של ממשק המשתמש היא:

  • כשמתבצע התאמה של אוזניות עם תמיכה באודיו מרחבי, בהגדרות של מכשיר ה-Bluetooth של אוזניות האלה מופיעה המתג אודיו מרחבי:

    spatial-audio-ui

    איור 1. הגדרת אודיו מרחבי.

  • ההגדרות זמינות כשהאוזניות מנותקות.

  • מצב ברירת המחדל של האודיו המרחבי אחרי ההתאמה הראשונית של האוזניות מוגדר למופעל.

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

התנהגות פונקציונלית

פורמטים של אודיו

כשהאודיו המרחבי מופעל ומכשיר העיבוד הוא אוזניות חוטיות או אוזניות Bluetooth, אפקט ה-spatializer חייב לייצר את הפורמטים הבאים של אודיו:

  • AAC, 5.1 ערוצים
  • PCM גולמי, 5.1 ערוצים

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

  • Dolby Digital Plus
  • ערוצים 5.1.2, ‏ 7.1, ‏ 7.1.2, ‏ 7.1.4

הפעלת תוכן בסטריאו

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

תרחישי שימוש, מעברים ותזמון בו-זמנית

תרחישים מיוחדים לשימוש:

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

רינדור דרך רמקולים

אין צורך בתמיכה בהמרת אודיו למרחבי ברמקולים, או במצב transaural.

הנחיות להטמעת מעקב אחר תנועות הראש

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

ממשק משתמש

אחרי ההטמעה וההתאמה של האוזניות שתומכות באודיו מרחבי, צריך לוודא שהממשק המשתמש מתנהג כך:

  • בהגדרות של מכשיר ה-Bluetooth, כשההגדרה אודיו מרחבי מופעלת באוזניות, ההגדרה מעקב ראש מופיעה בקטע אודיו מרחבי:

    ht-ui

    איור 2. הגדרת אודיו מרחבי ומעקב אחר תנועות הראש.

  • ההגדרה של מעקב אחר תנועת הראש לא גלויה כשאודיו מרחבי מושבת.

  • מצב ברירת המחדל של מעקב הראש אחרי ההתאמה הראשונית של האוזניות מוגדר ל-מופעל.

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

התנהגות פונקציונלית

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

  • מידע על תנוחת הראש, בקואורדינטות x,‏ y ו-z, שנשלח מהאוזניות למכשיר Android, חייב לשקף את תנועות הראש של המשתמש במהירות ובדיוק.
  • דיווח על תנוחת הראש דרך הקישור ל-Bluetooth חייב לפעול לפי הפרוטוקול שמוגדר ב-HID.
  • האוזניות חייבות לשלוח את המידע על מעקב אחר תנועת הראש לטלפון Android רק כשהמשתמש מפעיל את האפשרות מעקב אחר תנועת הראש בממשק המשתמש של הגדרות מכשיר ה-Bluetooth.

ביצועים

איטית

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

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

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

אופטימיזציה של צריכת החשמל

כדי לשפר את חיסכון האנרגיה, מומלץ להשתמש במנגנונים של החלפת קודק Bluetooth ובחירת מצב זמן אחזור שמספקים ממשקי audio HAL ו-Bluetooth audio HAL.

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

החלפת קודק

כשהתכונות 'אודיו מרחבי דינמי' ו'מעקב אחר תנועות הראש' מופעלות, צריך להשתמש בקודק עם זמן אחזור קצר, כמו Opus. כשמפעילים תוכן אודיו לא מרחבי, מומלץ להשתמש בקודק עם צריכת אנרגיה נמוכה, כמו Advanced Audio Coding‏ (AAC).

יש לפעול לפי הכללים הבאים במהלך המעבר בין קודקים:

  • מעקב אחרי הפעילות רק בשידורי הפלט הבאים של HAL אודיו:
    • פלט ייעודי של יצירת מרחבים
    • סטרימינג ספציפי למדיה, כמו אחסון ב-buffer בעומק או הפעלה של אופלוד דחוס
  • כשכל המקורות הרלוונטיים לא פעילים והשידור של ה-Spatializer מתחיל, מפעילים את השידור ב-Bluetooth עם isLowLatency מוגדר כ-true כדי לציין קידוד עם זמן אחזור קצר.

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

  • אם שידור מדיה פעיל והשידור של ה-Spatializer מתחיל, מפעילים מחדש את השידור ב-Bluetooth עם isLowLatency מוגדר כ-true.

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

שינוי מצב זמן האחזור

התאמת מצב זמן האחזור מתרחשת כשבוחרים את הקודק לזמן אחזור קצר.

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

במאמר מעקב אחר תנועות הראש דרך LE Audio מוסבר איך לשנות את זמן האחזור ב-LE Audio.