Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Đo độ trễ âm thanh

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

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

Đo lường độ trễ đầu ra

Có một số kỹ thuật có sẵn để đo độ trễ đầu ra, với các mức độ chính xác và dễ chạy khác nhau, được mô tả bên dưới. Cũng xem mạch Thử nghiệm để biết ví dụ về môi trường thử nghiệm.

Kiểm tra đèn LED và máy hiện sóng

Thử nghiệm này đo độ trễ liên quan đến chỉ báo LED của thiết bị. Nếu thiết bị sản xuất của bạn không có đèn LED, bạn có thể lắp đèn LED trên thiết bị dạng nguyên mẫu. Để có độ chính xác tốt hơn nữa trên các thiết bị nguyên mẫu có mạch điện tiếp xúc, hãy kết nối trực tiếp một đầu dò 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 của mình, hãy thử các cách giải quyết sau:

  • Sử dụng chân Đầu vào / Đầu ra Mục đích Chung (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ể rủi ro vì đèn nền có thể có độ trễ không đáng kể và có thể góp phần vào việc đọc độ trễ không chính xác.

Để tiến hành thử nghiệm này:

  1. Chạy một ứng dụng làm đèn LED phát xung định kỳ đồng thời khi nó phát ra âm thanh.

    Lưu ý: Để nhận được kết quả hữu ích, điều quan trọng là sử dụng các API chính xác trong ứng dụng thử nghiệm để bạn đang thực hiện đường dẫn đầu ra âm thanh nhanh chóng. Xem Thiết kế để Giảm Độ trễ cho nền.

  2. Đặt một cảm biến ánh sáng bên cạnh đèn LED.
  3. Kết nối các đầ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 đường truyền) và cảm biến ánh sáng.
  4. Sử dụng máy hiện sóng để đo chênh lệch thời gian giữa việc quan sát tín hiệu đầu ra đường so với tín hiệu 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ử rằng độ trễ của đèn LED và độ trễ của cảm biến ánh sáng đều bằng không. Thông thường, đèn LED và cảm biến ánh sáng đều có độ trễ tương đối thấp theo thứ tự từ một phần nghìn giây trở xuống, đủ thấp để bỏ qua.

Đo độ trễ khứ hồi

Độ trễ của chuyến đi khứ hồi là tổng độ trễ đầu ra và độ trễ đầu vào.

Kiểm tra Larsen

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

Phương pháp này không chia nhỏ thời gian thành phần, điều này quan trọng khi độ trễ đầu ra và độ trễ đầu vào là độc lập. Vì vậy, phương pháp này không được khuyến nghị để đo độ trễ đầu ra chính xác hoặc các giá trị độ trễ đầu vào riêng biệt, nhưng có thể hữu ích để thiết lập các ướ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 tới đầu nối tai nghe. Điều này là do hiệu chỉnh và bảo vệ loa.

Để tiến hành thử nghiệm này:

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

Dưới đây là một số tài nguyên để tải ứng dụng cho bài kiểm tra Larsen:

  • Ứng dụng lặp lại Tiến sĩ Rick O'Rang là một ứng dụng Android để kiểm tra phản hồi âm thanh. Bạn có thể tải xuống ứng dụng từ Google Play hoặc lấy mã nguồn từ GitHub .
  • Chúng tôi cũng đã xuất bản một ví dụ về triển khai tại slesTestFeedback.cpp . Đây là một ứng dụng dòng lệnh và được xây dựng bằng cách sử dụng môi trường xây dựng nền tảng; tuy nhiên, cần đơn giản để á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 .

Audio Loopback Dongle

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

đo lường khứ hồi

Hình 1. Đo hành trình khứ hồi

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

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

Độ trễ đầu vào khó đo hơn độ trễ đầu ra. Các thử nghiệm sau đây có thể hữu ích.

Một cách tiếp cận là trước tiên xác định độ trễ đầu ra bằng cách sử dụng phương pháp đèn LED và máy hiện sóng, sau đó sử dụng kiểm tra 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, xung một đầu vào GPIO cùng lúc mà bạn đưa ra 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 dữ liệu âm thanh và tín hiệu GPIO.

Giảm độ trễ

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

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

Khi kiểm tra các lớp dưới:

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

Khi bạn tìm thấy nguyên nhân cơ bản của việc chạy thiếu, hãy giảm số lượng và kích thước bộ đệm để tận dụng điều này. Cách tiếp cận háo hức của việc giảm số lượng và kích thước bộ đệm trước khi phân tích số lượng thiếu hụt và khắc phục nguyên nhân của việc chạy thiếu chỉ dẫn đến sự thất vọng.

Công cụ

systrace là một công cụ có mục đích chung tuyệt vời để chẩn đoán trục trặc hiệu suất cấp hệ thống.

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