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. 활용 예
- 포켓몬스터 보라타운 BGM 괴담 : 비록 실제가 아닌 한 인물의 조작이었지만, 최소한 이 인물이 조작한 음성 파일 자체는 정말 스팩토그램을 반영해서 제작되었다.
- Aphex Twin의 노래 Windowlicker에는 나선 모양의 스팩트로그램이 숨겨져있고, Equation에는 자신의 괴상한 초상화를 스팩트로그램으로 숨겨넣었다.
- 마데온의 노래 Innocence와 Pixel Empire
- 영화 다크 나이트 라이즈의 트위터 주소를 이 방법으로 공개했다. 이 경우는 일종의 ARG
- 해킹 대회 PADOCON 2011 에도 이와 관련 문제가 나왔다.
- FEZ의 OST. 이 경우는 사람 귀로 안들리는 아주 작은 주파수를 타겟으로 스팩토그램을 설치했기 때문에 스팩토그램의 주파수 폭을 매우 낮게 해야 보이는 그림이다.
- 하이 레졸루션 오디오의 진위여부를 가리는데도 자주 사용된다. 만약 스펙토그램이 22 kHz 영역 위까지 뻗어 있다면 그것은 바로 진짜. 그렇지 않고 22 kHz에서 딱 잘린다면 가짜. 하이레조 불모지인 한국에서 고해상도 음악파일을 구매한다면 22 kHz에서 딱 짤리는 것을 볼 수 있다.
- 마인크래프트에서도 스펙트로그램으로 만든 사운드가 존재한다. 동굴 소리 14번은 크리퍼 이미지가 나오고 음반 아이템인 디스크 11은 마지막에 스티브 얼굴과 함께 1241숫자가 출력된다.
- 두근두근 문예부!의 떡밥에도 스펙트로그램에 QR코드를 새기는 식으로 사용된 바가 있다.
- 심지어 그림 인공지능인 Stable Diffusion으로 이 스펙트로그램의 특성을 역이용해 작곡AI에 응용하려는 시도가 나왔다. 원리는 다음과 같다. 특정한 음악을 스펙트로그램으로 풀어낸뒤 학습시켜서, 학습된 재료와 명령어 입력을 통해 인공지능 생성된 스펙트로그램을 다시 음악으로 재생시키는 식. #
- 넓은 의미에서 오디오 워터마크 용도로도 쓰인다. 시그니처 사운드를 직접 짜넣는 경우가 아니면 안들리는 대역에 스펙트로그램으로 워터마크를 박아넣는 케이스도 존재.
[dBFS] decibels relative to full scale. 해당 소리 파일에서 클리핑 (잘림) 없이 정상적으로 나오는 최대 신호의 크기를 의미한다. 참고로 클리핑된 소리는 소위 말하는 삑사리가 난다.[2] 실제로 소리의 시계열 파형을 확대해 보면 (알파벳은 특정한 파형을 비유한 것이다) a-a'-a*-b-b'-b* 이런 식의 패턴이 다양하게 이어지는 식으로 구성되었다는 점을 관찰할 수 있다.[3] 이걸 Power Spectral Density (PSD)라 부른다.[4] 비단 소리뿐이 아니라, 시계열 형태를 띄는 이산적인 신호라면 어떤 형태든 간에 삼각함수가 중첩된 형태로 근사하여 PSD와 스펙트로그램을 얻을 수 있다.[5] 참고로 푸리에 변환 대신 웨이블렛이라는 함수를 이용하는 방법도 있는데, 이런 경우는 스펙트로그램 대신 스케일로그램이라고 부른다.[6] 일반 스펙트로그램은 주파수간의 간격이 일정하지만, 사람의 청각계는 모든 주파수를 균일하게 받아들이지 않으므로 이를 고려한 멜 스펙트로그램이라는 것을 사용하기도 한다.