Theo dõi âm thanh và đầu trong không gian

Android 13 giới thiệu một phương pháp tiêu chuẩn để các OEM hỗ trợ tính năng theo dõi đầu và âm thanh không gian mà không cần các tùy chỉnh hoặc SDK dành riêng cho nhà cung cấp.

Âm thanh không gian là công nghệ được sử dụng để tạo ra trường âm thanh bao quanh người nghe. Âm thanh không gian cho phép người dùng cảm nhận các kênh và âm thanh riêng lẻ ở các vị trí khác với vị trí vật lý của bộ chuyển đổi của thiết bị âm thanh được sử dụng để phát lại. Ví dụ: âm thanh không gian cung cấp cho người dùng khả năng nghe nhạc nền đa kênh qua tai nghe. Bằng cách sử dụng âm thanh không gian, người dùng tai nghe có thể cảm nhận được đoạn hội thoại phía trước và hiệu ứng âm thanh vòm phía sau họ, mặc dù chỉ có hai bộ chuyển đổi để phát lại.

Theo dõi đầu giúp người dùng hiểu bản chất của giai đoạn âm thanh không gian được mô phỏng xung quanh đầu của họ. Trải nghiệm này chỉ hiệu quả khi độ trễ thấp, trong đó độ trễ được đo bằng khoảng thời gian từ khi người dùng di chuyển đầu đến thời điểm họ nghe thấy vị trí loa ảo chuyển động tương ứng.

Android 13 tối ưu hóa âm thanh không gian và theo dõi đầu bằng cách cung cấp khả năng xử lý âm thanh không gian ở mức thấp nhất có thể trong quy trình âm thanh để có được độ trễ thấp nhất có thể.

Ngành kiến ​​​​trúc

API và khung âm thanh Android được sửa đổi trong Android 13 tạo điều kiện thuận lợi cho việc áp dụng công nghệ âm thanh không gian trên toàn hệ sinh thái.

Hình sau đây minh họa những thay đổi liên quan đến âm thanh không gian được thực hiện đối với kiến ​​trúc đường dẫn âm thanh với Android 13:

spatial-audio

Hình 1. Kiến trúc đường ống âm thanh với bộ khuếch đại không gian

Trong mô hình mới, bộ không gian là một phần của khung âm thanh và được tách rời khỏi bộ giải mã. Bộ tạo không gian tiếp nhận nội dung âm thanh hỗn hợp và hiển thị luồng âm thanh nổi tới Audio HAL. Việc tách bộ không gian khỏi bộ giải mã cho phép các OEM chọn các nhà cung cấp khác nhau cho bộ giải mã và bộ không gian, đồng thời đạt được độ trễ khứ hồi mong muốn để theo dõi đầu. Mẫu mới này cũng bao gồm các móc vào khung cảm biến để theo dõi đầu.

Hình dưới đây minh họa kiến ​​trúc hệ thống của khung âm thanh cho hiệu ứng theo dõi không gian và theo dõi đầu:

spatial-sys-arch

Hình 2. Kiến trúc hệ thống với bộ định vị không gian và theo dõi đầu

Tất cả API âm thanh không gian được nhóm trong lớp Spatializer công khai ở cấp ứng dụng. Lớp SpatializerHelper trong giao diện dịch vụ âm thanh với các thành phần UI hệ thống để quản lý chức năng liên quan đến bộ tạo không gian dựa trên nền tảng và khả năng của thiết bị được kết nối. Lớp Spatializer mới trong dịch vụ chính sách âm thanh tạo và kiểm soát biểu đồ âm thanh không gian cần thiết cho việc trộn và phân chia không gian đa kênh dựa trên các khả năng do OEM thể hiện , các thiết bị được kết nối và các trường hợp sử dụng đang hoạt động. Lớp bộ trộn mới SpatializerThread trộn các bản nhạc đa kênh và cung cấp bản phối kết quả cho công cụ FX xử lý hậu kỳ để hiển thị đầu ra âm thanh nổi cho Audio HAL. Để theo dõi đầu, lớp SpatializerPoseController nhóm các chức năng liên quan đến theo dõi đầu, để giao tiếp với ngăn xếp cảm biến cũng như hợp nhất và lọc các tín hiệu cảm biến được đưa đến công cụ hiệu ứng. Dữ liệu cảm biến theo dõi đầu được truyền qua giao thức HID từ trình điều khiển Bluetooth.

Những thay đổi đối với kiến ​​trúc đường truyền âm thanh Android 13 cải thiện những điểm sau:

  • Giảm độ trễ giữa bộ tạo không gian và tai nghe.
  • Cung cấp API thống nhất để phục vụ các nhà phát triển ứng dụng.
  • Kiểm soát trạng thái theo dõi đầu thông qua API hệ thống.
  • Khám phá các cảm biến theo dõi đầu và liên kết chúng với các thiết bị âm thanh đang hoạt động.
  • Hợp nhất các tín hiệu từ nhiều cảm biến khác nhau và tính toán tư thế đầu mà công cụ tạo hiệu ứng không gian có thể sử dụng.

Các chức năng như bù sai lệch, phát hiện tĩnh lặng và giới hạn tốc độ có thể được triển khai bằng thư viện tiện ích theo dõi đầu .

API âm thanh không gian

Android 13 cung cấp hệ thống âm thanh không gian và API dành cho nhà phát triển.

OEM có thể điều chỉnh hành vi của ứng dụng dựa trên tính khả dụng của tính năng và trạng thái bật do API hệ thống đặt. Ứng dụng cũng có thể định cấu hình các thuộc tính âm thanh để tắt âm thanh không gian vì lý do thẩm mỹ hoặc để cho biết rằng luồng âm thanh đã được xử lý cho âm thanh không gian .

Đối với các API dành cho nhà phát triển, hãy xem Spatializer .

OEM có thể sử dụng API hệ thống để triển khai Giao diện người dùng cài đặt Âm thanh và Bluetooth, cho phép người dùng kiểm soát trạng thái của âm thanh không gian và tính năng theo dõi đầu cho thiết bị của họ. Người dùng có thể bật hoặc tắt âm thanh không gian cho loa và tai nghe có dây trong giao diện người dùng cài đặt Âm thanh. Cài đặt âm thanh không gian cho loa chỉ khả dụng nếu việc triển khai hiệu ứng không gian hỗ trợ chế độ xuyên âm.

Người dùng cũng có thể bật hoặc tắt âm thanh không gian và theo dõi đầu trong cài đặt thiết bị Bluetooth cho từng thiết bị. Cài đặt theo dõi đầu chỉ khả dụng nếu tai nghe Bluetooth có cảm biến theo dõi đầu.

Cài đặt mặc định cho âm thanh không gian luôn BẬT nếu tính năng này được hỗ trợ. Xem Spatializer.java để biết danh sách đầy đủ các API hệ thống.

Loại cảm biến theo dõi đầu mới Sensor.TYPE_HEAD_TRACKER được thêm vào khung Cảm biến và được Sensor HAL hiển thị dưới dạng cảm biến động qua Bluetooth hoặc USB.

Tích hợp âm thanh không gian

Cùng với việc triển khai công cụ tạo hiệu ứng không gian, các OEM phải định cấu hình nền tảng của họ để hỗ trợ âm thanh không gian.

Yêu cầu

Các yêu cầu sau phải được đáp ứng để tích hợp âm thanh không gian:

  • Audio HAL và DSP âm thanh phải hỗ trợ đường dẫn đầu ra dành riêng cho âm thanh không gian.
  • Để có âm thanh không gian có tính năng theo dõi đầu, tai nghe phải tích hợp cảm biến theo dõi đầu.
  • Việc triển khai phải tuân theo tiêu chuẩn đề xuất để theo dõi đầu qua giao thức HID từ tai nghe Bluetooth đến điện thoại.
  • Cần có âm thanh HAL v7.1 để hỗ trợ âm thanh không gian.

Tích hợp âm thanh không gian bằng các bước sau:

  1. Khai báo hỗ trợ âm thanh không gian trong tệp device.mk của bạn, như sau:

    PRODUCT_PROPERTY_OVERRIDES += \
         ro.audio.spatializer_enabled=true
    

    Điều này khiến AudioService khởi tạo hỗ trợ bộ khuếch đại không gian.

  2. Khai báo đầu ra dành riêng cho hỗn hợp âm thanh không gian trong audio_policy_configuration.xml như sau:

    <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. Khai báo thư viện hiệu ứng không gian trong audio_effects.xml như sau:

    <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. Các nhà cung cấp thực hiện hiệu ứng không gian phải tuân thủ những điều sau:

    • Cấu hình cơ bản và điều khiển giống hệt các hiệu ứng khác trong Effect HAL.
    • Các tham số cụ thể cần thiết để khung khám phá các khả năng và cấu hình được hỗ trợ, chẳng hạn như:

      • 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

    Xem effect_spatializer.h để biết thêm thông tin.

khuyến nghị

Chúng tôi khuyên các OEM nên sử dụng các nguyên tắc sau trong quá trình triển khai:

  • Sử dụng âm thanh LE khi có sẵn để giảm bớt khả năng tương tác và đạt được mục tiêu về độ trễ.
  • Độ trễ trọn vòng, từ tính năng phát hiện chuyển động của cảm biến đến âm thanh mà tai nghe nhận được, phải nhỏ hơn 150 mili giây để có trải nghiệm người dùng tốt.
  • Đối với Bluetooth (BT) Classic có Cấu hình phân phối âm thanh nâng cao (A2DP):
    • Sử dụng codec có độ trễ thấp, chẳng hạn như Opus .
    • Triển khai chức năng kiểm soát độ trễ tại Audio HAL . Điều này cho phép tối ưu hóa năng lượng và hiệu suất khi tính năng theo dõi đầu bị tắt và tắt tính năng theo dõi đầu trong các điều kiện không tối ưu.

Thẩm định

Để xác thực chức năng của tính năng âm thanh không gian, hãy sử dụng các bài kiểm tra CTS có sẵn trong SpatializerTest.java .

Việc triển khai kém các thuật toán theo dõi không gian hoặc theo dõi đầu có thể gây ra lỗi không đáp ứng được khuyến nghị về độ trễ khứ hồi như được liệt kê trong Khuyến nghị .