Preventing Pre-Echo in Audio Codecs: 프리-에코가 생기는 이유와 해결 방식
오디오 코덱에서 “프리‑에코(pre‑echo)”가 왜 생기고, MP3/AAC가 이를 어떻게 줄이는지 한눈에 정리
Hun Jang Nov 24, 2025
MP3 인코더의 프리 에코 억제 기술
오디오 코덱에서 “프리‑에코(pre‑echo)”가 왜 생기고, MP3/AAC가 이를 어떻게 줄이는지 한눈에 정리
- 프리‑에코란? 변환(예: MDCT) 기반 손실 압축에서 급격한 어택(캐스터네츠 같은 타격음) 주변에 양자화 잡음이 시간 앞쪽으로 번져 “소리가 나기 전”에 잔향처럼 들리는 현상. (Wikipedia)
- 핵심 원인: 긴 변환 창에서 생긴 잡음이 역변환 시 시간축으로 퍼지며 생기는 시간적 스미어링. (Wikipedia)
MP3/AAC의 표준 해법: 블록(창) 스위칭
- 정상 구간은 **긴 창(롱 블록)**으로 고효율 코딩, 트랜지언트 검출 시는 **짧은 창(쇼트 블록)**으로 전환해 시간 해상도를 높여 프리‑에코를 억제한다. MP3는 한 번의 롱 창 대신 3개의 짧은 창으로 대체하는 구조가 표준 설명에 나온다. (EDN)
- Fraunhofer/AES 튜토리얼과 문헌에서도 **“트랜지언트 시 블록 사이즈를 줄여 프리‑에코 회피”**가 정석 대책으로 명시되어 있다. (AudioLabs)
- AAC는 **8개의 쇼트 블록 시퀀스(스타트/스톱 창 포함)**로 스위칭 예시가 제시되며, 짧은 창을 더 유연하게 써서 프리‑에코를 줄인다. (jontalle.web.engr.illinois.edu)
추가 기법(쇼트 블록 보완)
- TNS(Temporal Noise Shaping): 잡음의 시간 분포를 어택 형태에 맞게 “모양 내기”해 프리‑에코를 더 줄임(AAC‑LD/ELD 등에서 창 형태 개선과 함께 언급). (Fraunhofer IIS)
트레이드오프
- 짧은 창은 비트 소모와 압축 효율 저하(사이드 정보 증가·주파수 해상도 하락)를 유발 → 그래서 필요할 때만 전환하도록 “보수적 스위칭 전략”을 쓴다(비트 리저버와 병행). (Fraunhofer IIS)
현업 팁(사용자분 TTS/음성AI 작업에 바로 적용)
- 인코더/트랜스폼 기반 전처리 단계에서 트랜지언트 검출 임계값과 블록 전환 히스테리시스를 조정해 과도/과소 스위칭을 방지. (롱→스타트→쇼트×N→스톱→롱 시퀀스 유지) (cs.haifa.ac.il)
- 짧은 창만 남발하지 말고, TNS 유효화(+ 창 오버랩/창형 선택)로 프리‑에코 억제와 비트 효율을 균형 맞추기. (Fraunhofer IIS)
- 레퍼런스 청취 신호로 캐스터네츠/심벌 등 어택 강한 샘플을 사용해 A/B 테스트하면 조정이 빠르다. (Digital Audio Theory)