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

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

Âm thanh không gian là một công nghệ được dùng để tạo ra trường âm thanh bao quanh người nghe. Âm thanh không gian giúp người dùng cảm nhận được các kênh và âm thanh riêng lẻ ở những vị trí khác với vị trí thực của bộ chuyển đổi trên thiết bị âm thanh dùng để phát. Ví dụ: âm thanh không gian cho phép người dùng nghe bản nhạc nhiều kênh qua tai nghe. Khi 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, mặc dù chỉ có 2 bộ chuyển đổi để phát.

Tính năng theo dõi đầu giúp người dùng hiểu rõ bản chất của giai đoạn âm thanh được mô phỏng xung quanh đầu. 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 giữa thời điểm người dùng di chuyển đầu và thời điểm họ nghe thấy vị trí loa ảo di chuyển theo.

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

Kiến trúc

Khung âm thanh và API Android đã được sửa đổi trong Android 13 giúp việc áp dụng công nghệ âm thanh không gian trên toàn hệ sinh thái trở nên dễ dàng hơn.

Hình sau đây minh hoạ những thay đổi liên quan đến âm thanh không gian được thực hiện đối với cấu trúc quy trình âm thanh bằng Android 13:

spatial-audio

Hình 1. Cấu trúc quy trình xử lý âm thanh có bộ tạo hiệu ứng âm thanh không gian

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

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

spatial-sys-arch

Hình 2. Cấu trúc hệ thống có bộ tạo hiệu ứng 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 trong lớp Spatializer công khai ở cấp ứng dụng. Lớp SpatializerHelper trong dịch vụ âm thanh tương tác 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ộ không gian hoá dựa trên nền tảng và các chức 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 sẽ tạo và kiểm soát biểu đồ âm thanh không gian cần thiết cho việc trộn và không gian hoá nhiều kênh dựa trên các chức 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. Một lớp bộ trộn mới SpatializerThread trộn các bản nhạc đa kênh và truyền bản phối kết quả đến một công cụ FX xử lý hậu kỳ. Công cụ này sẽ kết xuất đầu ra âm thanh nổi đến HAL âm thanh. Đối với tính năng theo dõi đầu, các hàm nhóm lớp SpatializerPoseController liên quan đến tính năng theo dõi đầu, để giao tiếp với ngăn xếp cảm biến và để hợp nhất cũng như lọc các tín hiệu cảm biến được đưa vào 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 cấu trúc quy trình xử lý âm thanh của Android 13 giúp cải thiện những điểm sau:

  • Giảm độ trễ giữa bộ mở rộng âm thanh và tai nghe.
  • Cung cấp các 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 đầu thông qua API hệ thống.
  • Phát hiện 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 và tính toán tư thế đầu mà công cụ hiệu ứng không gian hoá có thể sử dụng.

Bạn có thể triển khai các chức năng như bù độ lệch, phát hiện trạng thái tĩnh và giới hạn tốc độ bằng cách sử dụ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à các API dành cho nhà phát triển.

Các OEM có thể điều chỉnh hành vi của ứng dụng dựa trên trạng thái đã bật và khả năng cung cấp tính năng do các API hệ thống thiết lập. Các ứng dụng cũng có thể định cấu hình 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.

Các 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 tính năng â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. Chế độ cài đặt âm thanh không gian cho loa chỉ có sẵn nếu chế độ triển khai hiệu ứng không gian hoá hỗ trợ chế độ xuyên tai.

Người dùng cũng có thể bật hoặc tắt chế độ âm thanh không gian và tính năng theo dõi chuyển động đầu trong phần cài đặt thiết bị Bluetooth cho từng thiết bị. Chế độ cài đặt theo dõi chuyển động của đầu chỉ có khi tai nghe Bluetooth có 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 luôn là BẬT nếu tính năng này được hỗ trợ. Hãy 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 HAL cảm biến hiển thị dưới dạng một cảm biến động qua Bluetooth hoặc USB.

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

Ngoài việc triển khai công cụ hiệu ứng không gian hoá, 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

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ợ một đường dẫn đầu ra chuyên dụng cho âm thanh không gian.
  • Đố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ó cảm biến theo dõi chuyển động của đầu tích hợp.
  • Việc triển khai phải tuân thủ tiêu chuẩn đề xuất để theo dõi đầu qua giao thức HID từ tai nghe Bluetooth đến điện thoại.
  • Bạn cần có Audio HAL phiên bản 7.1 để hỗ trợ âm thanh không gian.

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

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

    PRODUCT_PROPERTY_OVERRIDES += \
         ro.audio.spatializer_enabled=true
    

    Thao tác này khiến AudioService khởi động tính năng hỗ trợ bộ không gian hoá.

  2. Khai báo đầu ra chuyên dụng cho bản phối â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 hoá 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 bộ ảo hoá không gian phải tuân thủ những điều sau:

    • Cấu hình và chế độ kiểm soát cơ bản giống với 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 chức 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.

Đề xuất

Các 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 LE khi có thể để tăng khả năng tương tác và đạt được mục tiêu về độ trễ.
  • Độ trễ trọn vòng, từ khi cảm biến phát hiện chuyển động đến khi tai nghe nhận được âm thanh, phải dưới 150 mili giây để mang lại 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 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 Audio HAL. Điều này giúp tối ưu hoá hiệu suất và mức tiêu thụ điện năng khi tính năng theo dõi đầu ở trạng thái tắt, đồng thời vô hiệu hoá tính năng theo dõi đầu trong các đ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 các kiểm thử CTS có trong SpatializerTest.java.

Việc triển khai không đúng các thuật toán không gian hoá hoặc theo dõi đầu có thể khiến bạn không đáp ứng được đề xuất về độ trễ khứ hồi như được liệt kê trong phần Đề xuất.