Android 13 ra mắt một cách thức tiêu chuẩn để OEM hỗ trợ âm thanh không gian và tính năng theo dõi chuyển động đầu mà không cần các SDK hoặc tuỳ chỉnh dành riêng cho nhà cung cấp.
Âm thanh không gian là một công nghệ dùng để tạo trường âm thanh bao quanh người nghe. Âm thanh không gian cho phép người dùng nhận biết các kênh và âm thanh riêng lẻ ở các vị trí khác với vị trí thực tế 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 đa kênh qua tai nghe. Khi sử dụng âm thanh không gian, người dùng tai nghe có thể nhận biết được cuộc đối thoại ở phía trước và hiệu ứng âm thanh vòm ở phía sau, mặc dù chỉ có hai bộ chuyển đổi để phát.
Tính năng Theo dõi chuyển động đầu giúp người dùng hiểu được bản chất của sân khấu âm thanh không gian đang được mô phỏng xung quanh đầu họ. Trải nghiệm này chỉ hiệu quả khi độ trễ thấp, trong đó độ trễ được đo bằ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 di chuyển tương ứng.
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 tính năng xử lý âm thanh không gian ở cấp 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
Khung âm thanh và API Android đã sửa đổi trong Android 13 hỗ trợ việc sử dụng công nghệ âm thanh không gian trên toàn hệ sinh thái.
Hình sau đây minh hoạ các 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 trên Android 13:
Hình 1. Cấu trúc quy trình âm thanh có bộ tạo âm thanh không gian
Trong mô hình mới, bộ 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ã. Trình tạo âm thanh không gian sẽ lấy nội dung âm thanh đã kết hợp và kết xuất luồng âm thanh nổi đến Audio HAL. Việc tách bộ tạo không gian khỏi bộ giải mã cho phép OEM chọn nhiều nhà cung cấp cho bộ giải mã và bộ tạo không gian, đồng thời đạt được độ trễ khứ hồi mong muốn cho tính năng theo dõi chuyển động đầu. Mô hình mới này cũng bao gồm các móc nối với khung cảm biến để theo dõi chuyển động đầu.
Hình sau đây minh hoạ cấu trúc hệ thống của khung âm thanh cho hiệu ứng âm thanh không gian và theo dõi chuyển động của đầu:
Hình 2. Cấu trúc hệ thống có trình 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 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 Giao diện người dùng hệ thống để quản lý chức năng liên quan đến trình tạo âm thanh không gian dựa trên nền tảng và 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 tạo và kiểm soát biểu đồ âm thanh không gian cần thiết cho việc kết hợp và tạo không gian âm thanh đa kênh dựa trên các tính năng do nhà sản xuất thiết bị gốc (OEM) thể hiện, các thiết bị đã 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
sẽ trộn các kênh đa kênh và truyền kết quả trộn vào công cụ FX xử lý hậu kỳ hiển thị đầu ra âm thanh nổi cho Audio HAL. Đối với tính năng theo dõi chuyển động đầu, lớp SpatializerPoseController
nhóm các hàm liên quan đến tính năng theo dõi chuyển động đầu, giao diện với ngăn xếp cảm biến, hợp nhất và lọc các tín hiệu cảm biến được cung cấp cho 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.
Các thay đổi đối với cấu trúc quy trình âm thanh của Android 13 giúp cải thiện những điểm 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 đầu thông qua API hệ thống.
- Khám phá cảm biến theo dõi đầu và liên kết các cảm biến đó với 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 có thể sử dụng.
Bạn có thể triển khai các hàm 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 chuyển động đầu.
API âm thanh không gian
Android 13 cung cấp hệ thống âm thanh không gian và API 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 khả năng sử dụng tính năng và trạng thái bật, do các API hệ thống thiết lập. Ứ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
.
Nhà sản xuất thiết bị gố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 âm thanh không gian và tính năng theo dõi chuyển động đầ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ỉ hoạt động nếu việc triển khai hiệu ứng âm thanh không gian hỗ trợ chế độ chuyển âm thanh.
Người dùng cũng có thể bật hoặc tắt â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ị. Bạn chỉ có thể sử dụng chế độ cài đặt theo dõi chuyển động của đầu nếu tai nghe Bluetooth hiển thị 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 ở trạng thái BẬT nếu thiết bị hỗ trợ tính năng này. 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 chuyển động đầ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 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ụ hiệu ứng âm thanh không gian, nhà sản xuất thiết bị gố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:
- Audio HAL 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 đầu tích hợp.
- Việc triển khai phải tuân thủ tiêu chuẩn đề xuất cho tính năng theo dõi chuyển động đầu qua giao thức HID từ tai nghe Bluetooth đến điện thoại.
- Cần có Audio HAL v7.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:
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ợ trình tạo không gian.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"/>
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"/>
Nhà cung cấp triển khai hiệu ứng âm thanh không gian phải tuân thủ những điều sau:
- Cấu hình và chế độ điều khiển 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 (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ó để dễ dàng tương tác và đạt được mục tiêu về độ trễ.
- Độ trễ trọn vòng, từ khi phát hiện chuyển động của cảm biến đến khi tai nghe nhận được âm thanh, phải dưới 150 ms để mang lại trải nghiệm người dùng tốt.
- Đối với Bluetooth (BT) Cổ điển có Cấu hình phân phối âm thanh nâng cao (A2DP):
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 bài kiểm thử CTS có trong SpatializerTest.java
.
Việc triển khai không tốt các thuật toán theo dõi chuyển động đầu hoặc không gian hoá có thể khiến bạn không đáp ứng được đề xuất về độ trễ trọn vòng như được liệt kê trong phần Đề xuất.