Âm thanh không gian và tính năng theo dõi chuyển động của đầu

Android 13 ra mắt một cách thức tiêu chuẩn để OEM (Nhà sản xuất thiết bị gốc) hỗ trợ âm thanh không gian và theo dõi chuyển động của đầu mà không cần đến hoặc SDK.

Âm thanh không gian là công nghệ dùng để tạo trường âm thanh xung quanh trình nghe. Âm thanh không gian giúp người dùng cảm nhận các kênh và từng âm thanh ở các vị trí khác với vị trí thực tế của đầu dò thiết bị âm thanh 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 đa kênh qua tai nghe. Sử dụng tính năng không gian âm thanh, người dùng tai nghe có thể cảm nhận được cuộc trò chuyện ngay trước mặt họ và hiệu ứng phía sau chúng, mặc dù chỉ có hai bộ chuyển đổi để phát lại.

Tính năng Theo dõi chuyển động của đầu giúp người dùng hiểu bản chất của âm thanh không gian sân khấu được mô phỏng quanh đầu. Trải nghiệm này chỉ có hiệu lực khi độ trễ thấp, trong đó độ trễ được đo là khoảng thời gian từ khi người dùng cử động đầu và thời điểm họ nghe thấy vị trí loa ảo di chuyển cho phù hợp.

Android 13 tối ưu hoá âm thanh không gian và âm thanh đầu bằng cách cung cấp tính 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ể.

Kiến trúc

API và khung âm thanh Android đã sửa đổi trong Android 13 tạo điều kiện để tiếp nhận công nghệ âm thanh không gian trong hệ sinh thái.

Hình dưới đây minh hoạ những thay đổi liên quan đến âm thanh không gian đối với kiến trúc quy trình âm thanh trên Android 13:

âm thanh không gian

Hình 1. Kiến trúc đường ống âm thanh bằng bộ tạo âm thanh không gian

Trong mô hình mới, công cụ tạo âm thanh không gian là một phần của khung âm thanh và được tách khỏi bộ giải mã. Công cụ tạo không gian xử lý nội dung âm thanh hỗn hợp và kết xuất luồng âm thanh nổi sang HAL âm thanh. Tháo rời bộ tạo âm thanh không gian khỏi bộ giải mã cho phép OEM chọn các nhà cung cấp khác nhau cho bộ giải mã và bộ không gian và để đạt được độ trễ trọn vòng mong muốn cho tính năng theo dõi chuyển động của đầu. Mô hình mới này cũng bao gồm các móc vào khung cảm biến để theo dõi chuyển động của đầu.

Hình sau đây minh hoạ cấu trúc hệ thống của khung âm thanh về hiệu ứng âm thanh không gian và theo dõi chuyển động của đầu:

vòm hệ thống không gian

Hình 2. Kiến trúc hệ thống với công cụ tạo âm thanh không gian và tính năng theo dõi chuyển động của đầu

Tất cả API âm thanh không gian đều được nhóm ở chế độ công khai Spatializer ở cấp ứng dụng. SpatializerHelper lớp trong giao diện dịch vụ âm thanh với các thành phần Giao diện người dùng hệ thống để quản lý chức năng liên quan đến bộ tạo âm thanh không gian dựa trên nền tảng và thiết bị thông minh các chức năng khác nhau. Lớp Spatializer mới trong dịch vụ chính sách âm thanh tạo và kiểm soát không gian đồ thị âm thanh cần thiết cho việc trộn và tạo không gian đa kênh dựa trên những chức năng mà 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. Một lớp bộ trộn mới SpatializerThread kết hợp các bản nhạc đa kênh và đưa dữ liệu kết hợp thu được vào một FX hậu xử lý kết xuất đầu ra âm thanh nổi đến HAL âm thanh. Để theo dõi chuyển động của đầu, Lớp SpatializerPoseController chứa các hàm có liên quan đến tính năng theo dõi chuyển động của đầu, thành giao diện 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 cấp cho công cụ hiệu ứng. Dữ liệu cảm biến theo dõi chuyển động của đầu được chuyển qua giao thức HID từ trình điều khiển Bluetooth.

Các thay đổi đối với cấu trúc quy trình âm thanh trên Android 13 cải thiện về những khía cạnh sau:

  • Giảm độ trễ giữa bộ tạo âm thanh không gian và tai nghe.
  • Cung cấp API hợp nhất để phục vụ nhà phát triển ứng dụng.
  • Kiểm soát trạng thái theo dõi chuyển động của đầu thông qua các API hệ thống.
  • Khám phá các cảm biến theo dõi chuyển động của đầ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 tín hiệu từ nhiều cảm biến và tính toán tư thế đầu mà trẻ có thể do công cụ tạo hiệu ứng không gian tiêu thụ.

Các chức năng như bù độ 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 giao diện người dùng.

API âm thanh không gian

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

OEM có thể điều chỉnh hành vi của ứng dụng dựa trên phạm vi cung cấp tính năng và trạng thái bật, do API hệ thống thiết lập. Các ứ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 âm thanh không gian và đầu cho thiết bị của mình. Người dùng có thể bật hoặc tắt tính năng â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. Không gian Bạn chỉ có thể sử dụng chế độ cài đặt âm thanh cho loa nếu có hiệu ứng tạo không gian Việc triển khai hỗ trợ chế độ giao diện.

Người dùng cũng có thể bật hoặc tắt tính năng âm thanh không gian và tính năng theo dõi chuyển động của đầu trong Chế độ cài đặt thiết bị Bluetooth cho từng thiết bị. Có chế độ cài đặt Theo dõi chuyển động của đầu chỉ khi tai nghe Bluetooth cho thấy cảm biến theo dõi chuyển động của đầu.

Chế độ cài đặt mặc định cho âm thanh không gian sẽ luôn BẬT nếu tính năng này được bật đượ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 chuyển động của đầu mới Sensor.TYPE_HEAD_TRACKER được thêm vào Khung cảm biến và được HAL của cảm biến hiển thị dưới dạng cảm biến động 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ụ hiệu ứng không gian, OEM phải định cấu hình nền tảng hỗ trợ âm thanh không gian.

Yêu cầu

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

  • HAL âm thanh và DSP âm thanh phải hỗ trợ đường dẫn đầu ra chuyên dụng cho không gian âm thanh.
  • Đối với âm thanh không gian có tính năng theo dõi chuyển động của đầu, tai nghe phải được tích hợp sẵn đầu cảm biến vòng đeo tay theo dõi.
  • Việc triển khai phải tuân thủ tiêu chuẩn được đề xuất cho tính năng theo dõi chuyển động của đầu qua giao thức HID từ một Tai nghe Bluetooth với điện thoại.
  • HAL âm thanh phiên bản 7.1 là cần thiết để hỗ trợ âm thanh không gian.

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

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

    PRODUCT_PROPERTY_OVERRIDES += \
         ro.audio.spatializer_enabled=true
    

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

  2. Khai báo đầu ra chuyên biệt cho dữ liệu trộn â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. Nhà cung cấp triển khai hiệu ứng không gian phải tuân thủ những yêu cầu sau:

    • Cấu hình và điều khiển cơ bản giống hệt với các hiệu ứng khác trong Effect Lớp trừu tượng phần cứng (HAL).
    • Các thông số cụ thể cần thiết để khung này khám phá ra các thông số được hỗ trợ các chức năng và cấu hình, 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.

Đề xuất

Nhà sản xuất thiết bị gốc nên tuân thủ các nguyên tắc sau trong quá trình triển khai:

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

Xác nhận kết quả

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

Triển khai không gian hoặc các thuật toán theo dõi chuyển động của đầu không tốt có thể gây ra không đáp ứng đề xuất về độ trễ trọn vòng như được nêu trong Đề xuất.