Hỗ trợ âm thanh cho thiết bị trợ thính bằng Bluetooth LE

Các thiết bị trợ thính (HA) có thể đã cải thiện khả năng hỗ trợ tiếp cận trên Các thiết bị di động hỗ trợ Android bằng cách sử dụng L2CAP định hướng kết nối kênh (CoC) qua Bluetooth năng lượng thấp (BLE). CoC sử dụng chất liệu đàn hồi vùng đệm của một số gói âm thanh để duy trì luồng âm thanh ổn định, ngay cả khi khi có gói tin mất. Bộ đệm này cung cấp chất lượng âm thanh cho các thiết bị trợ thính đòi hỏi độ trễ cao.

Thiết kế của CoC đề cập đến Bluetooth Thông số kỹ thuật cốt lõi phiên bản 5 (BT). Để phù hợp với các thông số kỹ thuật cốt lõi, tất cả các giá trị trên trang này sẽ được đọc là Little-endian.

Thuật ngữ

  • Trung tâm – thiết bị Android quét tìm quảng cáo qua Bluetooth.
  • Thiết bị ngoại vi – thiết bị trợ thính sẽ gửi gói quảng cáo qua Bluetooth.

Cấu trúc liên kết mạng và cấu trúc hệ thống

Khi sử dụng CoC cho thiết bị trợ thính, cấu trúc liên kết mạng giả định một thiết bị trung tâm và hai thiết bị ngoại vi, một thiết bị bên trái và một thiết bị bên phải, như minh hoạ trong Hình 1 Hệ thống âm thanh Bluetooth nhìn từ bên trái và các thiết bị ngoại vi bên phải như một bồn lưu trữ âm thanh duy nhất. Nếu một thiết bị ngoại vi thiếu, do sự phù hợp một bên tai hoặc mất kết nối, thì trung tâm trộn kênh âm thanh bên trái và bên phải rồi truyền âm thanh cho thiết bị ngoại vi còn lại. Nếu trung tâm mất kết nối với cả thiết bị ngoại vi thì thiết bị trung tâm sẽ xem xét mối liên kết với bồn lưu trữ âm thanh thua. Trong những trường hợp đó, trung tâm sẽ định tuyến âm thanh đến một đầu ra khác.


Hình 1. Cấu trúc liên kết để ghép nối thiết bị trợ thính với Thiết bị di động Android sử dụng CoC qua BLE

Khi thiết bị trung tâm không truyền dữ liệu âm thanh đến thiết bị ngoại vi và có thể duy trì kết nối BLE, trung tâm không được ngắt kết nối khỏi thiết bị ngoại vi. Việc duy trì kết nối giúp quá trình giao tiếp dữ liệu vào máy chủ GATT đặt trên thiết bị ngoại vi.

Khi ghép nối và kết nối các thiết bị trợ thính, trung tâm sẽ:

  • Theo dõi các thiết bị ngoại vi trái và phải gần đây được ghép nối.
  • Giả sử các thiết bị ngoại vi đang được sử dụng nếu có sự ghép nối hợp lệ. Chiến lược phát hành đĩa đơn sẽ cố gắng kết nối hoặc kết nối lại với trên thiết bị của bạn khi bị mất kết nối.
  • Giả sử các thiết bị ngoại vi không còn được sử dụng nếu bạn xoá một cặp.

Trong các trường hợp trên, ghép nối đề cập đến hành động của đăng ký một bộ thiết bị trợ thính có một mã nhận dạng duy nhất (UUID) cụ thể và trái/phải trong hệ điều hành chứ không phải trong quá trình ghép nối qua Bluetooth.

Yêu cầu hệ thống

Để triển khai CoC đúng cách nhằm mang lại trải nghiệm tốt cho người dùng, Bluetooth hệ thống ở thiết bị trung tâm và thiết bị ngoại vi phải:

  • triển khai bộ điều khiển BT 4.2 trở lên tuân thủ. Kết nối an toàn LE hiện là thực sự nên dùng.
  • có hỗ trợ trung tâm ít nhất 2 liên kết LE đồng thời với các tham số như mô tả trong Gói âm thanh định dạng và thời gian.
  • có hỗ trợ ngoại vi ít nhất 1 liên kết LE với các tham số mô tả trong Gói âm thanh định dạng và thời gian.
  • có một kiểm soát luồng dựa trên tín dụng LE [BT Vol 3, Phần A, Sec 10.1]. Các thiết bị phải hỗ trợ MTU và MPS có kích thước tối thiểu là 167 byte CoC và có thể lưu vào bộ đệm lên đến 8 gói.
  • có phần mở rộng độ dài dữ liệu LE [BT Vol 6, Phần B, Sec 5.1.9] với tải trọng tối thiểu 167 byte.
  • có thiết bị trung tâm hỗ trợ Lệnh cập nhật kết nối HCI LE và tuân thủ maximum_CE_Length khác 0 và Tham số minimum_CE_Length.
  • có trung tâm duy trì thông lượng dữ liệu cho hai kết nối LE CoC đến hai các thiết bị ngoại vi khác nhau với các khoảng thời gian kết nối và tải trọng kích thước trong gói âm thanh định dạng và thời gian.
  • thiết lập thiết bị ngoại vi, đặt MaxRxOctets và Tham số MaxRxTime trong LL_LENGTH_REQ hoặc LL_LENGTH_RSP là giá trị bắt buộc nhỏ nhất cần thiết cho các quy cách này. Điều này cho phép tối ưu hoá trình lập lịch biểu khi tính toán khoảng thời gian cần có để nhận khung.

Trung tâm và ngoại vi nên hỗ trợ PHY 2MB dưới dạng được quy định trong quy cách BT 5.0. Trung tâm sẽ hỗ trợ các liên kết âm thanh của tối thiểu 64 kbit/s trên cả 1M và 2M PHY. Không được sử dụng PHY dải dài BLE.

CoC sử dụng các cơ chế Bluetooth tiêu chuẩn để mã hoá lớp liên kết và tần suất tăng đột biến.

Dịch vụ ASHA GATT

Một thiết bị ngoại vi sẽ triển khai tính năng Phát trực tuyến âm thanh cho thiết bị trợ thính (ASHA) Dịch vụ máy chủ GATT được mô tả bên dưới. Thiết bị ngoại vi sẽ quảng cáo dịch vụ này khi ở chế độ có thể phát hiện chung để cho phép nhận dạng trung tâm bồn lưu trữ âm thanh. Mọi hoạt động phát trực tuyến âm thanh năng lượng thấp sẽ yêu cầu mã hoá. Luồng âm thanh BLE bao gồm các đặc điểm sau:

Đặc điểm Thuộc tính Mô tả
Thuộc tính ReadOnly Đã đọc Hãy xem ReadOnlyProperties.
Kiểm soát âm thanh Viết và viết mà không có phản hồi Điểm điều khiển cho luồng âm thanh. Xem AudioControlPoint.
Điểm trạng thái âm thanh Đọc/Thông báo Trường báo cáo trạng thái cho điểm điều khiển âm thanh. Xem AudioStatusPoint.
Âm lượng Viết mà không có phản hồi Byte từ -128 đến 0 cho biết mức suy giảm sẽ áp dụng cho tín hiệu âm thanh phát trực tuyến, nằm trong khoảng từ -48 dB đến 0 dB. Chế độ cài đặt -128 sẽ được hiểu là bị tắt tiếng hoàn toàn, tức là mức âm lượng thấp nhất không bị tắt tiếng là -127, tương đương với mức suy giảm -47,625 dB. Ở cài đặt 0, một tín hiệu hình sin nối giữa các thanh ray sẽ thể hiện đầu vào 100 dBSPL tương đương với thiết bị trợ thính. Trung tâm sẽ phát trực tuyến danh nghĩa tỷ lệ đầy đủ và sử dụng biến này để đặt cấp độ bản trình bày mong muốn trong thiết bị ngoại vi.
LE_PSM_OUT Đã đọc PSM để kết nối kênh âm thanh. Sẽ được chọn từ dải động [BT Vol 3, Part A, Sec 4.22]

Những mã nhận dạng duy nhất (UUID) được chỉ định cho dịch vụ và đặc điểm:

Mã nhận dạng duy nhất (UUID) dịch vụ: {0xFDF0}

Đặc điểm Mã nhận dạng duy nhất (UUID)
Thuộc tính ReadOnly {6333651e-c481-4a3e-9169-7c902aad37bb}
Kiểm soát âm thanh {f0d4de7e-4a88-476c-9d9f-1937b0996cc0}
Trạng thái âm thanh {38663f1a-e711-4cac-b641-326b56404837}
Âm lượng {00e4ca9e-ab14-41e4-8823-f9e70c7e91df}
LE_PSM_OUT {2d410339-82b6-42aa-b34e-e2e01df8cc1a}

Ngoài dịch vụ ASHA GATT, thiết bị ngoại vi cũng sẽ triển khai Dịch vụ thông tin thiết bị để cho phép trung tâm phát hiện tên nhà sản xuất và tên thiết bị của thiết bị ngoại vi.

Thuộc tính ReadOnly

ReadOnlyProperties có các giá trị sau:

Byte Mô tả
0 Phiên bản – phải là 0x01
1 Hãy xem phần DeviceCapabilities.
2-9 Hãy xem HiSyncId.
10 Hãy xem FeatureMap.
11-12 Độ trễ hiển thị. Đây là thời gian tính bằng mili giây, kể từ khi thiết bị ngoại vi nhận khung âm thanh cho đến khi thiết bị ngoại vi kết xuất dữ liệu đầu ra. Những byte này có thể dùng để trì hoãn video và đồng bộ hoá với âm thanh.
13-14 Dành riêng để sử dụng trong tương lai. Khởi tạo giá trị bằng 0.
15-16 Mã nhận dạng bộ mã hoá và giải mã (Codec) được hỗ trợ. Đây là mặt nạ hơi có mã nhận dạng bộ mã hoá và giải mã được hỗ trợ. 1 tại một vị trí bit tương ứng với bộ mã hoá và giải mã được hỗ trợ. Ví dụ: 0x0002 chỉ ra rằng G.722 tại 16 kHz được hỗ trợ. Tất cả các bit khác sẽ được đặt thành 0.

DeviceCapability (Khả năng của thiết bị)

Bit Mô tả
0 Phía thiết bị (0: trái, 1: phải)
1 Cho biết thiết bị có hoạt động độc lập và nhận dữ liệu đơn âm hay không hoặc thiết bị là một phần của tập hợp (0: đơn âm, 1: hai âm)
2 Thiết bị hỗ trợ CSIS (0: không được hỗ trợ, 1: được hỗ trợ)
3-7 Đã đặt trước (đặt thành 0)

HiSyncID

Trường này phải là duy nhất cho tất cả các thiết bị hai tai nhưng đó phải là tương tự cho nhóm bên trái và bên phải.

Byte Mô tả
0-1 Mã nhận dạng của nhà sản xuất. Đó là Công ty Giá trị nhận dạng do BTSIG chỉ định.
2-7 Mã nhận dạng duy nhất xác định bộ thiết bị trợ thính. Bạn phải đặt mã nhận dạng này tương tự nhau ở cả thiết bị ngoại vi bên trái và bên phải.

Sơ đồ tính năng

Bit Mô tả
0 Hỗ trợ truyền trực tuyến đầu ra âm thanh LE CoC (Có/Không).
1-7 Đã đặt trước (đặt thành 0).

Mã nhận dạng bộ mã hoá và giải mã

Nếu bit được đặt thì bộ mã hoá và giải mã cụ thể đó được hỗ trợ.

Số ID&clients / bước thăm dò bit Bộ mã hoá và giải mã và tốc độ lấy mẫu Tốc độ bit bắt buộc Thời gian kết xuất khung hình Bắt buộc ở thiết bị trung tâm (C) hoặc thiết bị ngoại vi (P)
0 Đặt trước Đặt trước Đặt trước Đặt trước
1 G.722 @ 16 kHz 64 kbit/giây Biến C và P
2 – 15 là số đã được đặt trước.
0 cũng được đặt trước.

Kiểm soát âm thanh

Không thể sử dụng điểm điều khiển này khi LE CoC đang đóng. Xem Bắt đầu và dừng luồng âm thanh cho phần mô tả quy trình.

Mã vận hành Đối số Quy trình phụ GATT Mô tả
1 «Start»
  • uint8_t codec
  • uint8_t audiotype
  • int8_t volume
  • int8_t otherstate
Viết cùng với phản hồi và chờ thông báo trạng thái bổ sung qua Đặc điểm AudioStatusPoint. Hướng dẫn thiết bị ngoại vi đặt lại bộ mã hoá và khởi động phát lại khung hình 0. Trường bộ mã hoá và giải mã cho biết mã nhận dạng bộ mã hoá và giải mã cần sử dụng cho lần phát này. Ví dụ: trường bộ mã hoá và giải mã là "1" cho G.722 ở 16k Hz.

Trường bit loại âm thanh cho biết(các) loại âm thanh hiện tại trong luồng:
  • 0 – Không xác định
  • 1 - Nhạc chuông
  • 2 – Cuộc gọi điện thoại
  • 3 – Nội dung nghe nhìn
Trường otherstate cho biết liệu phía bên kia của âm thanh hai tai thiết bị đã được kết nối. Giá trị của trường là 1 khi thiết bị ngoại vi khác được kết nối, nếu không thì giá trị sẽ là 0.

Thiết bị ngoại vi sẽ không yêu cầu cập nhật kết nối trước Đã nhận được mã vận hành «Stop».
2 «Stop» Không có Viết kèm phản hồi và chờ thông báo trạng thái bổ sung qua Đặc điểm AudioStatusPoint. Hướng dẫn thiết bị ngoại vi dừng kết xuất âm thanh. Âm thanh mới trình tự thiết lập phải được bắt đầu sau điểm dừng này theo thứ tự để kết xuất lại âm thanh.
3 «Status»
  • uint8_t connected
Viết mà không trả lời Thông báo cho thiết bị ngoại vi được kết nối rằng có một bản cập nhật trạng thái trên thiết bị ngoại vi khác. Trường đã kết nối cho biết loại bản cập nhật:
  • 0 – Đã ngắt kết nối thiết bị ngoại vi khác
  • 1 – Thiết bị ngoại vi khác đã kết nối
  • 2 – Đã cập nhật thông số kết nối LE trên một trong hai kết nối

Điểm trạng thái âm thanh

Trường báo cáo trạng thái cho điểm điều khiển âm thanh

Mã hoạt động Mô tả
0 Trạng thái ổn
-1 Lệnh không xác định
-2 Tham số không hợp lệ

Quảng cáo về dịch vụ ASHA GATT

Mã nhận dạng duy nhất (UUID) của dịch vụ phải nằm trong gói quảng cáo. Trong quảng cáo hoặc bản quét khung phản hồi, các thiết bị ngoại vi phải có Dữ liệu dịch vụ:

Độ lệch byte Tên Mô tả
0 Thời lượng quảng cáo >= 0x09
1 Loại quảng cáo 0x16 (Dữ liệu dịch vụ – UUID 16 bit)
2-3 Mã nhận dạng duy nhất (UUID) của dịch vụ 0xFDF0 (little-endian)

Lưu ý: Đây là giấy tờ tuỳ thân tạm thời.
4 Phiên bản giao thức 0x01
5 Chức năng
  • 0 – bên trái (0) hoặc bên phải (1)
  • 1 – thiết bị đơn (0) hoặc kép (1).
  • 2 – thiết bị hỗ trợ CSIS (<0: not supported, 1: supported)
  • 3-7 – đặt trước. Các bit này phải bằng 0.
6-9 HiSyncID đã bị cắt bớt 4 byte quan trọng nhất của HiSyncId. Những byte này phải là phần ngẫu nhiên nhất của mã nhận dạng.

Các thiết bị ngoại vi phải có Tên cục bộ đầy đủ loại dữ liệu cho biết tên của thiết bị trợ thính. Tên này sẽ được sử dụng trên giao diện người dùng của thiết bị di động để người dùng có thể chọn thiết bị phù hợp. Tên không được thể hiện bên trái hoặc bên phải vì thông tin này được cung cấp trong DeviceCapability (Khả năng của thiết bị).

Nếu các thiết bị ngoại vi có cùng tên và kiểu dữ liệu dịch vụ ASHA loại khung (ADV hoặc SCAN RESP), sau đó chọn hai kiểu dữ liệu ("Complete Local Name" (Tên cục bộ hoàn chỉnh) và "Dữ liệu dịch vụ cho dịch vụ ASHA") sẽ xuất hiện trong cùng một khung. Thao tác này cho phép trình quét trên thiết bị di động lấy cả hai dữ liệu trong cùng một kết quả quét.

Trong quá trình ghép nối ban đầu, quan trọng là các thiết bị ngoại vi quảng cáo với tốc độ đủ nhanh để cho phép thiết bị di động nhanh chóng khám phá các thiết bị ngoại vi và liên kết với chúng.

Đồng bộ hoá thiết bị ngoại vi trái và phải

Để hoạt động với Bluetooth trên thiết bị di động Android, các thiết bị ngoại vi chịu trách nhiệm đảm bảo rằng chúng được đồng bộ hoá. Chế độ phát các thiết bị ngoại vi bên trái và bên phải được đồng bộ hoá trong bất cứ lúc nào. Cả hai thiết bị ngoại vi đều phải phát lại các mẫu âm thanh từ nguồn cùng một lúc.

Các thiết bị ngoại vi có thể đồng bộ hoá thời gian bằng cách sử dụng một chuỗi số này được thêm vào trước mỗi gói tải trọng âm thanh. Trung tâm đảm bảo rằng các gói âm thanh sẽ được phát cùng một lúc thời gian trên mỗi thiết bị ngoại vi có cùng số thứ tự. Trình tự số tăng lên một sau mỗi gói âm thanh. Mỗi trình tự là số có 8 bit, do đó các số trong chuỗi sẽ lặp lại sau 256 gói âm thanh. Vì mỗi kích thước gói âm thanh và tốc độ lấy mẫu đều là cố định cho mỗi kết nối, hai thiết bị ngoại vi có thể suy ra tín hiệu tương đối thời gian chơi. Để biết thêm thông tin về gói âm thanh, hãy xem Định dạng gói âm thanh và thời gian.

Thiết bị trung tâm hỗ trợ bằng cách cung cấp trình kích hoạt cho các thiết bị hai tai khi đồng bộ hoá có thể không xảy ra. Các điều kiện kích hoạt này thông báo cho mỗi thiết bị ngoại vi về trạng thái của thiết bị ngoại vi đã ghép nối bất cứ khi nào có thao tác có thể ảnh hưởng đến việc đồng bộ hoá. Các yếu tố kích hoạt là:

  • Trong lệnh «Start» của AudioControlPoint, trạng thái kết nối hiện tại của phía bên kia của mạng hai tai thiết bị nào được cung cấp.
  • Bất cứ khi nào có kết nối mạng, mất kết nối hoặc thao tác cập nhật thông số kết nối trên một thiết bị ngoại vi, lệnh «Status» của AudioControlPoint sẽ được gửi đến ở phía bên kia của thiết bị hai tai.

Định dạng và thời gian của gói âm thanh

Việc đóng gói khung âm thanh (các khối mẫu) vào các gói cho phép người nghe công cụ lấy thời gian từ các neo thời gian của lớp liên kết. Người nhận đơn giản hoá cách triển khai:

  • Khung âm thanh phải luôn khớp với khoảng thời gian kết nối. Ví dụ: nếu khoảng thời gian kết nối là 20 mili giây và tốc độ lấy mẫu là 16 kHz, thì khung âm thanh sẽ chứa 320 mẫu.
  • Tốc độ lấy mẫu trong hệ thống bị hạn chế ở mức bội số từ 8kHz đến luôn có số nguyên mẫu trong khung bất kể thời gian kết xuất khung hình hoặc khoảng thời gian kết nối.
  • Một byte trình tự sẽ thêm vào trước khung âm thanh. Byte thứ tự sẽ đếm bằng bao bọc và cho phép thiết bị ngoại vi phát hiện vùng đệm không khớp hoặc thiếu lưu lượng.
  • Một khung âm thanh phải luôn nằm vừa trong một gói LE duy nhất. Âm thanh khung hình sẽ được gửi dưới dạng một gói L2CAP riêng biệt. Quy mô của LE PDU LL sẽ là:
    kích thước tải trọng âm thanh + 1 (bộ đếm trình tự) + 6 (4 cho tiêu đề L2CAP, 2 cho SDU)
  • Sự kiện kết nối phải luôn đủ lớn để chứa 2 âm thanh gói tin và 2 gói tin trống cho một ACK dùng để dự trữ băng thông cho truyền lại. Lưu ý rằng gói âm thanh có thể bị phân đoạn theo bộ điều khiển Bluetooth của trung tâm. Thiết bị ngoại vi phải có thể nhận hơn 2 gói âm thanh phân đoạn cho mỗi sự kiện kết nối.

Để tạo sự linh hoạt cho trung tâm, độ dài gói tin G.722 không được đã chỉ định. Độ dài gói G.722 có thể thay đổi tuỳ theo kết nối mà trung tâm đặt ra.

Định dạng octet đầu ra G.722 tham chiếu Rec. ITU-T G.722 (09/2012) mục 1.4.4 "Bộ đa kênh"

Đối với tất cả các bộ mã hoá và giải mã mà thiết bị ngoại vi hỗ trợ, thiết bị ngoại vi phải hỗ trợ các tham số kết nối bên dưới. Đây chưa phải là danh sách đầy đủ cấu hình mà trung tâm có thể triển khai.

Bộ mã hoá và giải mã Tốc độ bit Khoảng thời gian kết nối Chiều dài CE (1M/2M PHY) Kích thước tải trọng âm thanh
G.722 @ 16 kHz 64 kbit/giây 20 mili giây 5000/3750 Hoa Kỳ 160 byte

Bắt đầu và dừng luồng âm thanh

Trước khi bắt đầu luồng âm thanh, trung tâm sẽ truy vấn các thiết bị ngoại vi và thiết lập một bộ mã hoá và giải mã mẫu số chung. Luồng rồi tiếp tục qua trình tự sau đây:

  1. PSM và RenderDelay sẽ được đọc (không bắt buộc). Các giá trị này có thể được trung tâm lưu vào bộ nhớ đệm.
  2. Kênh CoC L2CAP được mở – thiết bị ngoại vi sẽ cấp 8 tín dụng ban đầu.
  3. Đã phát hành bản cập nhật kết nối để chuyển đổi đường liên kết đến các thông số bắt buộc đối với bộ mã hoá và giải mã đã chọn. Trung tâm có thể thực hiện việc cập nhật kết nối này trước khi kết nối CoC ở bước trước.
  4. Cả máy chủ trung tâm và máy chủ ngoại vi đều chờ bản cập nhật hoàn tất sự kiện.
  5. Khởi động lại bộ mã hoá âm thanh rồi đặt lại số lượng chuỗi gói về 0. Lệnh «Start» có các tham số có liên quan sẽ phát hành trên AudioControlPoint. Trung tâm chờ thông báo về trạng thái thành công của lệnh «Start» trước đó từ thiết bị ngoại vi trước khi truyền trực tuyến. Thời gian chờ này cho thiết bị ngoại vi thời gian chuẩn bị luồng phát âm thanh. Trong khi truyền âm thanh, bản sao sẽ có mặt tại mọi sự kiện kết nối mặc dù độ trễ của bản sao có thể khác 0.
  6. Thiết bị ngoại vi lấy gói âm thanh đầu tiên từ hàng đợi bên trong (số thứ tự 0) và phát nội dung đó.

Trung tâm đưa ra lệnh <Stop » để đóng luồng âm thanh. Sau lệnh này, thiết bị ngoại vi không cần phải có sẵn trên mỗi sự kiện kết nối. Để bắt đầu lại quá trình truyền phát âm thanh, hãy đi qua trình tự trên, bắt đầu từ bước 5. Khi trung tâm không âm thanh trực tuyến, thiết bị này vẫn cần duy trì kết nối LE cho GATT luôn miễn phí.

Thiết bị ngoại vi sẽ không phát hành thông tin cập nhật kết nối đến trung tâm. Để tiết kiệm pin, trung tâm có thể cập nhật kết nối cho thiết bị ngoại vi khi thiết bị không truyền âm thanh trực tuyến.