Android 비트퍼펙트 오디오: 신화 vs 현실
Android에서 비트퍼펙트 재생의 실제 의미, 생각보다 어려운 이유, 오디오 체인이 몰래 음악을 리샘플링하고 있지 않은지 확인하는 방법.
비트퍼펙트란?
비트퍼펙트 재생은 DAC에 도달하는 오디오 데이터가 소스 파일에 저장된 것과 동일하다는 것을 의미합니다. 유사하지 않습니다. “충분히 가깝지” 않습니다. 비트 단위로 동일합니다.
신호가 진정한 비트퍼펙트이려면: 리샘플링 없음, 볼륨 조정 없음, DSP 처리 없음, 디더링 없음이어야 합니다. 체인의 어떤 단계에서든 하나의 샘플이라도 변경되면 출력은 더 이상 비트퍼펙트가 아닙니다.
Android가 비트퍼펙트를 어렵게 만드는 이유
Android의 모든 오디오 앱은 AudioFlinger라는 시스템 컴포넌트를 통과합니다. AudioFlinger는 대부분의 기기에서 48 kHz 고정 샘플레이트로 작동합니다. 이 리샘플링은 조용히 발생합니다.
USB DAC는 상황을 크게 바꿉니다. 외부 DAC를 연결하면 DAC의 네이티브 샘플레이트를 지원할 수 있습니다.
Echobox의 비트퍼펙트 출력 달성 방법
우리는 3계층으로 아키텍처를 설계했습니다: UI용 Flutter, 디코딩과 오케스트레이션용 Rust, 실시간 오디오 콜백용 Zig.
비트퍼펙트 모드가 활성화되면 전체 Zig DSP 체인이 우회됩니다. Rust 측에서 앱은 트랙의 정확한 네이티브 샘플레이트를 요청하고, 부여된 레이트를 확인하며, DAC가 요청된 레이트를 제공할 수 없으면 조용히 리샘플링하는 대신 명확한 오류로 재생이 실패합니다.
비트퍼펙트가 필요하지 않을 때
EQ를 사용한다면, 잘 튜닝된 EQ가 보정되지 않은 헤드폰을 통한 비트퍼펙트 신호보다 더 나은 청취 경험을 만들어 냅니다. ReplayGain, 크로스피드, 룸 보정도 마찬가지입니다.
비트퍼펙트 모드의 핵심은 항상 더 좋은 소리를 내는 것이 아닙니다. 선택권을 갖는 것입니다. 대부분의 청취자는 비트퍼펙트를 끄고 좋은 EQ 프로파일을 사용하는 것이 더 나은 소리를 얻습니다.
요약
- 비트퍼펙트는 파일과 DAC 사이 오디오 신호에 제로 수정을 의미합니다.
- AudioFlinger는 기본적으로 48 kHz로 리샘플링합니다.
- USB DAC가 소스 파일의 네이티브 샘플레이트를 지원하여 비트퍼펙트 경로를 제공합니다.
- 확인이 주장보다 중요합니다. Echobox의 신호 경로 진단이 모든 단계에서 정확히 무슨 일이 일어나는지 보여줍니다.
- 비트퍼펙트와 DSP는 상호 배타적입니다.
- 어떤 앱도 Android의 오디오 시스템을 완전히 우회할 수 없습니다.
관련 가이드: FLAC과 무손실 오디오 이해하기 | Android 하이레졸루션 오디오 | 오디오 룸 보정 | 오디오파일 플레이어란