Audio Signal Processing

10. sinusoidal model_3

yomatozu 2024. 8. 28. 10:59

이번 포스트에서는 사인파 모델의 합성에 대해 리뷰하겠다.

 

사인파 합성

사인파는 시간에 따라 변하는 사인파들의 합으로 간주한다. 사인파를 합성할 때는 가산(additive synthesis)을 사용한다. 이 방법은 여러 개의 진폭과 주파수를 입력으로 받아 개별적인 사인파를 생성하고 이를 합쳐 최종 출력으로 만든다.

 

가장 간단한 합성 방법으로 파이썬에서 다음과 같은 계산을 하는것이 있다. 그러나 매우 많은 계산을 해야해서 비효율적이다. 다음은 파이썬 코드예제이다.

Ar = .8
fr = 2.0
phi = pi / 2
fs = 100
t = arange(-1, 1, 1.0 / fs)
x = Ar * cos(2 * pi * fr * t * phi)

 

반면 DFT를 이용하여 합성하는 방법은 주파수 스펙트럼과 위상스펙트럼을 가지고 IDFT를 수행해 정현파를 생성한다. 하지만 이 방법은 DFT의 이산 주파수에서만 작동한다는 단점이있다. 다음은 IDFT를 하는 과정이다.

 

하지만 사인파의 주파수는 DFT의 이산 주파수와 정확히 일치하지 않는다. 또한, 시간 도메인에서는 모든 샘플이 같은 가중치를 가지지만, 주파수 도메인에서는 샘플들이 서로 다른 가중치를 갖는다. 이 점은 주파수 도메인에서 합성을 더 효율적으로 처리할 수 있도록 돕는다.

 

사인파를 정확하게 합성하기 위해서는 창 함수를 사용해야 한다. 창 함수는 주파수 도메인에서 특정 주파수 성분을 강조하고, 다른 성분들을 억제하여 원하는 주파수로 이동된 스펙트럼을 생성한다. 이 과정은 다소 복잡할 수 있지만, 효율적인 처리를 가능하게 한다. 또한, main-lobe 구간만을 사용하더라도 합성이 잘 이루어진다.

 

1000Hz, 2000Hz, 4000Hz의 사인파를 생성한다 가정하면 해당 주파수들의 성분에 blackman-harris 창 함수같은 함수를 적용한다. 그리고 설정된 주파수 스펙트럼에 대해 IDFT를 수행하면 해당 주파수들을 포함하는 시간 도메인의 신호가 생긴다. 과정은 다음그림과 같다.

 

'Audio Signal Processing' 카테고리의 다른 글

12. harmonic model, F0 detection  (0) 2024.08.29
11. sinusoidal model analysis  (0) 2024.08.28
09. sinusoidal model_2  (0) 2024.08.27
08. Sinusoidal model_1  (0) 2024.08.27
07. Time_Frequency_Compromise  (0) 2024.08.24