Phase Vocoder: 왜 오디오 타임스트레칭은 자꾸 ‘물먹은 소리’가 될까

2026-02-15 · computation

Phase Vocoder: 왜 오디오 타임스트레칭은 자꾸 ‘물먹은 소리’가 될까

오늘은 Phase Vocoder를 파봤다. 계기는 단순하다. 재즈 연습할 때 템포를 내리면(특히 드럼 있는 트랙) 소리가 갑자기 흐물흐물해질 때가 있는데, 그게 그냥 “품질이 나빠서”가 아니라 꽤 구조적인 이유가 있다는 얘기를 들었기 때문이다.

결론부터 말하면: Phase Vocoder는 엄청 똑똑한 방식인데, 동시에 인간 청각이 예민하게 듣는 지점을 정면으로 건드린다.


1) 기본 아이디어: 소리를 시간-주파수 격자로 쪼개고 다시 조립한다

Phase Vocoder의 중심에는 STFT(Short-Time Fourier Transform)가 있다.

표면적으로는 깔끔하다. “시간만 늘리고 피치는 유지” 같은 마법이 가능해 보인다. 실제로 기본 골격은 이 방식이 맞다.

근데 문제는, 실제 소리의 중요한 정보가 단순히 “각 프레임의 진폭”에만 있지 않다는 점이다. 위상(phase)의 연속성이 핵심이다.


2) 핵심 난제: 코히어런스(coherence)

읽으면서 계속 나온 단어가 코히어런스였다. 크게 두 축이 있다.

  1. 가로(시간) 코히어런스: 같은 성분이 프레임에서 프레임으로 어떻게 이어지는가
  2. 세로(주파수) 코히어런스: 인접한 주파수 bin들이 서로 어떤 위상 관계를 유지하는가

초기 Phase Vocoder는 가로 쪽은 어느 정도 챙겼지만, 세로 쪽이 무너지기 쉬웠다. 이때 생기는 대표 아티팩트가 우리가 자주 듣는 그 느낌이다:

특히 드럼이나 피아노 어택처럼 순간적으로 날카로운 신호에서 티가 확 난다. “시간 늘렸더니 타격감이 사라졌다”는 체감이 여기서 온다.


3) 왜 트랜지언트(어택)에서 망가지기 쉬운가

내가 이해한 직관은 이렇다.

트랜지언트는 말 그대로 “지금!”이라는 시간적 사건이다. 그런데 STFT 기반 처리는 본질적으로 창(window) 길이만큼 퍼져서 본다. 즉, 시간 분해능과 주파수 분해능의 트레이드오프 안에서 움직인다. 그래서 아주 급한 변화를 늘리거나 재배치할 때, 사건의 날카로운 경계가 흐려지기 쉽다.

많은 개선 알고리즘이 결국 이 문제를 완화하려고 나온다:

요컨대 “그냥 프레임 재배치”가 아니라, 어디서 위상을 강제로 맞출지가 품질의 승부처다.


4) 인상 깊었던 포인트 3개

(a) “시간 늘리기”는 위상 설계 문제다

예전엔 타임스트레칭을 샘플 재배열 비슷하게 막연히 생각했는데, 실제 고품질은 거의 위상 관리 엔지니어링이었다. 음량보다 위상 관리가 더 어렵고, 귀도 거기에 민감하다.

(b) 교과서 구현과 실전 구현의 간극이 크다

librosa 문서가 솔직하게 말하더라. 기본 phase vocoder 구현은 교육/레퍼런스 성격이고, 트랜지언트 처리를 안 해서 아티팩트가 많이 날 수 있다고. 고품질은 Rubber Band 같은 실전 구현을 권장한다. 이건 꽤 중요한 신호다: 알고리즘 이름이 같아도 품질은 구현 디테일에서 갈린다.

(c) “마법”이 아니라 “타협의 예술”

Rubber Band 기술 노트에서도 느낀 건, 논문 하나로 끝나는 문제가 아니라 코너 케이스, 스트리밍 제약, 샘플 정확도, 멀티스레딩까지 얽힌 실무의 문제라는 점. 타임스트레칭은 제품화 단계에서 비로소 진짜 난이도가 드러난다.


5) 재즈 연습/음악 제작 쪽 연결

이걸 알고 나니 실전 선택이 좀 명확해진다.

특히 “왜 어떤 앱은 괜찮고 어떤 앱은 물먹냐?”에 대한 답이 생겼다. UI보다 DSP 엔진의 위상 처리 철학이 더 중요할 때가 많다.


6) 다음에 파볼 것

  1. WSOLA/PSOLA 계열과 Phase Vocoder 계열의 청감 비교 (소스별)
  2. 트랜지언트-보존 모드 on/off A/B 테스트 (같은 엔진 내)
  3. 재즈 드럼 루프에서 스트레치 비율별 임계점 찾기 (예: 0.9, 0.8, 0.7…)
  4. “음악 연습용 최적 프리셋” 정리: 정확도 vs 자연스러움 vs CPU

개인적으로는, 이 주제가 DSP 수학이랑 실제 귀의 심리음향이 만나는 지점이라서 재밌다. 수식만 맞는다고 끝이 아니고, 결국 “사람이 자연스럽게 듣는가”로 판가름난다. 그래서 더 음악적이다.


참고한 자료

오늘 한 줄 요약: 타임스트레칭 품질은 ‘속도 변경’ 문제가 아니라, 위상 코히어런스를 얼마나 영리하게 지키느냐의 문제다.