이 글의 원문은 여기서 확인 가능하며 블로그 리뷰에는 노현석(GDE)님이 참여해주셨습니다.
이번 게시물에서는 최근 오디오 개발자를 위해 Android 생태계에서 변경된 내용과 인기있는 Android 기기의 오디오 지연 시간을 살펴보고, 실시간 오디오 앱에 대한 Android의 적합성을 논하고자 합니다.
변경 내용
지난 4년 동안 저희는 오디오 지연 시간을 개선하기 위해 아래와 같이 여러 조치를 마련해왔습니다.
지연 시간 감소(Latency reduction)
이러한 조치를 통해 오디오 지연 시간에 관한 기기 제조업체의 관점이 새롭게 바뀌게 되었고, 전반적인 기기 생태계(device ecosystem)가 상당히 개선되었습니다. 가장 인기 있는 Android 휴대전화의 평균 지연 시간이 40ms 미만으로 줄어들었는데, 이는 실시간 애플리케이션에 필요한 범위에 충분히 포함되는 수준입니다.
기기 인기도 출처: appbrain.com
더욱 향상된 일관성(Greater consistency)
데이터 분석 결과, 2017년 최대값과 최소값 사이에 상당한 차이(222ms)가 있었습니다.
기기 인기도 출처: appbrain.com
이 데이터를 아래의 2021년 데이터와 비교해 보세요. 범위가 8배나 줄어 28ms에 불과해, 훨씬 더 일관된 오디오 경험을 제공합니다. 2017년에 제조업체가 단 한 곳이었던 반면, 지금은 최고 인기 목록에 여러 OEM이 있다는 점을 고려하면 더욱 인상적인 결과라 할 수 있습니다. 또한, 인기 목록에 있는 기기 중 다수가 최고급 플래그십 모델이 아니라는 점도 주목할 만합니다.
기기 인기도 출처: appbrain.com
탭-투-톤 지연 시간(Tap-to-tone latency)
지금까지는 왕복 오디오 지연 시간(Round-trip latency)에 대해 알아봤습니다. 왕복 지연 시간에는 오디오 체인에 오디오 입력(audio input), 오디오 처리(audio processing), 오디오 출력(audio output)의 세 가지 요소가 포함됩니다.
많은 실시간 오디오 앱(real-time audio app)이 입력 오디오(input audio)에 의존하기보다는 화면 탭 이벤트(screen tap events)에서 오디오를 생성합니다. 이러한 종류의 앱은 '탭-투-톤(tap-to-tone)' 지연 시간, 즉 화면을 탭한 순간부터 알림음이 들릴 때까지 걸리는 시간에 민감합니다. 터치 스크린을 탭하면서 발생하는 지연 시간은 대략 10~35ms이고 최신 Android 기기에서는 대체로 20ms 정도입니다.
주어진 왕복 지연 시간에서 탭-투-톤 지연 시간을 추정하려면 오디오 입력 지연 시간(보통 5ms)을 빼고 터치 지연 시간(보통 20ms)을 더하면 됩니다. 즉, 왕복 지연 시간에 15ms를 더하면 되죠. 앞서 언급한 수치들을 고려해보면, 가장 인기 있는 Android 휴대전화의 평균 탭-투-톤 지연 시간이 대다수 실시간 오디오 애플리케이션에 필요한 지연 시간보다도 훨씬 짧다는 것을 알 수 있습니다.
향후 전망
Android 생태계 전반에 걸쳐 오디오 지연 시간이 상당히 줄었지만, 저희가 작업을 마치기까지는 아직 갈 길이 멉니다. Android 전문가용 오디오 앱에는 20ms의 왕복 지연 시간이 필요하며, 장기적 목표는 여전히 10ms입니다. 현재로서는 인기가 좀 덜한 일부 기기의 오디오 지연 시간은 여전히 긴 편입니다. 하지만 오디오 지연 시간 때문에 Android 앱 개발이 지체되었다면, 아마 다시 생각해 보아야 할 시점으로 보입니다.
시작하려면 Oboe 시작 가이드 또는 영상 가이드를 확인해 보세요.
데이터 소스와 도구
OboeTester
WALT
appbrain.com
superpowered.com/latency
gsmarena.com
juce.com/maq
그 외 다양한 내부 데이터 소스