Đo độ trễ âm thanh

Trang này mô tả các phương pháp phổ biến để đo độ trễ đầu vào và đầu ra.

Đo độ trễ đầu ra

Có một số kỹ thuật có thể dùng để đo độ trễ đầu ra, với mức độ chính xác và dễ chạy khác nhau, như mô tả dưới đây. Ngoài ra, hãy xem Mạch kiểm thử để biết ví dụ về môi trường kiểm thử.

Kiểm thử đèn LED và dao động ký

Quy trình kiểm thử này đo lường độ trễ liên quan đến chỉ báo LED của thiết bị. Nếu thiết bị sản xuất không có đèn LED, bạn có thể cài đặt đèn LED trên thiết bị có kiểu dáng nguyên mẫu. Để có độ chính xác cao hơn trên các thiết bị nguyên mẫu có mạch hở, hãy kết nối trực tiếp một đầu dò của máy hiện sóng với đèn LED để bỏ qua độ trễ của cảm biến ánh sáng.

Nếu bạn không thể cài đặt đèn LED trên thiết bị sản xuất hoặc thiết bị nguyên mẫu, hãy thử các giải pháp sau:

  • Sử dụng chân Đầu vào/Đầu ra đa năng (GPIO) cho cùng một mục đích.
  • Sử dụng JTAG hoặc một cổng gỡ lỗi khác.
  • Sử dụng đèn nền màn hình. Điều này có thể gây rủi ro vì đèn nền có thể có độ trễ không đáng kể và có thể góp phần làm cho độ trễ đọc không chính xác.

Cách tiến hành kiểm thử này:

  1. Chạy một ứng dụng định kỳ phát xung LED cùng lúc với việc phát âm thanh.

    Lưu ý: Để có được kết quả hữu ích, điều quan trọng là bạn phải sử dụng đúng API trong ứng dụng kiểm thử để có thể sử dụng đường dẫn đầu ra âm thanh nhanh. Xem phần Thiết kế để giảm độ trễ cho chế độ nền.

  2. Đặt cảm biến ánh sáng bên cạnh đèn LED.
  3. Kết nối đầu dò của máy hiện sóng hai kênh với cả giắc cắm tai nghe có dây (đầu ra dòng) và cảm biến ánh sáng.
  4. Sử dụng máy hiện sóng để đo lường sự khác biệt về thời gian giữa việc quan sát tín hiệu đầu ra của đường truyền so với tín hiệu của cảm biến ánh sáng.

Sự khác biệt về thời gian là độ trễ đầu ra âm thanh gần đúng, giả sử độ trễ của LED và độ trễ của cảm biến ánh sáng đều bằng 0. Thông thường, đèn LED và cảm biến ánh sáng đều có độ trễ tương đối thấp, ở mức 1 mili giây trở xuống, đủ thấp để có thể bỏ qua.

Đo độ trễ trọn vòng

Độ trễ trọn vòng là tổng của độ trễ đầu ra và độ trễ đầu vào.

Kiểm thử Larsen

Một trong những bài kiểm tra độ trễ dễ dàng nhất là kiểm tra phản hồi âm thanh (hiệu ứng Larsen). Phương pháp này cung cấp một phép đo thô về độ trễ đầu ra và đầu vào kết hợp bằng cách tính thời gian của một vòng lặp phản hồi xung. Bản thân kiểm thử này không hữu ích lắm cho việc phân tích chi tiết do bản chất của kiểm thử, nhưng có thể hữu ích cho việc điều chỉnh các kiểm thử khác và thiết lập giới hạn trên.

Phương thức này không phân tích thời gian của các thành phần, điều này rất quan trọng khi độ trễ đầu ra và độ trễ đầu vào độc lập với nhau. Vì vậy, bạn không nên sử dụng phương pháp này để đo lường riêng giá trị độ trễ đầu ra hoặc độ trễ đầu vào một cách chính xác, nhưng có thể hữu ích để thiết lập giá trị ước tính sơ bộ.

Độ trễ đầu ra đến loa trên thiết bị có thể lớn hơn đáng kể so với độ trễ đầu ra đến đầu nối tai nghe. Điều này là do tính năng hiệu chỉnh và bảo vệ loa.

Cách tiến hành kiểm thử này:

  1. Chạy một ứng dụng thu âm thanh từ micrô và ngay lập tức phát dữ liệu đã thu qua loa.
  2. Tạo âm thanh bên ngoài, chẳng hạn như gõ bút chì vào micrô. Độ nhiễu này tạo ra một vòng phản hồi. Ngoài ra, bạn có thể chèn một xung vào vòng lặp bằng phần mềm.
  3. Đo lường thời gian giữa các xung phản hồi để lấy tổng độ trễ đầu ra, độ trễ đầu vào và hao tổn ứng dụng.

Dưới đây là một số tài nguyên để tải ứng dụng cho thử nghiệm Larsen:

  • Ứng dụng loopback của Dr. Rick O'Rang là một ứng dụng Android để kiểm thử phản hồi âm thanh. Bạn có thể tải ứng dụng xuống từ Google Play hoặc tải mã nguồn xuống từ GitHub.
  • Chúng tôi cũng đã xuất bản một ví dụ về cách triển khai tại slesTestFeedback.cpp. Đây là một ứng dụng dòng lệnh và được tạo bằng môi trường bản dựng nền tảng; tuy nhiên, bạn có thể dễ dàng áp dụng mã cho các môi trường khác. Bạn cũng sẽ cần mã FIFO không chặn nằm trong thư viện audio_utils.

Thiết bị phần cứng âm thanh loopback

Đầu nối vòng lặp âm thanh Dr. Rick O'Rang rất hữu ích để đo độ trễ trọn vòng qua đầu nối tai nghe. Hình ảnh dưới đây minh hoạ kết quả của việc chèn một xung vào vòng lặp một lần, sau đó cho phép vòng lặp phản hồi dao động. Chu kỳ của dao động là độ trễ trọn vòng. Thiết bị, bản phát hành phần mềm và điều kiện kiểm thử cụ thể không được chỉ định ở đây. Không được ngoại suy kết quả hiển thị.

đo lường lượt truy cập trả về

Hình 1. Đo lường trọn vòng

Bạn có thể phải rút cáp USB để giảm tiếng ồn và điều chỉnh mức âm lượng để có được độ dao động ổn định.

Đo độ trễ đầu vào

Độ trễ đầu vào khó đo lường hơn độ trễ đầu ra. Các bài kiểm thử sau đây có thể giúp ích cho bạn.

Một phương pháp là trước tiên, hãy xác định độ trễ đầu ra bằng phương pháp LED và dao động ký, sau đó sử dụng thử nghiệm phản hồi âm thanh (Larsen) để xác định tổng độ trễ đầu ra và độ trễ đầu vào. Sự khác biệt giữa hai phép đo này là độ trễ đầu vào.

Một kỹ thuật khác là sử dụng chân GPIO trên thiết bị nguyên mẫu. Bên ngoài, hãy tạo xung đầu vào GPIO cùng lúc với việc bạn hiển thị tín hiệu âm thanh cho thiết bị. Chạy một ứng dụng so sánh sự khác biệt về thời gian đến của tín hiệu GPIO và dữ liệu âm thanh.

Giảm độ trễ

Để đạt được độ trễ âm thanh thấp, hãy đặc biệt chú ý đến việc lên lịch, xử lý ngắt, quản lý nguồn và thiết kế trình điều khiển thiết bị trong toàn bộ hệ thống. Mục tiêu của bạn là ngăn mọi phần của nền tảng chặn luồng âm thanh SCHED_FIFO trong hơn vài mili giây. Bằng cách áp dụng phương pháp có hệ thống như vậy, bạn có thể giảm độ trễ âm thanh và nhận được lợi ích phụ là hiệu suất tổng thể dễ dự đoán hơn.

Khi xảy ra, tình trạng thiếu âm thanh thường chỉ phát hiện được trong một số điều kiện nhất định hoặc chỉ ở các điểm chuyển đổi. Hãy thử gây áp lực cho hệ thống bằng cách chạy các ứng dụng mới và cuộn nhanh qua nhiều màn hình. Tuy nhiên, hãy lưu ý rằng một số điều kiện kiểm thử quá căng thẳng đến mức vượt quá mục tiêu thiết kế. Ví dụ: việc lấy báo cáo lỗi sẽ gây ra tải rất lớn cho hệ thống, trong trường hợp đó, bạn có thể chấp nhận tình trạng thiếu thời gian chạy.

Khi kiểm thử tình trạng thiếu dữ liệu:

  • Định cấu hình bất kỳ DSP nào sau bộ xử lý ứng dụng để DSP đó thêm độ trễ tối thiểu.
  • Chạy kiểm thử trong nhiều điều kiện khác nhau, chẳng hạn như bật hoặc tắt màn hình, cắm hoặc rút USB, bật hoặc tắt Wi-Fi, bật hoặc tắt Bluetooth, bật hoặc tắt điện thoại và đài dữ liệu.
  • Chọn một bản nhạc tương đối yên tĩnh mà bạn rất quen thuộc và dễ nghe thấy tình trạng thiếu dữ liệu.
  • Sử dụng tai nghe có dây để tăng độ nhạy.
  • Hãy nghỉ ngơi để không bị "mệt tai".

Sau khi bạn tìm thấy nguyên nhân cơ bản gây ra tình trạng thiếu dữ liệu, hãy giảm số lượng và kích thước bộ đệm để tận dụng điều này. Phương pháp vội vàng giảm số lượng và kích thước vùng đệm trước khi phân tích tình trạng thiếu dữ liệu và khắc phục nguyên nhân gây ra tình trạng thiếu dữ liệu chỉ dẫn đến sự thất vọng.

Công cụ

systrace là một công cụ đa năng tuyệt vời để chẩn đoán các sự cố về hiệu suất ở cấp hệ thống.

Kết quả của dumpsys media.audio_flinger cũng chứa một phần hữu ích có tên là "thống kê di chuyển đơn giản". Bảng này tóm tắt sự biến thiên của thời gian đã trôi qua cho mỗi lần kết hợp âm thanh và chu kỳ I/O. Tốt nhất là tất cả các phép đo thời gian phải gần bằng thời gian chu kỳ trung bình hoặc danh nghĩa. Nếu bạn thấy giá trị tối thiểu rất thấp hoặc giá trị tối đa rất cao, thì đây là dấu hiệu cho thấy có vấn đề, có thể là độ trễ lên lịch cao hoặc thời gian vô hiệu hoá gián đoạn. Phần đuôi của kết quả đặc biệt hữu ích, vì nó làm nổi bật sự biến thiên ngoài +/- 3 độ lệch chuẩn.