mir.pe (일반/밝은 화면)
최근 수정 시각 : 2024-07-12 21:19:37

스펙트로그램

파일:external/upload.wikimedia.org/Spectrogram-19thC.png [dBFS]

1. 개요2. 활용 예

1. 개요

Spectrogram

전자공학에서 다루는 푸리에 변환은 디지털화된 시계열 신호가 다양한 진폭(세기)과 주파수(진동수)를 가진 여러 삼각함수들(sinusoids)의 중첩으로 이루어져 있다고 간주하고, 해당 삼각함수들의 주파수 및 각 주파수별 진폭의 분포를 분석하는 것에 초점을 두고 있다. 해당 분포는 시간에 따라 계속 변하지만, 아주 짧은 시간 동안 거의 일정(quasi-stationary)하다고 간주하며 [2], 이를 응용하여 해당 시간 간격을 "창함수"화하여 주파수 분포를 구하고 [3], 이 분포가 시간에 따라 변하는 양상을 스펙트럼으로 시각화하는 기법이다 [4][5].

(쉽게 말하여 특정 파동을 여러개의 조각으로 잘게 잘라 조각 하나하나를 주파수별 여러 순수 삼각함수로 분리한 자료이다.)

즉 스펙트로그램은 시간상 진폭 축의 변화를 시각적으로 볼 수 있는 파형(waveform)과 주파수상 진폭 축의 변화를 시각적으로 볼 수 있는 스펙트럼(spectrum)의 특징이 모두 결합된 구조로, 시간축과 주파수상의 따른 진폭의 차이를 흑백이나 색상으로 나타내는 것이다. 보통 흑백이면 색이 어두울수록 해당 주파수 신호가 강하게 나타난다고 보면 되고, RGB 3색이라면 파랑-초록-빨강 순으로 신호가 강하게 나타난다고 보면 된다 (colormap jet 기준). 그 외의 경우는 위 그림과 같이 오른쪽의 컬러바를 참조하면 된다 (컬러바에서 위로 갈수록 강한 신호라고 보면 된다).

창함수의 길이, 창함수의 중첩 구간 길이, 창함수에 추가적으로 주는 함수의 종류를 파라미터라 부르며, 각 파라미터를 얼마나 조정하느냐에 따라 스펙트로그램은 미묘하게 변한다.

음향학 음성학에서 상당히 많이 쓰이며, 특히 음성인식을 위한 말소리 분석에 필수적으로 이용된다 [6].

직접 그려보고자 한다면 무료 음성 분석 프로그램 Praat을 이용하면 된다. 파라미터를 세부적으로 조정하면서 스펙트로그램이 미묘하게 바뀌는 모양을 보고 싶다면 MATLAB, Python을 사용하면 된다.

스펙트로그램은 특정 소리 신호를 시각화하는 것이지만, 반대로 특정 글자 및 이미지를 스펙트로그램으로 변환하여 인위적으로 소리를 만드는 것도 가능하다. # 이를 위해서 FL 스튜디오 기본으로 내장된 VST인 Beepmap등과 같이 그림 파일을 파형으로 전환해주는 프로그램들이 존재한다.

참고로, 주파수 축의 최대치는 신호의 샘플링 주파수의 절반이다. 따라서 문서 최상단에 나온 신호의 샘플링 주파수는 대략 20 kHz라고 할 수 있다.

2. 활용 예


[dBFS] decibels relative to full scale. 해당 소리 파일에서 클리핑 (잘림) 없이 정상적으로 나오는 최대 신호의 크기를 의미한다. 참고로 클리핑된 소리는 소위 말하는 삑사리가 난다. [2] 실제로 소리의 시계열 파형을 확대해 보면 (알파벳은 특정한 파형을 비유한 것이다) a-a'-a*-b-b'-b* 이런 식의 패턴이 다양하게 이어지는 식으로 구성되었다는 점을 관찰할 수 있다. [3] 이걸 Power Spectral Density (PSD)라 부른다. [4] 비단 소리뿐이 아니라, 시계열 형태를 띄는 이산적인 신호라면 어떤 형태든 간에 삼각함수가 중첩된 형태로 근사하여 PSD와 스펙트로그램을 얻을 수 있다. [5] 참고로 푸리에 변환 대신 웨이블렛이라는 함수를 이용하는 방법도 있는데, 이런 경우는 스펙트로그램 대신 스케일로그램이라고 부른다. [6] 일반 스펙트로그램은 주파수간의 간격이 일정하지만, 사람의 청각계는 모든 주파수를 균일하게 받아들이지 않으므로 이를 고려한 멜 스펙트로그램이라는 것을 사용하기도 한다.