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 độ 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. Ngoài ra, hãy xem Mạch thử nghiệm để biết môi trường thử nghiệm ví dụ.

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ể cài đặt đèn LED trên thiết bị có hệ số dạng nguyên mẫu. Để có độ chính xác cao hơn nữa 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ò 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 nguyên mẫu của mình, hãy thử các giải pháp thay thế 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 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 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 định kỳ phát xung đèn LED đồng thời phát âm thanh.

    Lưu ý: Để có được kết quả hữu ích, điều quan trọng là phải sử dụng đúng API trong ứng dụng thử nghiệm để bạn đang thực hiện đường dẫn đầu ra âm thanh nhanh. 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 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ử 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, mỗi đèn LED và cảm biến ánh sáng đều có độ trễ tương đối thấp ở mức một phần nghìn giây trở xuống, đủ thấp để bỏ qua.

Đo độ trễ khứ hồi

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

kiểm tra Larsen

Một trong những bài kiểm tra độ trễ đơn giản 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 sơ bộ 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 phép thử này không hữu ích cho việc phân tích chi tiết do bản chất của phép thử, nhưng nó có thể hữu ích để hiệu chỉnh các phép thử 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 rất quan trọng khi độ trễ đầu ra và độ trễ đầu vào độc lập. Vì vậy, phương pháp này không được khuyến nghị để đo riêng lẻ độ trễ đầu ra hoặc giá trị độ trễ đầu vào chính xác, nhưng có thể hữu ích để thiết lập các ước tính sơ bộ.

Độ trễ đầu ra của loa trên thiết bị có thể lớn hơn đáng kể so với độ trễ đầu ra của đầ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 đã thu được qua loa.
  2. Tạo âm thanh bên ngoài, chẳng hạn như gõ nhẹ vào micrô bằng bút chì. 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í hoạt động của ứ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 loopback của 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 triển khai ví dụ tại slesTestFeedback.cpp . Đây là một ứng dụng dòng lệnh và được xây dựng bằng môi trường xây dựng nền tảng; tuy nhiên, việc áp dụng mã cho các môi trường khác phải đơn giản. Bạn cũng sẽ cần mã FIFO không chặn nằm trong thư viện audio_utils .

Audio Loopback Dongle

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

phép đo khứ hồi

Hình 1. Phép đo 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 bài kiểm tra 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 phương pháp đèn LED và máy hiện sóng, 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, phát xung đầu vào GPIO cùng lúc với việc bạn trình bày 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 bất kỳ phần nào của nền tảng chặn chuỗi âm thanh SCHED_FIFO trong hơn một 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ụ từ hiệu suất tổng thể dễ đoán hơn.

Âm thanh dưới mức, khi chúng xảy ra, 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 tiếp. 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 thử nghiệm căng thẳng đến mức nằm ngoài mục tiêu thiết kế. Ví dụ: việc thực hiện một báo cáo lỗi đặt một lượng lớn lên hệ thống đến mức có thể chấp nhận được lỗi chạy ngầm trong trường hợp đó.

Khi thử nghiệm cho underrun:

  • Đị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, 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 WiFi, bật hoặc tắt Bluetooth, bật hoặc tắt điện thoại và radio dữ liệu.
  • Chọn bản nhạc tương đối yên tĩnh mà bạn rất quen thuộc và dễ nghe thấy tiếng ngầm.
  • Sử dụng tai nghe có dây để có thêm độ nhạy.
  • Hãy cho bản thân những khoảng thời gian nghỉ ngơi để không bị "mỏi tai".

Khi bạn tìm ra nguyên nhân cơ bản của việc chạy ngầm, 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 giảm số lượng và kích thước bộ đệm trước khi phân tích lỗi tràn và khắc phục nguyên nhân gây ra lỗi tràn 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 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 gọi là "số liệu 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 đối với từng hỗn hợp âm thanh và chu kỳ I/O. Lý tưởng nhất là tất cả các phép đo thời gian phải gần 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 mức tối đa cao, thì đây là dấu hiệu của sự cố, có thể là độ trễ lập lịch trình cao hoặc thời gian tắt ngắt. Phần đuôi của kết quả đầu ra đặc biệt hữu ích vì nó làm nổi bật độ biến thiên vượt quá +/- 3 độ lệch chuẩn.