Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release
thay vì aosp-main
để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Đo lường độ 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.
Độ trễ là một chỉ số quan trọng về hiệu suất hệ thống. Mặc dù có nhiều loại chỉ số độ trễ âm thanh, nhưng một chỉ số hữu ích và dễ hiểu là độ trễ trọn vòng, được xác định là thời gian cần thiết để tín hiệu âm thanh đi vào đầu vào của thiết bị di động, được một ứng dụng chạy trên bộ xử lý ứng dụng xử lý và thoát ra đầu ra.
Hình 1. Độ trễ âm thanh trọn vòng trên thiết bị: Tđầu ra – Tđầu vào
Trang này cung cấp thông tin đo lường độ trễ âm thanh trọn vòng cho một số thiết bị Nexus/Pixel và phiên bản nền tảng Android.
Lý do chúng tôi đo lường độ trễ
Google đo lường và báo cáo độ trễ để nhà phát triển ứng dụng Android có được dữ liệu cần thiết nhằm đưa ra quyết định sáng suốt về độ trễ có sẵn trên các thiết bị thực tế. Bằng cách chia sẻ số liệu về độ trễ cho một số thiết bị Nexus và Pixel, chúng tôi hy vọng có thể khuyến khích toàn bộ cộng đồng Android đo lường, xuất bản và giảm độ trễ trên tất cả thiết bị Android. Hãy cùng chúng tôi cam kết giảm độ trễ âm thanh!
Tác động của ứng dụng đối với độ trễ
Quá trình xử lý tín hiệu có thể thêm các loại độ trễ sau vào độ trễ:
- Thuật toán. Độ trễ này là cố hữu và không thay đổi theo CPU. Ví dụ: độ trễ do bộ lọc phản hồi xung hữu hạn (FIR) thêm vào.
- Tính toán. Độ trễ này liên quan đến số chu kỳ CPU bắt buộc. Ví dụ: việc giảm độ mạnh của tín hiệu thường được thực hiện bằng một phép nhân có số chu kỳ khác nhau tuỳ thuộc vào CPU.
Cách chúng tôi đo lường
Chúng tôi đã thực hiện các phép đo được liệt kê trên trang này bằng cách sử dụng đầu nối âm thanh vòng lặp của Dr. Rick O'Rang và kiểm thử phản hồi âm thanh (hiệu ứng Larsen). Các phép đo giả định rằng quá trình xử lý tín hiệu của ứng dụng không làm tăng độ trễ thuật toán và độ trễ tính toán gần bằng 0.
Chúng tôi đo độ trễ trọn vòng qua đầu nối tai nghe vì một số lý do:
Hình 2. Độ trễ trọn vòng qua đầu nối tai nghe: Tđầu ra – Tđầu vào
- Các ứng dụng âm nhạc quan trọng (chẳng hạn như xử lý giọng nói và guitar) sử dụng đầu nối tai nghe.
- Việc đo độ trễ khứ hồi của micrô và loa trên thiết bị có thể gây phiền toái, vì khó giữ cho vòng phản hồi ở ngoài trời không bị dao động không kiểm soát.
- Các bộ chuyển đổi trên thiết bị có kích thước nhỏ và phải hy sinh độ đáp ứng tần số để đạt được kích thước nhỏ. Để bù lại, quá trình xử lý tín hiệu kỹ thuật số được áp dụng nhưng làm tăng độ trễ thuật toán cho đường dẫn trên thiết bị.
Có những trường hợp độ trễ của micrô và loa trên thiết bị có ý nghĩa, nhưng thường là theo một hướng, chứ không phải hai chiều. Các kỹ thuật đo lường độ trễ một chiều được mô tả trong phần Đo lường độ trễ đầu ra và Đo lường độ trễ đầu vào.
Ví dụ về kết quả đo lường
Các số liệu đo lường được liệt kê bên dưới là dành riêng cho một số bản dựng. Các thiết bị được liệt kê theo thứ tự gần đúng của bản phát hành ban đầu và theo phiên bản nền tảng; bạn cũng có thể xem độ trễ trong biểu đồ. Ứng dụng kiểm thử sử dụng API âm thanh gốc của Android dựa trên OpenSL ES.
Mô hình |
Phiên bản nền tảng |
Số bản dựng
|
Tốc độ lấy mẫu (Hz) |
Dung lượng bộ nhớ đệm (khung) |
Dung lượng bộ nhớ đệm (mili giây) |
Độ trễ trọn vòng (mili giây) ± một bộ đệm |
Nexus One |
2.3.6 |
GRK39F |
44100 |
768 |
17,4 |
345 |
Nexus S |
2.3.6 |
GRK39F |
44100 |
1024 |
23,2 |
260 |
Nexus S |
4.0.4 |
IMM76D |
44100 |
1024 |
23,2 |
260 |
Nexus S |
4.1.2 |
JZO54K |
44100 |
880 |
20 |
210 |
Galaxy Nexus |
4.0.1 |
ITL41D |
44100 |
976 |
22.1 |
270 |
Galaxy Nexus |
4.3 |
JWR66Y |
44100 |
144 |
3.3 |
130 |
Nexus 4 |
4.2.2 |
JDQ39E |
48000 |
240 |
5 |
195 |
Nexus 4 |
5.1 |
LMY47O |
48000 |
240 |
5 |
58 |
Nexus 10 |
5.0.2 |
LRX22G |
44100 |
256 |
5.8 |
36 |
Nexus 10 |
5.1 |
LMY47D |
44100 |
256 |
5.8 |
35 |
Nexus 7 2013 |
4.3 |
JSR78D |
48000 |
240 |
5 |
149 |
Nexus 7 2013 |
4.4 |
KRT16S |
48000 |
240 |
5 |
85 |
Nexus 7 2013 |
5.0.2 |
LRX22G |
48000 |
240 |
5 |
64 |
Nexus 7 2013 |
5.1 |
LMY47O |
48000 |
240 |
5 |
55 |
Nexus 7 2013 |
6.0 |
MRA58K |
48000 |
240 |
5 |
55 |
Nexus 5 |
4.4.4 |
KTU84P |
48000 |
240 |
5 |
95 |
Nexus 5 |
5.0.0 |
LRX21O |
48000 |
240 |
5 |
47 |
Nexus 5 |
5.1 |
LMY47I |
48000 |
240 |
5 |
42 |
Nexus 5 |
6.0 |
MRA58K |
48000 |
192 |
4 |
38 |
Nexus 9 |
5.0.0 |
LRX21L |
48000 |
256 |
5.3 |
35 |
Nexus 9 |
5.0.1 |
LRX22C |
48000 |
256 |
5.3 |
38 |
Nexus 9 |
5.1.1 |
LMY47X |
48000 |
256 |
5.3 |
32 |
Nexus 9 |
6.0 |
MRA58K |
48000 |
128 |
2.6 |
15 |
Nexus 6 |
5.0.1 |
LRX22C |
48000 |
240 |
5 |
65 |
Nexus 6 |
5.1 |
LMY47I |
48000 |
240 |
5 |
42 |
Nexus 6 |
6.0 |
MRA58K |
48000 |
192 |
4 |
33 |
Nexus 5X |
6.0 |
MDA89E |
48000 |
192 |
4 |
18 |
Nexus 5X |
8.0.0 |
OPR4.170623.020 |
48000 |
192 |
4 |
18 |
Nexus 5X |
8.1.0 |
OPM2.171019.029.C1 |
48000 |
192 |
4 |
18 |
Nexus 6P |
6.0 |
MDA89D |
48000 |
192 |
4 |
18 |
Nexus 6P |
8.0.0 |
OPR5.170623.014 |
48000 |
192 |
4 |
18 |
Nexus 6P |
8.1.0 |
OPM5.171019.019 |
48000 |
192 |
4 |
18 |
Pixel |
7.1.2 |
NHG47L |
48000 |
192 |
4 |
18 |
Pixel |
8.0.0 |
OPR3.170623.013 |
48000 |
192 |
4 |
18 |
Pixel |
8.1.0 |
OPM1.171019.021 |
48000 |
192 |
4 |
18 |
Pixel XL |
7.1.2 |
NHG47L |
48000 |
192 |
4 |
18 |
Pixel XL |
8.0.0 |
OPR3.170623.013 |
48000 |
192 |
4 |
18 |
Hình 3. Độ trễ trọn vòng
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-03-26 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-03-26 UTC."],[],[],null,["# Audio latency measurements\n\n[Latency](http://en.wikipedia.org/wiki/Latency_%28engineering%29)\nis an important system performance metric. While many kinds of\n[audio latency](/docs/core/audio/latency/latency) metrics exist, one useful and\nwell-understood metric is\n[round-trip latency](/docs/core/audio/latency/measure#measuringRoundTrip),\ndefined as the time it takes for an audio signal to enter the input of a mobile\ndevice, be processed by an app running on the application processor, and exit\nthe output.\n\n**Figure 1.** Round-trip audio latency on\ndevice: T~output~ - T~input~\n\nThis page provides round-trip audio latency measurements for select\nNexus/Pixel devices and Android platform versions.\n\nWhy we measure latency\n----------------------\n\nGoogle measures and reports latency so Android application developers have\nthe data they need to make informed decisions about available latency on actual\ndevices. By sharing latency numbers for select Nexus and Pixel devices, we hope\nto encourage the entire Android community to measure, publish, and reduce\nlatency on *all* Android devices. Please join us in our commitment to\nreducing audio latency!\n\nApp impact on latency\n---------------------\n\nSignal processing can add the following types of delay to latency:\n\n- **Algorithmic** . This delay is inherent and does not vary with the CPU. An example is the delay added by a [finite impulse\n response](http://en.wikipedia.org/wiki/Finite_impulse_response) (FIR) filter.\n- **Computational**. This delay is related to the number of required CPU cycles. For example, attenuation of a signal is usually done by a multiplication operation that takes a varying number of cycles depending on the CPU.\n\nHow we measure\n--------------\n\nWe made the measurements listed on this page using the\n[Dr. Rick O'Rang audio loopback dongle](/docs/core/audio/latency/loopback) and an\n[audio feedback (Larsen effect)\ntest](/docs/core/audio/latency/measure#larsenTest). Measurements assume the application signal processing adds zero\nalgorithmic delay and near-zero computational delay.\n\nWe measure round-trip latency via the headset connector for several reasons:\n\n**Figure 2.** Round-trip latency via headset\nconnector: T~output~ - T~input~\n\n- Important music applications (such as guitar and voice processing) use the headset connector.\n- Measuring round-trip latency of the on-device microphone and speaker can be cumbersome, as it is difficult to keep a feedback loop in open air from entering uncontrolled oscillation.\n- On-device transducers are small and sacrifice frequency response to achieve their small size. To compensate, digital signal processing is applied but increases algorithmic delay for the on-device path.\n\nThere are cases where on-device microphone and speaker latencies *do*\nmatter, but they are usually for one direction, not round-trip. Techniques for\nmeasuring unidirectional latency are described at\n[Measuring Output Latency](/docs/core/audio/latency/measure#measuringOutput)\nand\n[Measuring Input Latency](/docs/core/audio/latency/measure#measuringInput).\n\nExample measurements\n--------------------\n\nThe measurements listed below are specific to a\n[build number](/docs/setup/build-numbers). Devices are listed in\napproximate order of initial release and by platform version; you can also\n[view latencies in a chart](#chart). The test application uses the\nAndroid native audio API based on OpenSL ES.\n\n| Model | Platform version | Build number | Sample rate (Hz) | Buffer size (frames) | Buffer size (ms) | Round-trip latency (ms) ± one buffer |\n|--------------|------------------|--------------------|------------------|----------------------|------------------|--------------------------------------|\n| Nexus One | 2.3.6 | GRK39F | 44100 | 768 | 17.4 | 345 |\n| Nexus S | 2.3.6 | GRK39F | 44100 | 1024 | 23.2 | 260 |\n| Nexus S | 4.0.4 | IMM76D | 44100 | 1024 | 23.2 | 260 |\n| Nexus S | 4.1.2 | JZO54K | 44100 | 880 | 20 | 210 |\n| Galaxy Nexus | 4.0.1 | ITL41D | 44100 | 976 | 22.1 | 270 |\n| Galaxy Nexus | 4.3 | JWR66Y | 44100 | 144 | 3.3 | 130 |\n| Nexus 4 | 4.2.2 | JDQ39E | 48000 | 240 | 5 | 195 |\n| Nexus 4 | 5.1 | LMY47O | 48000 | 240 | 5 | 58 |\n| Nexus 10 | 5.0.2 | LRX22G | 44100 | 256 | 5.8 | 36 |\n| Nexus 10 | 5.1 | LMY47D | 44100 | 256 | 5.8 | 35 |\n| Nexus 7 2013 | 4.3 | JSR78D | 48000 | 240 | 5 | 149 |\n| Nexus 7 2013 | 4.4 | KRT16S | 48000 | 240 | 5 | 85 |\n| Nexus 7 2013 | 5.0.2 | LRX22G | 48000 | 240 | 5 | 64 |\n| Nexus 7 2013 | 5.1 | LMY47O | 48000 | 240 | 5 | 55 |\n| Nexus 7 2013 | 6.0 | MRA58K | 48000 | 240 | 5 | 55 |\n| Nexus 5 | 4.4.4 | KTU84P | 48000 | 240 | 5 | 95 |\n| Nexus 5 | 5.0.0 | LRX21O | 48000 | 240 | 5 | 47 |\n| Nexus 5 | 5.1 | LMY47I | 48000 | 240 | 5 | 42 |\n| Nexus 5 | 6.0 | MRA58K | 48000 | 192 | 4 | 38 |\n| Nexus 9 | 5.0.0 | LRX21L | 48000 | 256 | 5.3 | 35 |\n| Nexus 9 | 5.0.1 | LRX22C | 48000 | 256 | 5.3 | 38 |\n| Nexus 9 | 5.1.1 | LMY47X | 48000 | 256 | 5.3 | 32 |\n| Nexus 9 | 6.0 | MRA58K | 48000 | 128 | 2.6 | 15 |\n| Nexus 6 | 5.0.1 | LRX22C | 48000 | 240 | 5 | 65 |\n| Nexus 6 | 5.1 | LMY47I | 48000 | 240 | 5 | 42 |\n| Nexus 6 | 6.0 | MRA58K | 48000 | 192 | 4 | 33 |\n| Nexus 5X | 6.0 | MDA89E | 48000 | 192 | 4 | 18 |\n| Nexus 5X | 8.0.0 | OPR4.170623.020 | 48000 | 192 | 4 | 18 |\n| Nexus 5X | 8.1.0 | OPM2.171019.029.C1 | 48000 | 192 | 4 | 18 |\n| Nexus 6P | 6.0 | MDA89D | 48000 | 192 | 4 | 18 |\n| Nexus 6P | 8.0.0 | OPR5.170623.014 | 48000 | 192 | 4 | 18 |\n| Nexus 6P | 8.1.0 | OPM5.171019.019 | 48000 | 192 | 4 | 18 |\n| Pixel | 7.1.2 | NHG47L | 48000 | 192 | 4 | 18 |\n| Pixel | 8.0.0 | OPR3.170623.013 | 48000 | 192 | 4 | 18 |\n| Pixel | 8.1.0 | OPM1.171019.021 | 48000 | 192 | 4 | 18 |\n| Pixel XL | 7.1.2 | NHG47L | 48000 | 192 | 4 | 18 |\n| Pixel XL | 8.0.0 | OPR3.170623.013 | 48000 | 192 | 4 | 18 |\n\n**Figure 3.** Round trip latencies"]]