728x90

1강의 Introduction에 이어 전체 Audio Signal Processing에 필요한 간단한 Basic Mathematics들을 소개하고 있다. 아래의 수학적인 지식들에 대해 간단히 교수님께서 설명을 해주시는 강의이다.





먼저 Sinusoidal functions에 대해 보겠다. Sinusoidal functions은 sinewaves, 즉 사인파로 이해하면 될 것 같다. 사전적인 이름으로는 사인파형을 갖는 함수라고 나와있다.


위의 식은 아래와 같다. 


먼저 대문자 A는 진폭이다.

는 한국어로는 각진동수이다. 

이고, Hertz를 구하기 위해 오메가를 2pi로 나눈다.

이다. 실제 시간인 t는   이용하여 얻을 수 있다.

는 초기 각도이다.





위의 그래프는 위에서 배운 amplitude, angular frequency, time index, sampling period, initial phase, frequency in Hertz를 직접 대입하여 넣었을 때의 신호이다.


이 되고, 이 최종 신호인 X는 

가 된다.

 






다음은 복소수에 대해 보겠다.

Complex numbers는  로 표현되며 이때 a,b는 real 값, j는 imaginary 값으로, a는 real part, jb는 imaginary part라고 불리운다. 이 때 imaginary part를 표현하기 위해 j를 곱하는데 j는 허수이며이다. 그러므로 jb는 허수부로 구성되어 있다.

위의 그림 중 Complex plane은 우리말로 복소평면으로, 복소수를 기하학적으로 표현하기 위해 개발된 좌표평면으로 x축은 Re (real axis) 값으로 되어 있으며 horizontal axis이다. y축은 Im (imaginary axis) 값으로 되어 있으며 vertical axis이다. 위의 Complex plane의 magnitude는 1이다.








복소수는 2가지로 표현될 수 있는데, 1가지는 Rectangular form(직각좌표 형식)이며 나머지 1개는 Polar form(극좌표 형식)이다.

Rectangular form은 실수 부분인 a값과 허수 부분인 b값을 명시적으로 표현하는 가장 직접적인 형식이다. Complex Plane 내부의 2개 value의 교차점이 위의 그림에서 X표시가 되어 있는 가 actual complex number가 된다. 반면 Polar form은 위의 그림 중 아래의 원처럼 X 표시를 원점 벡터 (0, 0)의 끝으로 간주한다. 따라서 벡터로서 크기 A를 갖으며 를 이용하여 크기 A를 구할 수 있다. 또한 각도를 갖기 때문에, a에서 b의 역 탄젠트를 계산함으로써 a와 b로부터 계산 될 수 있다. Polar form은 복소수의 합계 및 곱셈 연산을 보다 직관적으로 보여줄 수 있다.








오일러의 공식은 인터넷에서 자세히 나와있다. 이 강의에서는 간단히만 소개하고 있는데 sine과 복소수를 결합하는 것을 설명하고 있다.

오일러 공식은 직사각형과 복소수간의 Polar co-ordinates(극좌표)를 매우 유용한 관계로 설립해준다.

는 Complex Exponential인데, real part인  와 imaginary part인 의 합으로 표현될 수 있다. 위의 공식을 이용하여 복잡한 지수함수로부터 시작하여 실수 부분인 를 얻을 수 있고, 복소수 부분인  를 얻을 수 있다.


이 방정식을 수학에서 가장 주목할만한 공식으로 교수님은 주장하고 계시므로 오일러 공식을 다시 찾아서 완벽히 이해할 필요가 있겠다. Complex plane에서 위의 식을 통하여 Complex Value인 magnitude가 1인 크기를 갖는다. 앞으로 배울 Discrete Fourier Transform을 이해하는데 가장 기초 개념이다. 

(결론 = 실수, = 허수)







아래의 그림은 복소수 사인파형에 대해서 간략히 설명하고 있다. 복소수 파형은 real part와 imaginary part로 구성되어 있는데, 아래의를 오일러 공식에 의해 풀면 real part가 되고,  imaginary part가 된다. 즉 두개의 part가 합쳐져 있고, 강의에서는 를 complex sinusoid (complex sinewave)라고 설명한다.

위의 그림에서 Real part sinewave를 구해보자. 먼저 는 amplitude times이며, 오메가 nT+phi의 코사인과 곱해져있는 사인파형이다. 즉 풀어서 말해보면, real sinusoid인 임의의 amplitude times 값을 갖는  는 Complex sinewave 들의 합인  로 표현될 수 있다. 그러므로 위의 2개의 합을 갖는 complex sinewave를 이용하여 real sinewave를 generate할 수 있다. 

강의에서 간단히 요약하는 부분이 나오는데, 위의 식에서  식을 가르키며, summing two complex sinewaves를 하는 것은 sinusoid에서 imaginary part를 제거하고 real part만을 유지시킬 수 있다고 한다. 위의 공식은 매우 복잡해보이지만 이는 Fourier Transform을 사용하기 위해 엄청나게 유용한 부분이므로 반드시 이해해야하는 부분이다.








아래의 그림은 real과 imaginary를 그림으로 표현하고 있다.

파랑색은 real part인 cosine 함수이며, 초록색은 imaginary part인 sine 함수이다.








다음은 스칼라 내적 곱에 대해서 설명한다.

강의에서는 앞으로 익숙해져야 할 개념 중 하나가 스칼라 내적 곱이라고 한다. 이것은 시퀀스간의 공통 대수 연산이다. 아래 그림의 첫번째 식은 2개의 길이가 같은 숫자 시퀀스들의 연산이다. 이 연산을 통해 single value를 return한다. Scalar dot은 기하학적 또는 대수적으로 정의할 수 있다.

Example에서, x[n]은 real 부분이고, y[n]은 conjugated 부분이다. 즉 complex sequences이다. 이 dot product는 point to point multiplication이다. 딥러닝에서 자주 말하는, otherwise multiplication으로 보면 되겠다. 즉 정리해보자면, Scalar product는 2개의 sequence의 연산을 통해 최종값인 single value를 얻는 것을 의미한다.







다음은 sequence들이 직교할때의 상황에 대해서 설명한다. 스칼라 내적 곱에서의 중요한 특성은 두 개의 sequence가 직교할때이다. 이 때, 곱의 값은 0이 된다. 아래의 ㅗ 표시는 x is orthogonal to y only if the scalar product of x times y is equal to 0 이라고 표현하고 있다.


위의 그래프는, 짧은 2개의 sequence인 x와 y가 있다. x는 (2,2)이고 y는 (2,-2)이다. 위의 그래프는 2차원 공간에서 서로 orthogonal 한 것을 보여준다. 즉 우리는 저 2개의 sequence들이 서로 수직적인것을 볼 수 있다.

위의 식을 통해 x와 y의 내적곱을 수행하면 0임을 증명 가능하다. 마찬가지로 이 부분도 DFT를 진행하기 위해 기본 정보이니 꼭 알아두도록 하자.





또다른 수학 개념 중 앞으로의 강의에서 사용 될 신호 분석 기법 중 하나는 Even 과 Odd 함수이다. 즉 짝수와 홀수이다.

아래의 식은, 만약 함수가 음수 part일 경우 이라고 부른다. 이 때,

Even(짝수) 함수는 일 경우이다. 이를 Symmetric function(대칭함수)라고 부른다.

Odd(홀수) 함수는 일 경우이다. 이를 Antisymmetric function(비대칭함수, 반대칭함수)라고 부른다.


위의 두 함수는 앞에서 말한 코사인과 사인의 매우 전형적인 예시가 된다.

왼쪽은 Symmetric(Even Function)이다. 0점을 기준으로 대칭이다.

오른쪽은 Antisymmetric(Odd function)이다. 0점을 기준으로 비대칭하다.




마지막으로 Convolution에 대해서 소개하고있다. 이 부분은 매우 간단히 넘어가고 있다. 이 수학적인 방법인 Convolution은 2개의 sequence를 이용하여 3번째 sequence를 만드는데, 1개의 원래 sequence의 모방된 버전처럼 될 수 있는 기법이라고 소개하고 있다.

위의 x1, x2는 서로 다른 shape을 갖는 sequence들이다. 3번째 파형인 결과 sequence인 y는 convolve가 되고난 이후이다. 결과적으로 보자면 더 부드러워진 함수가 되었다. Convolution은 cross correlation(상호 상관관계)과 비슷하다고 설명하고 있다. 사운드 필터링을 구현하는데 사용되는 일반적인 방법이다.






일단 여기까지가 Basic Mathematics의 강의가 끝났다.

강의자료들의 Reference들은 아래 그림과 같다. 교수님은 Reference for the mathematics of the DFT by Julius O. Smith 교수의 강의 자료를 보고 확실히 이해하라고 하셨다. 나도 이제 다시 월요일이 되면 course가 있지만... 듣고 확실히 이해하는 기회를 가져야겠다.




728x90
728x90

오늘부터 Coursera에서 Audio Signal Processing for Music Applications의 강의를 약 10주간에 걸쳐 듣기로 하였다. Coursera의 장점 중 하나는 매 주 강의가 나오고 그에 대한 시험 및 과제를 제출해야 수료하는 것으로 나오는데, 굉장히 잘 관리를 해주는 느낌이다.


강의는 Universitat Pompeu Fabra of Barcelona의 Dept. of Information and Communication Technologies의 Xavier Serra 교수님과 Stanfor University의 Electrical Engineering의 Prof Julius O Smith, III 교수님이 진행하신다. 강의 사이트는 https://www.coursera.org/learn/audio-signal-processing/home/info 에서 확인할 수 있다.


개인 공부 용도로 진행한 강의 내용을 정리할 예정이다.


첫번째 페이지에서는 Audio Signal Processing for Music Application 강의에 대해 소개하고 있다. 오디오 신호 처리의 개념을 소개하고 신호 처리의 일반적인 음악 응용 프로그램을 살펴볼 오디오 신호 처리의 기초 강의이다. 




아래 사진은 Audio Signal Processing에 대해 정의를 하는데, Intentional alteration of sound. 의도적인 소리 변경에 대하여 소개하고 있다. 강의에서는 audio signal processing을 "오디오 신호 처리가 의도적으로 소리를 변경하는 계산 방법에 초점을 맞춘 엔지니어링 분야"로 정의하고 있다. 


위의 블록 다이어그램에서, 오디오 신호를 입력으로 받아 인간 혹은 자동 시스템으로부터의 컨트롤에 의해 생성되는 오디오 신호 혹은 다른 유형의 정보를 오디오 신호 처리로 설명하고 있다. audio signals은 digital 또는 analog formats으로 electronically하게 표현 될 수 있으므로, signal processing은 digital 또는 analog 어느 영역에서나 발생할 수 있다. 아날로그 처리기는 전기 신호에서 직접 작동하지만 디지털 프로세서는 해당 신호의 binary 표현에서 수학적으로 작동한다.



아래의 그림을 통해 강의에서는 analog 신호 대 digital 신호의 차이에 대해 설명한다.


먼저 analog sound는 대부분 전기의 특성이다. 즉, 소리의 air pressure(기압) 파형을 나타내는 전압 레벨이다. 그림의 윗 plot에 표시된 것과 같은 연속적인 function이다. 

반면에 digital 표현은 압력을 이진수로 표현하므로 아래의 plot에 표시된 것과 같이 discrete function(이산 함수)으로 나타난다. digital 표현은 마이크로프로세서와 컴퓨터를 사용하여 나타낸다. analog에서 digital로 변환이 손실이 되기 쉽지만, 최근의 audio systems은 digital signal processing이 analog technique보다 더욱 powerful하고 efficient하기 때문에 digital signal processing 방식을 사용한다.



signal processing application은 데이터 압축 또는 audio coding이라고도 한다. 여기서의 목표는 digital audio 스트림의 bandwidth 요구 사항을 줄이는 것과 audio file의 저장소 크기를 줄이는 것이다. 


압축 기술에는 두 가지 유형이 있다. 하나는 정보를 잃지 않는 무손실(lossless)이라고하는 것이고, 다른 하나는 손실(loss)인데, 다행이도 정보 손실과는 관련이 없다. 여기서 WAV 파일을 입력 파일로 취하는 perceptual 오디오 코더의 예를 볼 수 있다. 그러므로 압축 없이 digital domain에서 사운드를 직접 표현한 파일만 사용한다. 이를 WAV 라고 부른다. => 압축 없이 디지털 도메인에서 사운드를 직접 표현하는 파일 형태

오디오 코더를 통해 perceptually-based 오디오 코더는 해당 파일을 훨씬 작은 파일로 변환이 가능한데, 그것이 바로 MP3이다. MP3 형식은 소리의 perceptual 특성에 기반하여 파일을 매우 압축하는 것이다.




위의 그림은 강의에서 소개하고 있는 Audacity라는 프로그램에서 플러그인을 여러 개 포함하는 두 개의 스크린 샷이다. 오디오 신호를 변환하는 여러 유형의 애플리케이션이 포함되어 있다. 왼쪽에는 dynamic 압축이 표시되고 오른쪽에는 reverb(잔향)이 표시된다. 

위의 그림은 audio signal processing 기술을 사용한 2종류의 변환이지만, 이 외에도 많은 변형이 있다. echo, equalizer, flanger, phaser, chorus, pitch shift, time stretching, voice effects, 3D audio effects, morphing 등이 포함된다. 



signal processing의 전통적인 용도 중 하나는 기존 사운드를 모방하거나 새로운 음색(timbres)을 생성하여 사운드를 생성하려는 목적으로, 사운드 합성과 관련된다. 아래의 그림에서는 세 가지의 각기 다른 합성 기술의 블록 다이어그램을 보여준다.


왼쪽 위의 그림은 Subtractive Synthesis(감산 합성)이다. 감산 합성은 풍부한 사운드에서 시작하여 풍부한 사운드의 구성 요소를 필터링하여 다른 사운드를 만든다. 

오른쪽 상단에있는 그림은 FM 합성이다. 하나의 발진기를 다른 발진기로 변조하고 발진기의 주파수를 변조하는 기술이다. 이 기술을 사용하여 다양한 소리를 얻을 수 있다.

아래쪽 있는 Additive Synthesis(추가 합성)이라는 그림은, 가장 직관적인 합성의 종류이다. 왜냐하면 일부 발진기를 추가하여 그로 인해 sinusoid(사인 곡선)가 추가가 되므로, 매우 간단한 사운드들을 추가하여 복잡한 사운드를 생성할 수 있기 때문이다.

이외에도 수년에 걸쳐 개발 된 다른 많은 합성 기술이 있다. 여기에는 granular synthesis, the idea of physical modeling, waveshaping, sampling, spectral synthesis이라고하는 개념이 포함된다. 


강의에서 마지막으로 언급하고자 하는 것은 사운드의 의미있는 특성을 설명하고 모델링하는 목표로 오디오 신호를 분석하는 기술을 사용하는 것이다. 위의 분석 기술은 지난 몇 년 동안 매우 확대된 주제인 정보 검색과 음악 정보 검색 분야와 관련있다. 



위의 그림은 의미 있는 music 개념을 추출할 수 있는 알고리즘이다. 특히 음악의 각 부분에 대한 개념은 오디오 신호에서 얻을 수 있는 음악의 부분 중 일부의 조화 또는 화음과 관련이 있다. 따라서 오디오 신호에서부터 시작하여 다양한 분석 단계를 수행하며 결국에는 음악의 핵심을 식별 할 수 있다. 


앞으로의 강의에서는 오디오 신호에서 나오는 소리의 loudness, timbre, pitch와 같은 디스크립터를 참조한다. 또는 음악적으로 의미있는 디스크립터를 리듬, 하모니 또는 멜로디와 같은 개념에 대해 이야기 할 것이라고 한다.





728x90

+ Recent posts