'신호처리' 카테고리의 다른 글
[DSP] CTFT와 DTFT의 관계 (0) | 2024.01.04 |
---|---|
[Sampling] Upsampling (0) | 2023.11.16 |
[Emphasis] Pre-emphasis 와 De-emphasis (0) | 2023.11.10 |
Noise Pattern (0) | 2023.11.10 |
[DSP] CTFT와 DTFT의 관계 (0) | 2024.01.04 |
---|---|
[Sampling] Upsampling (0) | 2023.11.16 |
[Emphasis] Pre-emphasis 와 De-emphasis (0) | 2023.11.10 |
Noise Pattern (0) | 2023.11.10 |
잘 알려져있고 가장 강력한 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들을 말하는데 쓰입니다.
speech production과정을 아래와 같이 excitation과 vocal tract을 통과하는 과정으로 나누어 나타내줄 수 있습니다. 이때, vocal tract의 formants (공명주파수)에 따라 발생하는 음성 신호가 달라지게 됩니다.
그래서 만약 우리가 이 vocal tract을 digital filter로 나타내고, 이 digital filter의 parameter에 따라 formants가 달라지는 것을 반영하면 말소리를 흉내낼 수 있게 됩니다.
[Cepstrum] Cepstrum과 Homomorphic analysis (0) | 2024.01.04 |
---|---|
[STFT] Frequency resolution과 Time resolution (3) | 2023.11.09 |
[Window] Rectangular window와 Hamming Window (0) | 2023.11.09 |
아래의 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)$
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$ 간격으로 반복된다는 것을 알 수 있는데, 잘 와닿지 않기 때문에 그림으로도 확인해보도록 합시다.
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}$ 으로 반복한 것과 같습니다.
윈도우에서 AWS 설치 및 데이터셋 다운로드 (1) | 2024.12.13 |
---|---|
[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되어 최종적으로 음성신호로 출력되는 것을 알 수 있습니다.
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을 출력해주는 특성을 갖는 시스템을 말합니다.
이 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 연산으로 바꿔줍니다..!!!
그런데 speech signal은 각 component들의 convolution된 signal이니까, 이 characteristic system을 이용하면 신호의 각 성분들을 decompose할 수 있게 되는 것입니다. 이때 charateristic system의 output은 complex 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$
그럼 실제로 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}
그러면 각각의 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로 나타납니다. (이 내용은 길어질 것 같아 따로 포스팅으로 하도록 하겠습니다.)
[LPC] Linear Predictive Analysis (0) | 2024.01.25 |
---|---|
[STFT] Frequency resolution과 Time resolution (3) | 2023.11.09 |
[Window] Rectangular window와 Hamming Window (0) | 2023.11.09 |
Upsampling은 sampling rate을 높이는 것입니다. upsampling의 과정은 다음의 block diagram으로 나타낼 수 있습니다. (1) sampling rate을 L배로 높이고, (2) cutoff frequency가 $\pi/L$ 인 lowpass filter에 통과시켜줍니다.
두 가지 과정을 자세하게 정리해보도록 합시다.
먼저 첫번째 ↑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 과정 직후의 결과입니다.
그런데 우리는 DTFT를 해줄 때, $-\pi$ ~ $\pi$ 에 sampling rate 값을 대입하여 줍니다. (c)를 다시보면 ' $\Omega_N$' ~ 2 '$\Omega_N$' 구간에 원래 존재하지 않던 고주파 성분들이 생긴 것을 볼 수 있습니다. 이것이 왜 문제가 되는지 간단한 예시를 통해 설명해드리겠습니다.
본래의 신호가 아래의 frequency가 2Hz인 빨간색의 신호가 있다고 생각해보겠습니다. 이 신호를 DTFT한 결과는 오른쪽과 같이 나타납니다. (samling rate = 8Hz라 가정)
이 신호의 sampling rate을 두 배로 늘려 16Hz로 upsamling을 하면, sampling rate expander 과정 이후 다음과 같이 변하게 됩니다. (위의 그림으로는 (c))
원래는 없던 초록색의 주파수 성분이 새로 생겨난 것을 볼 수 있습니다. 신호에 6Hz 성분이 생겨버렸습니다.
이것을 time domain에서 보면 아래와 같이 본래 신호와 달라진 것을 볼 수 있습니다. (c)
그렇기 때문에 우리는 아래와 같이 본래의 신호의 frequency 구간만 남기도록 cutoff frequency가 $\pi / L$ 인 lowpass filter (d)에 통과시켜주어야 우리가 원하는 upsamling과정이 끝나게 됩니다. (e)
윈도우에서 AWS 설치 및 데이터셋 다운로드 (1) | 2024.12.13 |
---|---|
[DSP] CTFT와 DTFT의 관계 (0) | 2024.01.04 |
[Emphasis] Pre-emphasis 와 De-emphasis (0) | 2023.11.10 |
Noise Pattern (0) | 2023.11.10 |
[DSP 정리] # 9. Frequency analysis of signals (Continuous time) (0) | 2023.11.15 |
---|---|
[DSP 정리] # 8. LTI system의 특성 (0) | 2023.11.15 |
[DSP 정리] # 7. Inverse Z-transform (0) | 2023.11.15 |
[DSP 정리] # 6. Z-transform (0) | 2023.11.15 |
[DSP 정리] # 5. Discrete-Time System (0) | 2023.11.15 |
[DSP 정리] # 10. Frequency analysis of signals (Discrete time) (0) | 2023.11.15 |
---|---|
[DSP 정리] # 8. LTI system의 특성 (0) | 2023.11.15 |
[DSP 정리] # 7. Inverse Z-transform (0) | 2023.11.15 |
[DSP 정리] # 6. Z-transform (0) | 2023.11.15 |
[DSP 정리] # 5. Discrete-Time System (0) | 2023.11.15 |
[DSP 정리] # 10. Frequency analysis of signals (Discrete time) (0) | 2023.11.15 |
---|---|
[DSP 정리] # 9. Frequency analysis of signals (Continuous time) (0) | 2023.11.15 |
[DSP 정리] # 7. Inverse Z-transform (0) | 2023.11.15 |
[DSP 정리] # 6. Z-transform (0) | 2023.11.15 |
[DSP 정리] # 5. Discrete-Time System (0) | 2023.11.15 |