การใช้เสียงเชิงพื้นที่และการติดตามศีรษะคุณภาพสูง

Android 13 แนะนำการรองรับเสียงเชิงพื้นที่โดยมอบ API ที่ช่วยให้นักพัฒนาแอปค้นพบว่าการใช้งานโทรศัพท์ ชุดหูฟังที่เชื่อมต่อ และการตั้งค่าผู้ใช้ในปัจจุบันทำให้สามารถเล่นเนื้อหาเสียงหลายช่องสัญญาณในลักษณะที่สมจริงหรือไม่

OEM สามารถจัดเตรียมเอฟเฟกต์เสียงแบบ Spatializer พร้อมรองรับการติดตามส่วนหัวด้วยระดับประสิทธิภาพและเวลาแฝงที่ต้องการ โดยใช้สถาปัตยกรรมไปป์ไลน์เสียงใหม่และการรวมเฟรมเวิร์กเซ็นเซอร์ โปรโตคอล HID ระบุวิธีแนบอุปกรณ์ติดตามศีรษะผ่านบลูทูธ และทำให้พร้อมใช้งานเป็นอุปกรณ์ HID ผ่านเฟรมเวิร์กเซ็นเซอร์ Android ดู เสียงเชิงพื้นที่และการติดตามศีรษะ สำหรับข้อกำหนดและการตรวจสอบเพิ่มเติม

หลักเกณฑ์ในหน้านี้ใช้กับโซลูชันเสียงเชิงพื้นที่ที่ใช้ API เสียงเชิงพื้นที่ใหม่และสถาปัตยกรรมเสียงด้วยโทรศัพท์ Android ที่ใช้ Android 13 ขึ้นไป และชุดหูฟังที่เข้ากันได้กับเซ็นเซอร์ติดตามศีรษะ

แนวทางการใช้งานโหมดเสียงเชิงพื้นที่แบบไดนามิกและแบบคงที่

เสียงเชิงพื้นที่แบบคงที่ไม่จำเป็นต้องติดตามศีรษะ ดังนั้นจึงไม่จำเป็นต้องใช้ฟังก์ชันเฉพาะในชุดหูฟัง ชุดหูฟังแบบมีสายและไร้สายทั้งหมดสามารถรองรับเสียงเชิงพื้นที่แบบคงที่ได้

การใช้งาน API

OEM ต้องใช้คลาส Spatializer ที่เปิดตัวใน Android 12 การใช้งานจะต้องผ่าน การทดสอบ CTS ที่นำมาใช้สำหรับคลาส Spatializer

การใช้ API ที่มีประสิทธิภาพช่วยให้มั่นใจได้ว่านักพัฒนาแอป โดยเฉพาะบริการสตรีมมิ่งสื่อ สามารถพึ่งพาพฤติกรรมที่สอดคล้องกันทั่วทั้งระบบนิเวศ และเลือกเนื้อหาที่ดีที่สุดตามความสามารถของอุปกรณ์ บริบทการเรนเดอร์ปัจจุบัน และตัวเลือกของผู้ใช้

หน้าจอผู้ใช้

หลังจากใช้งานคลาส Spatializer แล้ว ให้ตรวจสอบว่า UI ของคุณมีลักษณะการทำงานดังต่อไปนี้:

  • เมื่อจับคู่ชุดหูฟังที่รองรับเสียงเชิงพื้นที่แล้ว การตั้งค่าอุปกรณ์ Bluetooth สำหรับชุดหูฟังนี้จะแสดงปุ่ม สลับเสียงเชิงพื้นที่ :

    spatial-audio-ui

    รูปที่ 1 การตั้งค่าเสียงเชิงพื้นที่

  • การตั้งค่าจะใช้งานได้เมื่อถอดชุดหูฟังออก

  • สถานะเริ่มต้นสำหรับเสียงเชิงพื้นที่หลังจากจับคู่ชุดหูฟังครั้งแรกถูกตั้งค่าเป็น เปิดใช้งาน

  • สถานะที่ผู้ใช้เลือก ไม่ว่าจะเปิดใช้งานหรือปิดใช้งาน จะยังคงรีบูตโทรศัพท์หรือเลิกจับคู่และจับคู่ชุดหูฟัง

พฤติกรรมการทำงาน

รูปแบบเสียง

รูปแบบเสียงต่อไปนี้ต้องถูกเรนเดอร์ด้วยเอฟเฟกต์ Spatializer เมื่อเปิดใช้งานเสียงเชิงพื้นที่ และอุปกรณ์เรนเดอร์เป็นชุดหูฟังแบบมีสายหรือบลูทูธ:

  • AAC 5.1 ช่อง
  • PCM ดิบ 5.1 ช่อง

เพื่อประสบการณ์ผู้ใช้ที่ดียิ่งขึ้น เราขอแนะนำอย่างยิ่งให้รองรับรูปแบบ/การกำหนดค่าช่องสัญญาณต่อไปนี้:

  • ดอลบี้ดิจิตอลพลัส
  • 5.1.2, 7.1, 7.1.2, 7.1.4 ช่อง

การเล่นเนื้อหาสเตอริโอ

เนื้อหาสเตอริโอจะต้องไม่เรนเดอร์ผ่านกลไกเอฟเฟกต์ Spatializer แม้ว่าจะเปิดใช้งานเสียงเชิงพื้นที่ก็ตาม หากการใช้งานอนุญาตให้มีการกำหนดพื้นที่เนื้อหาสเตอริโอได้ จะต้องนำเสนอ UI แบบกำหนดเองที่ช่วยให้ผู้ใช้เปิดหรือปิดคุณสมบัตินี้ได้อย่างง่ายดาย เมื่อเปิดใช้งานเสียงเชิงพื้นที่ จะต้องสามารถเปลี่ยนระหว่างการเล่นเนื้อหาหลายช่องสัญญาณเชิงพื้นที่ไปเป็นเนื้อหาสเตอริโอที่ไม่ระบุตำแหน่ง โดยไม่ต้องเปลี่ยนการตั้งค่าผู้ใช้หรือการเชื่อมต่อชุดหูฟังใหม่หรือกำหนดค่าใหม่ การเปลี่ยนระหว่างเนื้อหาเสียงเชิงพื้นที่และเนื้อหาสเตอริโอจะต้องเกิดขึ้นโดยมีการรบกวนเสียงน้อยที่สุด

ใช้การเปลี่ยนกรณีและการทำงานพร้อมกัน

จัดการกรณีการใช้งานพิเศษดังต่อไปนี้:

  • การแจ้งเตือนจะต้องผสมกับเนื้อหาเสียงเชิงพื้นที่ในลักษณะเดียวกับเนื้อหาเสียงที่ไม่ใช่เชิงพื้นที่
  • เสียงเรียกเข้าต้องได้รับอนุญาตให้ผสมกับเนื้อหาเสียงเชิงพื้นที่ อย่างไรก็ตาม ตามค่าเริ่มต้น กลไกการโฟกัสเสียงจะหยุดเนื้อหาเสียงเชิงพื้นที่ชั่วคราวเมื่อมีเสียงเรียกเข้า
  • เมื่อรับสายหรือวางสายโทรศัพท์หรือการประชุมทางวิดีโอ การเล่นเสียงเชิงพื้นที่จะต้องหยุดชั่วคราว การเล่นเสียงเชิงพื้นที่ต้องเล่นต่อด้วยการตั้งค่าเสียงเชิงพื้นที่เหมือนเดิมเมื่อวางสาย การกำหนดค่าเส้นทางเสียงใหม่เพื่อเปลี่ยนจากโหมดเสียงเชิงพื้นที่ไปเป็นโหมดการสนทนาจะต้องดำเนินการอย่างรวดเร็วและราบรื่นเพียงพอ จึงไม่ส่งผลกระทบต่อประสบการณ์การโทร

เรนเดอร์ผ่านลำโพง

ไม่จำเป็นต้องมีการสนับสนุนการกำหนดตำแหน่งเสียงผ่านลำโพงหรือ โหมด Transaural

แนวทางการดำเนินการติดตามศีรษะ

ส่วนนี้เน้นที่เสียงเชิงพื้นที่แบบไดนามิก ซึ่งมีข้อกำหนดเฉพาะของชุดหูฟัง

หน้าจอผู้ใช้

เมื่อใช้งานและจับคู่ชุดหูฟังที่รองรับเสียงเชิงพื้นที่ ให้ตรวจสอบว่า UI ของคุณมีลักษณะการทำงานดังต่อไปนี้:

  • ในการตั้งค่าอุปกรณ์ Bluetooth เมื่อเปิดใช้งานการตั้งค่า Spatial Audio สำหรับชุดหูฟัง การตั้งค่า การติดตามศีรษะ จะปรากฏใต้ Spatial Audio :

    ht-ui

    รูปที่ 2 การตั้งค่าเสียงเชิงพื้นที่และการติดตามศีรษะ

  • การตั้งค่าการติดตามศีรษะจะไม่ปรากฏให้เห็นเมื่อปิดใช้งานเสียงเชิงพื้นที่

  • สถานะเริ่มต้นสำหรับการติดตามศีรษะหลังจากจับคู่ชุดหูฟังครั้งแรกถูกตั้งค่าเป็น เปิดใช้งาน

  • สถานะที่ผู้ใช้เลือก ไม่ว่าจะเปิดใช้งานหรือปิดใช้งาน จะต้องคงอยู่ผ่านการรีบูตโทรศัพท์หรือเลิกจับคู่และจับคู่ชุดหูฟัง

พฤติกรรมการทำงาน

รายงานท่าศีรษะ

  • ข้อมูลท่าศีรษะในพิกัด x, y และ z ที่ส่งจากชุดหูฟังไปยังอุปกรณ์ Android จะต้องสะท้อนการเคลื่อนไหวของศีรษะของผู้ใช้อย่างรวดเร็วและแม่นยำ
  • การรายงานท่าศีรษะผ่านลิงก์ Bluetooth ต้องเป็นไปตามโปรโตคอลที่กำหนดไว้บน HID
  • ชุดหูฟังจะต้องส่งข้อมูลการติดตามศีรษะไปยังโทรศัพท์ Android เมื่อผู้ใช้เปิดใช้งาน การติดตามศีรษะ ใน UI การตั้งค่าอุปกรณ์ Bluetooth เท่านั้น

ผลงาน

เวลาแฝง

เวลาแฝงในการติดตามการเคลื่อนที่ของศีรษะ หมายถึงเวลาที่ใช้ตั้งแต่การเคลื่อนไหวของศีรษะที่วัดโดยหน่วยวัดแรงเฉื่อย (IMU) ไปจนถึงการตรวจจับการเปลี่ยนแปลงของเสียงที่เกิดจากการเคลื่อนไหวนี้ของทรานสดิวเซอร์หูฟัง เวลาแฝงในการติดตามส่วนหัวต้องไม่เกิน 150 ms

อัตราการรายงานท่าโพสศีรษะ

เมื่อใช้งานการติดตามศีรษะ ชุดหูฟังจะต้องรายงานท่าทางของศีรษะตามระยะเวลาที่แนะนำเป็นระยะประมาณ 20 ms เพื่อหลีกเลี่ยงการทริกเกอร์ตรรกะการตรวจจับอินพุตเก่าบนโทรศัพท์ระหว่างการกระวนกระวายใจในการส่งสัญญาณของ Bluetooth เวลาสูงสุดระหว่างการอัปเดตสองครั้งจะต้องไม่เกิน 40 ms

การเพิ่มประสิทธิภาพพลังงาน

เพื่อเพิ่มประสิทธิภาพพลังงาน เราขอแนะนำให้ใช้งานโดยใช้ การสลับตัวแปลงสัญญาณ Bluetooth และกลไก การเลือกโหมดเวลาแฝง ที่มาจากอินเทอร์เฟซ HAL เสียง และ HAL เสียง Bluetooth

การใช้งาน AOSP ของเฟรมเวิร์กเสียงและสแต็ค Bluetooth รองรับสัญญาณเพื่อควบคุมการสลับตัวแปลงสัญญาณแล้ว หากการใช้งานของ OEM ใช้ HAL เสียงหลักสำหรับเสียง Bluetooth หรือที่เรียกว่า โหมดออฟโหลดตัวแปลง สัญญาณ OEM จะต้องตรวจสอบให้แน่ใจว่า HAL เสียงถ่ายทอดสัญญาณเหล่านั้นระหว่าง HAL เสียงและสแต็ก Bluetooth

การสลับตัวแปลงสัญญาณ

เมื่อเสียงเชิงพื้นที่แบบไดนามิกและการติดตามศีรษะเปิดอยู่ ให้ใช้ตัวแปลงสัญญาณที่มีความหน่วงต่ำ เช่น Opus เมื่อเล่นเนื้อหาเสียงที่ไม่ใช่เชิงพื้นที่ ให้ใช้ตัวแปลงสัญญาณที่ใช้พลังงานต่ำ เช่น Advanced Audio Coding (AAC)

ปฏิบัติตามกฎเหล่านี้ในระหว่างการสลับตัวแปลงสัญญาณ:

  • ติดตามเฉพาะกิจกรรมในสตรีมเอาต์พุตเสียง HAL ต่อไปนี้:
    • เอาต์พุต Spatializer เฉพาะ
    • สตรีมเฉพาะสื่อ เช่น Deep Buffer หรือการเล่นออฟโหลดที่ถูกบีบอัด
  • เมื่อสตรีมที่เกี่ยวข้องทั้งหมดไม่ได้ใช้งานและสตรีม Spatializer เริ่มต้น ให้เริ่มสตรีม Bluetooth โดย ตั้งค่า isLowLatency เป็น true เพื่อระบุตัวแปลงสัญญาณที่มีความหน่วงต่ำ

  • เมื่อสตรีมที่เกี่ยวข้องทั้งหมดไม่ได้ใช้งานและสตรีมสื่อเริ่มต้น ให้เริ่มสตรีม Bluetooth โดย ตั้ง isLowLatency เป็น false เพื่อระบุตัวแปลงสัญญาณที่ใช้พลังงานต่ำ

  • หากสตรีมสื่อทำงานอยู่และสตรีม Spatializer เริ่มต้น ให้รีสตาร์ทสตรีม Bluetooth โดย ตั้งค่า isLowLatency เป็น true

ในด้านชุดหูฟัง ชุดหูฟังจะต้องรองรับทั้งตัวถอดรหัสที่มีความหน่วงต่ำและพลังงานต่ำ และใช้โปรโตคอลการเลือกโคเดกมาตรฐาน

การปรับโหมดความหน่วง

การปรับโหมดเวลาแฝงเกิดขึ้นเมื่อเลือกตัวแปลงสัญญาณเวลาแฝงต่ำ

ขึ้นอยู่กับว่าการติดตามส่วนหัวเปิดหรือปิดอยู่ การปรับโหมดเวลาแฝงจะใช้กลไกที่มีอยู่เพื่อลดหรือเพิ่มเวลาแฝงเพื่อให้ได้การประนีประนอมที่ดีที่สุดระหว่างเวลาแฝง พลังงาน และคุณภาพเสียง เมื่อเปิดใช้งานเสียงเชิงพื้นที่และเปิดใช้งานการติดตามศีรษะ โหมดเวลาแฝงต่ำจะถูกเลือก เมื่อเปิดใช้งานเสียงเชิงพื้นที่และปิดใช้งานการติดตามศีรษะ โหมดเวลาแฝงอิสระจะถูกเลือก การปรับเวลาแฝงช่วยประหยัดพลังงานได้มากและเพิ่มความทนทานของลิงก์เสียง Bluetooth เมื่อมีการร้องขอเฉพาะเสียงเชิงพื้นที่แบบคงที่ กลไกการปรับเวลาแฝงที่พบบ่อยที่สุดคือการลดหรือขยายขนาดบัฟเฟอร์การกระวนกระวายใจในชุดหูฟัง Bluetooth