AVAudioRecorder를 구현하는 테스크를 진행하면, 오디오 품질과 용량을 최적화한 경험을 공유합니다.
용량과 음질은 서로 반비례 관계입니다. 음질을 높이면 용량이 커지고, 용량을 줄이면 음질이 저하됩니다. 이 사이의 균형을 고민하고 레퍼런스를 서치해본 결과, 1분 기준 200KB 이하의 용량으로 명확하게 인지 가능한 음질을 목표로 구현해보았습니다.
비트레이트는 음질을 결정하는 핵심 요소로, '샘플레이트 × 비트 뎁스 × 채널 수'로 계산됩니다. CD와 같은 고품질 음성은 약 1411kbps, 음악 스트리밍은 128 ~ 256kbps, 음성 통화의 경우 32 ~ 64kbps의 비트레이트를 사용합니다. 비트레이트가 높을수록 음질은 좋아지지만 파일 용량도 커집니다. 비트레이트를 구성하는 요소는 다음과 같습니다.
아날로그 소리를 디지털로 변환할 때의 샘플링 횟수입니다. 표준 샘플레이트는 44.1kHz로, 1초당 44,100개의 샘플을 기록합니다. 이는 인간의 가청 주파수(약 20kHz)의 2배 이상으로, 나이퀴스트 이론에 따라 원음을 정확히 복원할 수 있는 수치입니다. 44.1kHz라는 구체적인 수치는 과거 TV의 60Hz, 50Hz 주사선 방식과의 호환성을 고려해 정해졌습니다.
각 샘플링 지점에서 표현할 수 있는 음압 레벨의 정도를 표현합니다. 일반적으로 CD는 약 16bit의 비트 깊이를 가집니다.
채널은 오디오 신호의 구성을 의미합니다. 모노는 단일 오디오 채널, 스테레오는 좌우 두 개의 독립된 채널을 의미합니다. 스테레오의 경우, 좌/우 채널로 보통 이루어져 있으며 각 채널에 별도의 음성을 수집/ 송출할 수 있기 때문에 음성의 공간감이 우수합니다.
오디오 코덱은 용량에 직접적인 영향을 미칩니다. MP3, AAC, FLAC, Ogg Vorbis, WAV 등 다양한 오디오 코덱이 있으며, 각각 압축률과 음질 특성이 다릅니다. 이 중 손실 압축 방식인 AAC가 압축률 대비 음질이 우수하여 최종 선택했으며, 용량 이슈로 무손실 압축 방식은 제외했습니다.
다만, AAC의 경우 VBR(가변 비트레이트) 방식을 통해 상황에 맞게 동적으로 비트레이트를 조절하기 때문에 정확한 용량을 예측하기는 어렵습니다. 일반적으로 AAC는 10 ~ 12배 정도의 압축률을 가집니다.