phase voder에 대해서 알아보기 위하여 페이퍼를 읽게 되었다. 읽은 페이퍼는 아래와 같다.
Phase vocoder
Publisher: Nokia Bell Labs
J. L. Flanagan; R. M. Golden
All Authors
무려 1966년에 작성되었는데 음성을 공부하려면 거의 무조건 공부해야 하는것 같다.
음성데이터를 전송하고 받을 때 음성을 컴퓨터가 알아들을 수 있게 코딩하는 작업이 필요한데 phase vocoder를 이용하면 time scale과 frequency scale 압축, 확장이 가능하며 이것으로 경제적인 transmission이 가능하다.
Phase vocoder의 아이디어
phase vocoder는 음성을 analysis/synthesis하는데 잘 사용된다. 신호 $f(t)$가 있을 때 N개의 band pass filter로 보내서 처리한다. 각 밴드패스필터에서 처리된 결과를 합하여 본래 신호를 합성하는 것을 목표로 한다.
$$f(t) = \sum_{n=1}^N f_n(t) \label{1}\tag{1}$$
각각의 밴드패스 필터를 구성하는 impulse response 는 $g_n(t) = h(t) cos \omega_n t$ 이고 $h(t)$는 low pass filter이다. 이 사실을 이용하면 아래와 같이 $f_n$을 STFT에 지수함수가 곱해진 형태로 표현가능하다.
$$f_n(t) = Re[exp(j\omega_n t) F(w_n,t)] = |F(\omega_n, t)|\cos [\omega_n t+ \phi(\omega_n, t)]\tag{2}\label{2}$$
여기서 $F(\omega_n, t)$는 $f(t)$의 $(\omega_n,t)$에서 STFT이다.
$phi(\omega_n,t)$는 $F(\omega_n,t)$의 phase이다.
$\phi$의 경우에는 unbounde 특성을 지니기 때문에 $\phi$의 미분을 적분하여 사용한다.
$$\tilde{f}_n(t) = |F(\omega_n,t)| cos[\omega_n t + \tilde{\phi}(\omega_n,t)]$$
Phase vodoer의 특징
수학적인 얘기는 끝났고 본래의 작업으로 돌아와서! 지금 $f(t)$를 주파수 영역별로 나누어서 처리한 후 그것을 합해서 $f(t)$를 합성하려고 한다. 기존의 vocoder는 amplitude $|F(\omega_n, t)|$와 phase $\phi$를 따로 다룬 반면, phase vocoder는 이 둘을 함께 다룬다. phase $\phi$는 음성 생성모델에서 excitation의 변화를 알려주는 수치를 뜻한다. 왜냐하면 pitch 길이가 $T$라고 하면
$$F(\omega_n, t+T) = F(\omega_n, t) e^{-j\omega n T}$$ 형태가 나오기 때문이다. phase의 변화와 amplitude의 변화를 고려하기 때문에 그전의 vocoder보다 더 나은 결과를 보인다고 한다.
이 다음은 이산화해서 적용하는 과정인데 그거는 됬고 ~
Phase vocoder의 장점과 단점에 대해 논의해보자.
Phase vocoder 장점
1. 기존의 vocoder는 amplitude와 excitation 을 분리하여 생각하였다면 phase vocoder는 phase derivatie를 이용하여 excitation과 amplitude를 결합한다.
2. 구현이 간단하다.
3. 시간축과 주파수축에 대하여 scaling ( compressin, expansion)이 가능하다.
Phase vocoder 단점
bit rate와 signal quality간의 trade off
밴드를 1/4까지 줄이는 것까지는 speech quality가 유지되는 경향을 보이나 수학적인 결과는 아니여서 해석이 필요하다.
Reference
J. L. Flanagan and R. M. Golden, “Phase vocoder,” in The Bell System Technical Journal, vol. 45, no. 9, pp. 1493-1509, Nov. 1966, doi: 10.1002/j.1538-7305.1966.tb01706.x.