1. LPC (Linear Predictive Coding) 란 무엇인가?

잘 알려져있고 가장 강력한 speech analysis technique 중 하나로 discrete-time speech production model의 parameter들을 추정하거나 낮은 bit rate으로 speech를 representing하여 전송 혹은 저장하는데 사용됩니다.

 

이름(linear predictive coding)에서 알 수 있듯이 본래는 speech processing 분야에서 speech coding application에 사용되었다가 지금은 일반적으로 linear predictive analysis technique들을 말하는데 쓰입니다.

2. LPC를 사용하는 이유

1) Speech Production Model

speech production과정을 아래와 같이 excitation과 vocal tract을 통과하는 과정으로 나누어 나타내줄 수 있습니다. 이때, vocal tract의 formants (공명주파수)에 따라 발생하는 음성 신호가 달라지게 됩니다.

그래서 만약 우리가 이 vocal tract을 digital filter로 나타내고, 이 digital filter의 parameter에 따라 formants가 달라지는 것을 반영하면 말소리를 흉내낼 수 있게 됩니다.

 

 

 

 

 

아래의 impulse train은 continuous signal이지만 T 간격으로 값을 가지기 때문에 다른 signal에 곱해주면 T주기로 sampling된 discrete signal을 얻어낼 수 있습니다. 이를 이용해서 CTFT와 DTFT의 관계를 정리해보도록 하겠습니다.

 

[Impulse train]

$s(t)=\sum_{n=-\infty}^{\infty} \delta(t-n T)$

 

[Impulse train과 signal을 곱해 discrete signal로 sampling (여전히 continuous signal이라고 간주)]

$x_s(t)=\sum_{n=-\infty}^{\infty} x_c(n T) \delta(t-n T)$

Impulse train (왼) Impulse train을 continuous signal에 곱해 discrete signal로 표현한 모습 (오)

 

Time-domain에서의 multiplication는 frequency-domain에서 convolution과 같다는 특성이 있습니다. (CTFT / DTFT의 property) 그렇기 때문에 time domain에서 signal $x(t)$와 impulse train $s(t)$의 multiplication을 CTFT한 것은 각각의 signal을 CTFT해준 후에 convolution해준 것과 같습니다.

$x_s(t)=x_c(t)s(t)\leftrightarrow X_s(j \Omega)=\frac{1}{2 \pi}X_c(j\Omega)*S(j\Omega)$

 

[Inverse train의 CTFT]

$s(t)=\sum_{n=-\infty}^{\infty} \delta(t-n T) \leftrightarrow S(j \Omega)=\frac{2 \pi}{T} \sum_{k=-\infty}^{\infty} \delta\left(j\left(\Omega-k \Omega_S\right)\right)$  $(where,  \Omega_S=\frac{2 \pi}{T})$

 

따라서 sampling된 signal $x_s(t)$의 CTFT 결과는 아래와 같습니다.

$X_s(j \Omega)=\frac{1}{2 \pi}X_c(j\Omega)*S(j\Omega)= \frac{1}{2 \pi}X_c(j\Omega)* \frac{2 \pi}{T} \sum_{k=-\infty}^{\infty} \delta\left(j\left(\Omega-k \Omega_S\right)\right)$

 

식을 보면 $\frac{1}{T}$로 scaling된 $X_c(j\Omega)$ $\Omega_s$ 간격으로 반복된다는 것을 알 수 있는데, 잘 와닿지 않기 때문에 그림으로도 확인해보도록 합시다.

continous signal x(t)의 CTFT 결과
Impulse train을 CTFT한 결과

 

time domain에서 signal $x(t)$와 impulse train $s(t)$의 multiplication을 CTFT한 것은 각각의 signal을 CTFT해준 후에 convolution해준 것과 같기 때문에 $X_c(j\Omega)$는 아래와 같이 나오게 됩니다.

즉 DTFT는 CTFT를 $\frac{1}{T}$만큼 scaling 해준 뒤에 일정한 간격 $\Omega_0=\frac{2 \pi}{T}$ 으로 반복한 것과 같습니다.

'신호처리' 카테고리의 다른 글

[Sampling] Upsampling  (0) 2023.11.16
[Emphasis] Pre-emphasis 와 De-emphasis  (0) 2023.11.10
Noise Pattern  (0) 2023.11.10

음성신호의 생성 과정은 아래의 Speech production model (Source filter model)로 나타냅니다. 그러면 voiced speech signal 와 unvoiced speech signal 과 각각의 vocal tract impulse response는 아래와 같이 식으로 표현해줄 수 있습니다.

 

[voiced speech]

signal : $s[n]=p[n] * h_V[n]$

impulse response : $h_V[n]=A_V \cdot g[n] * v[n] * r[n]$

 

[unvoiced speech]

signal : $s[n]=u[n] * h_U[n]$

impulse response : $h_U[n]=A_U \cdot v[n] * r[n]$

 

위의 식을 통해서 각각의 component signal들이 convolution되어 최종적으로 음성신호로 출력되는 것을 알 수 있습니다.

 

1. Homomorphic system

Homomorphic system은 우리가 자주 들어본 LTI system에서의 linearity 성질(principle of superposition)을 일반화 시킨 시스템입니다. 기존의 LTI system은 input으로 두 가지 signal이 addition된 형태가 들어오면 output 역시 각 signal의 output의 addition을 출력해주는 특성을 가지고 있습니다.

Homomorphic system의 경우에는 이 superposition 특성을 일반화하여서 input으로 두 가지 signal이 convolution된 형태가 들어오면 output 역시 각 signal의 output의 convolution을 출력해주는 특성을 갖는 시스템을 말합니다.

LTI system와 Homomorphic system

이 Homomorphic system의 중요한 특징이 바로 3개의 homomorphic system을 casecade의 형태로 합쳐 아래의 그림처럼 표현을 할 수 있다는 점입니다. 이때 $\mathcal{D}_*\{ \cdot \}$은 characteristic system으로 convolution → addition 형태로 출력해주는 시스템이고, 그 inverse system같은 경우에는 반대로 addition → convolution의 형태로 바꿔주는 특성을 가지고 있습니다. 즉 characteristic system에 convolutioned input을 넣어주면 signal의 component들을 addition한 non-linearity한 convoltion 연산을 linearity 연산으로 바꿔줍니다..!!!

 

Homomorphic deconvolution의 casecade form

그런데 speech signal은 각 component들의 convolution된 signal이니까, 이 characteristic system을 이용하면 신호의 각 성분들을 decompose할 수 있게 되는 것입니다. 이때 charateristic system의 output은 complex cepstrum의 합입니다.

2. Cepstrum

Cepstrum은 time-domain에서 frequency-domain으로 변환을 해준 것처럼 frequency-domain에서 time-domain으로의 변환도 가능하다는 것을 보여주기 위해 도입된 개념입니다.

 

Cepsturm은 아래의 식과 같이 spectrum의 log magnitude를 취한 후 Inverse Fourier Transform을 해주어 구합니다. 그리고 이때 magnitude를 취하지 않고 spectrum의 magnitude만 취한 후 Inverse Fourier Transform을 해주어 구한 것은 complex cepsturm이라고 합니다.

 

[cepstrum]

$c[n]=\frac{1}{2 \pi} \int_{-\pi}^\pi \log \left|X\left(e^{j \omega}\right)\right| e^{j \omega n} d \omega$

[complex cepstrum]

$\hat{x}[n]=\frac{1}{2 \pi} \int_\pi^\pi \log \left\{X\left(e^{j \omega}\right)\right\} e^{j \omega n} d \omega$

 

3. Homomorphic Analysis

그럼 실제로 homomorphic system을 이용해 voiced sound를 decompose하는 예를 보도록 하겠습니다.

voiced sound의 component들이 아래와 같은 신호가 있다고 할 때, 우리는 signal과 complex cepstrum을 다음의 식으로 나타낼 수 있습니다.

\begin{aligned} & s[n]=h_V[n] * p[n]=A_V g[n] * v[n] * r[n] * p[n] \\ & \hat{s}[n]=\hat{h}_V[n]+\hat{p}[n]=\log \left|A_V\right| \delta[n]+\hat{g}[n]+\hat{v}[n]+\hat{r}[n]+\hat{p}[n]\end{aligned}

Time-domain representation of speech model for a voiced sound /AE/

그러면 각각의 component들의 complex cepstrum을 addition하면 기존의 신호의 complex cepstrum을 나타낼 수 있습니다. 그럼 addition된 결과물에서 각각의 component의 특성이 잘 보이니까 음성신호 분석에 사용이 가능하다는 것이겠죠? 아래는 각각의 component들의 complex cepstrum입니다.

보시면 아실 수 있듯이 각자 특징이 보입니다. 그렇기 때문에 원래의 synthetic speech의 complex cepstrum을 보았을 때, 각각의 component들의 특징을 알아볼 수 있습니다. 이때 이 포스트에서는 다루진 않았지만, 각각의 component들이 모두 maximum/minimum phase signal이기 때문에 cepstrum은 아래의 오른쪽 그림과 같이 complex cepstrum의 even part로 나타납니다. (이 내용은 길어질 것 같아 따로 포스팅으로 하도록 하겠습니다.)

Upsampling은 sampling rate을 높이는 것입니다. upsampling의 과정은 다음의 block diagram으로 나타낼 수 있습니다. (1) sampling rate을 L배로 높이고, (2) cutoff frequency가 $\pi/L$ 인 lowpass filter에 통과시켜줍니다.

두 가지 과정을 자세하게 정리해보도록 합시다.

 

1. Sampling rate expander

먼저 첫번째 ↑L 블럭을 sampling rate expander라고 합니다. 이 과정에서 우리는 L배로 sampling rate을 높이고자 할때 sample 사이에 L-1개의 0을 넣어 sampling의 수를 늘려줍니다.

 

 

2. Lowpass filter

그 다음 lowpass filter에 통과시켜주어야 합니다. 그렇지 않으면 time-aliasing이 발생할 수 있습니다. 그 이유를 아래 그림을 통해 알아보도록 하겠습니다.

아래는 upsampling 과정을 frequency domain에서 보여주는 그림입니다.

 

(a)는 아날로그 신호 x(t)의 CTFT 결과입니다. 이때 nyquist freqeuncy인 $\Omega_N$ 의 두 배로 sampling rate을 sampling 해주어 시퀀스 x[n]으로 나타내줍니다. 이 x[n]의 DTFT 결과는 (b)로 나타나게 됩니다.

이때 frequency 축이 $-\pi$ ~ $\pi$ 에 '$-\Omega_N$' ~ '$\Omega_N$'  값을 대입하여 normalize를 해준 것을 볼 수 있습니다.

(이에 대한 자세한 내용은 따로 포스팅을 하도록 하겠습니다.)

 

우리는 (1) 과정에서 time 축(사실상 sequence라 time은 아니지만)을 L배로 늘려서 scale을 시켜주었습니다. 그런데 frequency는 주기와 역수 관계이기 때문에 반대로 1/L 배로 줄어들게 됩니다. 만약 L = 2로 설정해주면 (b) 를 (c)와 같이 가로축을 scaling을 시켜준 것으로 나타낼 수 있습니다.

즉, (c)는 (1) Sampling rate expander 과정 직후의 결과입니다.

 

Upsampling 과정

그런데 우리는 DTFT를 해줄 때, $-\pi$ ~ $\pi$ 에 sampling rate 값을 대입하여 줍니다. (c)를 다시보면 ' $\Omega_N$' ~ 2 '$\Omega_N$' 구간에  원래 존재하지 않던 고주파 성분들이 생긴 것을 볼 수 있습니다. 이것이 왜 문제가 되는지 간단한 예시를 통해 설명해드리겠습니다.

 

본래의 신호가 아래의 frequency가 2Hz인 빨간색의 신호가 있다고 생각해보겠습니다. 이 신호를 DTFT한 결과는 오른쪽과 같이 나타납니다. (samling rate = 8Hz라 가정)

$x(t) = sin(4 \pi t)$

 

이 신호의 sampling rate을 두 배로 늘려 16Hz로 upsamling을 하면, sampling rate expander 과정 이후 다음과 같이 변하게 됩니다. (위의 그림으로는 (c))

원래는 없던 초록색의 주파수 성분이 새로 생겨난 것을 볼 수 있습니다. 신호에 6Hz 성분이 생겨버렸습니다.

$x(t) = sin(6 \pi t)$

이것을 time domain에서 보면 아래와 같이 본래 신호와 달라진 것을 볼 수 있습니다. (c)

빨강 : 본래 신호 // 초록 : expanding 과정을 통해 달라져버린 신호

그렇기 때문에 우리는 아래와 같이 본래의 신호의 frequency 구간만 남기도록 cutoff frequency가 $\pi / L$ 인 lowpass filter (d)에 통과시켜주어야 우리가 원하는 upsamling과정이 끝나게 됩니다. (e)

 

 

'신호처리' 카테고리의 다른 글

[DSP] CTFT와 DTFT의 관계  (0) 2024.01.04
[Emphasis] Pre-emphasis 와 De-emphasis  (0) 2023.11.10
Noise Pattern  (0) 2023.11.10

+ Recent posts