딥러닝 A to Z · 3-4

음성 — 공기의 떨림이 숫자 행렬이 되기까지

소리는 공기의 떨림이다. 이 떨림을 일정한 간격으로 재고(표본화), 정해진 칸에 맞춰 적고(양자화), 짧게 잘라(창) 어떤 높이의 떨림이 섞였는지 나눈 뒤(푸리에 변환), 사람 귀처럼 낮은 소리를 더 촘촘히 보는 눈금으로 다시 묶으면(멜) 신경망이 읽는 숫자 행렬이 된다. 모든 소리는 이 페이지에서 직접 합성한다.

1949표본화 정리를 정리한 Shannon의 논문 [R1]
8,000 → 1,9601초 소리(8 kHz)의 숫자가 멜 행렬이 되면
6.02 dB양자화 비트 하나가 늘 때 좋아지는 신호 대 잡음비
25 ms · 10 ms이 페이지의 창 길이와 창 간격
20칸멜 필터 수 (이 페이지)
2개Colab에서 바로 돌리는 코드
1떨림

소리는 공기의 떨림이다

스피커 판이 앞뒤로 떨면 공기가 빽빽해졌다 성겨졌다를 되풀이하며 퍼져 나간다. 1초에 몇 번 떠는지가 음의 높이(주파수), 얼마나 크게 떠는지가 소리의 크기(진폭)다.

소리
크기
2표본화

표본화 — 1초에 몇 번 재나

재는 횟수 ≥ 2 × 가장 높은 주파수Shannon, 1949

1초에 재는 횟수

초보자를 위한 풀이

떨림을 제대로 담으려면 한 번 떠는 동안 적어도 두 번은 재야 한다. 1초에 fs번 재면 fs/2 Hz까지만 담을 수 있고(나이퀴스트 한계), 그보다 빠른 떨림은 엉뚱하게 느린 떨림으로 보인다(에일리어싱) [R1]. 사람 귀는 대략 2만 Hz까지 들어서 음악 CD는 1초에 44,100번 잰다. 전화는 말소리만 담으면 되어 8,000번을 쓴다. 이 페이지의 멜 스펙트로그램도 8,000번(8 kHz)을 쓴다. 그래서 4,000 Hz보다 높은 소리는 담지 못한다. 실제 녹음 장비는 표본화 전에 한계보다 높은 소리를 걸러 낸다.

3양자화

양자화 — 잰 값을 몇 칸짜리 자에 적나

잰 값은 소수점이 끝없이 이어지는 실수다. 저장하려면 정해진 칸 가운데 가장 가까운 칸으로 반올림해야 한다. b비트면 칸이 2b개다. 반올림하며 생긴 차이가 양자화 잡음이다.

비트 수
4자르기·창

자르기와 창 — 짧게 잘라서, 가장자리를 부드럽게

말소리는 순간마다 바뀐다. 그래서 25 ms씩 잘라 조각마다 따로 분석하고, 10 ms씩 옮기며 반복한다. 자른 조각의 양 끝을 부드럽게 줄이는 곱셈이 "창"이다.

창 모양

왜 양 끝을 줄이나

그냥 자르면 조각의 양 끝에서 값이 뚝 끊긴다. 푸리에 변환은 그 조각이 끝없이 되풀이된다고 보고 계산한다. 그래서 끊긴 자리의 급격한 변화가 원래 없던 주파수로 새어 나간다(누출). Hann 창은 0에서 1로 부드럽게 올라갔다 내려오는 곡선(0.5 − 0.5·cos)을 곱해 양 끝을 0으로 만든다. 그 대가로 봉우리가 조금 넓어진다. 25 ms·10 ms는 말소리 분석에서 흔히 쓰는 값이고, 과제에 따라 바꿔 쓴다.

5푸리에 변환

푸리에 변환 — 섞인 떨림을 높이별로 나누기

어떤 소리든 높이가 다른 사인파들의 합으로 나타낼 수 있다. 푸리에 변환은 파형을 받아 "몇 Hz 성분이 얼마나 들어 있나"를 돌려준다. 프리즘이 흰 빛을 무지개로 나누는 것과 닮았다.

소리
6멜 스펙트로그램

멜 스펙트로그램 — 사람 귀의 눈금으로 묶은 숫자 행렬

멜 = 2595 · log10(1 + Hz / 700)"도레미파" 1초 → 98 프레임 × 20칸

볼 프레임

초보자를 위한 풀이

사람 귀는 낮은 소리의 작은 차이(100 Hz와 200 Hz)는 잘 구별하지만, 높은 소리의 같은 차이(3,000 Hz와 3,100 Hz)는 잘 구별하지 못한다. 멜 눈금은 낮은 주파수를 촘촘히, 높은 주파수를 성기게 나눈다. 푸리에 변환 결과(129칸)를 이 눈금의 삼각형 필터 20개로 묶고 로그(데시벨)를 취하면 멜 스펙트로그램이 된다. 위 식은 널리 쓰는 한 가지 정의다. 멜 눈금에 바탕을 둔 특징(MFCC)은 음성 인식에서 다른 특징보다 좋은 성능을 보여 오래 표준처럼 쓰였다 [R2].

7모델이 읽는 법

모델이 읽는 방법 — 그림처럼, 또는 순서대로

멜 스펙트로그램은 "주파수 × 시간" 숫자 행렬이다. 신경망은 이것을 두 가지 방식으로 읽는다. 자세한 구조는 앞 편들에서 다뤘다.

읽는 방식

Colab 코드 — 이 페이지를 직접 실행해 보기

두 코드 모두 Colab에 기본으로 설치된 라이브러리만 쓴다. "노트북(.ipynb) 내려받기" 후 Colab에서 파일 → 노트북 업로드로 열거나, 복사해서 새 노트북 칸에 붙여 넣는다.

코드 1 · 소리가 숫자 행렬이 되기까지 — 넘파이로 한 단계씩섹션 2~6과 연결 · numpy, matplotlib · CPU 1초

표본화·양자화·창·푸리에 변환·멜 스펙트로그램을 라이브러리 없이 계산한다. 페이지의 숫자(에일리어싱 3 Hz, 누출 7.95% → 0.05%, 멜 칸 값)가 그대로 나온다. 내 데이터로 바꾸려면 SIGNAL과 FS를 바꾼다.

실행 결과 (2026-10-03 실행, numpy 2.4 · matplotlib 3.10 · CPU). 계산에 난수가 없어 언제 실행해도 같다.
코드 2 · librosa로 같은 멜 스펙트로그램 만들기섹션 6과 연결 · numpy, librosa, matplotlib · CPU 수 초

실무에서 쓰는 librosa로 같은 소리를 멜 스펙트로그램으로 바꾸고, 직접 만든 결과와 비교한다. 녹음 파일을 쓰려면 코드 안의 [내 데이터로 바꾸려면] 줄을 따른다(파일은 각자 준비).

실행 결과 (2026-10-03 실행, librosa 1.0 · numpy 2.4 · CPU). librosa는 프레임을 FFT 길이(256)로 잘라 프레임이 하나 적다(97개). 그 밖의 숫자는 거의 같다(상관 0.998).

AI 응용 프롬프트 — 이 코드를 출발점으로 삼기

ChatGPT, Qwen, Claude 같은 AI 도우미에 붙여 넣는 프롬프트다. "복사"를 누르면 프롬프트 뒤에 고른 코드가 함께 붙는다. 〔 〕 안을 내 상황으로 바꿔 쓰면 된다.

함께 붙일 코드

AI의 답은 출발점일 뿐이다. 제안된 논문·수치·라이브러리 함수는 반드시 원문과 공식 문서로 확인한다. 공모전·논문에 AI 도움을 받았다면 주최 측과 학술지의 규정에 따라 사용 사실과 범위를 밝힌다.

용어 정리

본문의 노란 점선 밑줄과 같은 사전이다. 시리즈 전체에서 같은 표기를 쓴다. 섹션 이름을 누르면 처음 나온 곳으로 간다.

비유 모음 — 그리고 비유가 틀리는 지점

비유는 이해의 첫걸음이지만 오해의 씨앗도 된다. 초파리·뇌 비유에는 강도를 표시했다. 직접 실제로 같은 일을 한다는 근거가 있음 · 부분 일부 성질만 닮음 · 없음 대응하는 것이 알려지지 않음

개념일상 비유초파리·뇌 비유비유가 틀리는 지점
표본화달리는 사람을 1초마다 사진 찍기부분 초파리 겹눈도 정해진 속도로만 밝기 변화를 따라간다사진은 순간을 찍지만, 표본은 정해진 간격의 값일 뿐이다. 간격보다 빠른 움직임은 엉뚱하게 보인다(에일리어싱)
양자화키를 1 cm 눈금 자로 재기없음자의 눈금은 고르지만, 실제 오디오는 비트 수에 따라 눈금이 정해진다
창사진 가장자리를 흐리게 처리하기(비네팅)없음창은 보기 좋으라고가 아니라, 잘린 끝이 만드는 가짜 주파수를 줄이려고 곱한다
푸리에 변환프리즘이 빛을 무지개로 나누기직접 사람 달팽이관은 위치마다 다른 높이의 소리에 반응해 소리를 높이별로 나눈다달팽이관은 시간에 따라 계속 나누고 크기 변화에 비선형으로 반응한다. 푸리에 변환은 잘라 낸 조각 하나를 한 번에 계산한다
멜 눈금피아노 건반: 높이가 두 배가 될 때마다 같은 간격부분 사람이 느끼는 음 높이 간격멜 식은 여러 가지가 있고, 사람마다 듣는 방식도 다르다. 이 페이지의 식은 널리 쓰는 한 가지일 뿐이다
멜 스펙트로그램악보: 시간(가로) × 음높이(세로)없음악보는 음표 하나하나를 적지만, 스펙트로그램은 배음과 잡음까지 모든 에너지를 칸마다 적는다

저자 소개와 레퍼런스

E-1 저자 소개 · E-2 학술 레퍼런스 · E-3 그림 참고 자료

E-1 저자 소개

안상선 ((주)M-Robo 대표)

한국전기안전공사, 매일경제신문을 거쳐 현재 매일경제 사외벤처 (주)M-Robo를 창업해 대표로 재직하고 있다. (주)M-Robo는 언론사 사내 벤처로 시작한 미디어 벤처로, 국민일보에 로봇기자(스톡봇)을 서비스 했으며, 한국인터넷진흥원, 한국언론진흥재단, 한국방송통신전파진흥원 등에서 다수의 프로젝트를 진행했다. 이후 자체 A.I 뉴스 신문인 Money-Robo를 서비스 중이다. 대표 재직 중 아시아오픈 데이터 해커톤 우승, 데이터창업 분야 공로로 행정안전부 장관상을 2회 수상했으며, 인공지능 및 블록체인 분야에 대한 5개 특허 발명 및 등록자이다. 저서로는 “AI범죄와 자기방어”가 있으며, 핀테크분야, 통계학, 인공지능 분야에 대해서 한국기술교육대학교 온라인평생교육원 이러닝 콘텐츠 개발을 진행했다. 최종학위는 경제학 박사(동국대, 미시수리경제학)이다. 국민대학교, 호서대학교 등 여러 대학교에서 데이터 및 인공지능과 관련한 과목을 강의하고 있다. 자세한 프로필

강의

  • 안상선 (2025). 「비즈니스를 위한 데이터 과학」 강의안. 한국열린사이버대학교 인공지능융합학과.
  • 안상선 (2025). [K-디지털] 인공지능 자연어 처리. STEP(스마트직업훈련플랫폼), 한국기술교육대학교 온라인평생교육원.
  • 안상선 (2024). [K-디지털] 핀테크 데이터 분석 기초. STEP(스마트직업훈련플랫폼), 한국기술교육대학교 온라인평생교육원.

STEP 강의 바로가기: link.step.or.kr/1qyVoJ · link.step.or.kr/M9na9N · link.step.or.kr/brqEyc
사이트 개편으로 접속이 원활하지 않을 경우에는 www.step.or.kr로 접속 바랍니다.

논문과 발표

  • 안상선 (2025). 국민노후보장패널데이터를 활용한 가구지출 예측 모델 연구: 인공지능 모델 기반 접근. 「미래사회」, 16(2). 원문
  • 안상선 (2025). 국민노후보장패널데이터를 활용한 가구지출 예측 모델 연구: 인공지능 접근. 국민노후보장패널 학술대회 발표자료(2025.05.13), 국민연금공단 국민연금연구원. 발표자료
  • 안상선 (2025). SNS 텍스트 기반 마약 의심 거래 탐지 알고리즘에 대한 연구: 패턴 및 맥락 분석을 중심으로. 「미래사회」, 16(1). 원문
  • 안상선 (2024). 금융분야의 이상탐지 모델 보안을 위한 통계 기반의 적대적 데이터 대응 방안: 실증적 분석과 시뮬레이션 결과. 「미래사회」, 15(3). 원문
  • 안상선 (2024). 인공지능을 활용한 가상 캐릭터 특성 기반 SNS 포스팅 탐지 솔루션. 2024 Summer Newmedia Party 포스터 발표(2024.06.19), 서울미디어대학원대학교.
  • 안상선 (2024). 산업재해 패널 데이터를 활용한 머신러닝 모델. 제10회 산재보험패널 학술대회 포스터 발표(2024.05.17), 근로복지공단 근로복지연구원.
  • 안상선 (2024). 가상 자산 시계열 데이터의 분석과 예측: 시계열 모델 및 인공지능 모델의 비교, 개선점 제시. 「미래사회」, 15(1). 원문

E-2 학술 레퍼런스

  1. [R1] Shannon, C. E. (1949). Communication in the presence of noise. Proceedings of the IRE, 37(1), 10–21. doi:10.1109/JRPROC.1949.232969 — 히어로, 섹션 2 (표본화 정리)
  2. [R2] Davis, S. B., & Mermelstein, P. (1980). Comparison of parametric representations for monosyllabic word recognition in continuously spoken sentences. IEEE Transactions on Acoustics, Speech, and Signal Processing, 28(4), 357–366. — 섹션 6 (멜 주파수 켑스트럼이 비교한 특징 가운데 가장 좋은 인식 성능)

E-3 그림 참고 자료

모든 소리는 페이지에서 합성했다(녹음 없음).

  • 멜 눈금 식 2595·log₁₀(1 + f/700)과 25 ms·10 ms 창은 음성 처리에서 널리 쓰는 관례 값이다. 다른 정의(Slaney 방식 등)를 쓰는 라이브러리도 있어, 코드 2에서는 같은 정의로 맞췄다

교육자를 위한 TIP

강사, 실무 OJT 담당자, 튜터를 위한 운영 안내다. 시간은 예상치이므로 실제 수업에 맞춰 조정한다.

대상음성·소리 데이터(콜센터 녹음, 설비 소음, 음성 명령)를 다루려는 대학생·실무자
선수 지식사인 곡선과 로그. 3-3의 "사진은 숫자 격자"를 알면 섹션 6·7이 쉽다
학습 목표① 표본화·양자화가 무엇을 잃는지 숫자로 설명한다 ② 창·푸리에 변환·멜 필터를 거쳐 소리가 행렬이 되는 과정을 순서대로 설명한다 ③ 멜 행렬을 CNN·순서 모델이 읽는 두 방식을 구별한다
예상 시간읽기 35~45분 · 애니메이션·소리 시연 20분 · Colab 실습 25분 (코드 1 15분, 코드 2 10분)

운영안 세 가지

강의형 50분

개념 중심

도입 5분(섹션 1 소리 듣기) → 섹션 2 에일리어싱 10분 → 섹션 3 비트별 소리 비교 10분 → 섹션 4·5 15분 → 섹션 6 숫자 행렬 5분 → 확인 문제 5분.

실무 OJT 90분

업무 적용 중심

섹션 2·3을 우리 장비의 녹음 사양(표본화 주파수·비트)과 대조 15분 → 섹션 4~6 25분 → 코드 2에 자기 녹음 파일 넣기 30분 → "우리 데이터는 CNN형일까 순서형일까" 토론 20분.

1:1 튜터링

수준별 진도

입문자는 섹션 1·2·5·6만. 중급자는 코드 1의 mel_filterbank를 손으로 한 칸 계산하게 하고, 페이지의 필터 삼각형 그림과 대조한다.

섹션별 운영 포인트

섹션멈춰서 물어볼 질문조작 팁
1 떨림"440 Hz는 220 Hz보다 몇 배 빨리 떨까? 어떻게 들릴까?"두 음을 차례로 들려준다(소리가 나지 않으면 기기 음량 확인)
2 표본화"1초에 8번 재면 왜 3 Hz로 보일까?"50 → 12 → 8번 순서로 누른다
3 양자화"3비트 소리와 16비트 소리는 무엇이 다르게 들릴까?"3비트와 16비트로 각각 들려준다
4 자르기·창"그냥 자르면 왜 없던 주파수가 생길까?"직사각형 ↔ Hann을 번갈아 누르며 아래 그래프의 치맛자락을 본다
5 푸리에 변환"같은 '도'인데 피아노와 바이올린은 왜 다르게 들릴까?"순음 → 악기음 순서로 들려주고 봉우리 수를 비교한다
6 멜 스펙트로그램"1초 소리가 몇 개의 숫자가 되었나?"도 → 파 프레임을 눌러 가장 밝은 칸이 위로 옮겨 가는 것을 본다
7 모델이 읽는 법"초인종 소리 분류와 받아쓰기는 어떤 방식이 어울릴까?"두 방식을 번갈아 누른다

흔한 오해 Top 5

오해바른 설명보여 줄 장면
많이 잴수록 언제나 좋다담고 싶은 가장 높은 주파수의 2배면 충분하다. 그 이상은 저장 공간만 늘린다섹션 2의 12번(5 Hz는 담김)
비트가 적으면 소리가 작아진다크기가 아니라 잡음이 커진다. 비트 하나에 약 6 dB씩 깨끗해진다섹션 3
푸리에 변환은 소리 전체를 한 번에 분석한다짧은 조각(프레임)마다 따로 한다. 그래서 시간에 따른 변화를 볼 수 있다섹션 4·6
스펙트로그램은 그림이니 사진처럼 다뤄도 된다가로(시간)와 세로(주파수)의 뜻이 다르다. 세로로 옮기면 다른 소리가 된다섹션 7
멜 스펙트로그램은 소리를 그대로 담는다위상과 섬세한 주파수 정보를 버리고 줄인 요약이다(8,000 → 1,960)섹션 6 숫자 요약

확인 문제 (해설은 눌러서 펼치기)

Q1. 표본화 주파수 8,000 Hz로 담을 수 있는 가장 높은 주파수는?

8,000 ÷ 2 = 4,000 Hz(나이퀴스트 한계).

Q2. 5 Hz 떨림을 1초에 8번 재면 몇 Hz로 보이나?

|5 − 8| = 3 Hz. 한계(4 Hz)를 넘어 에일리어싱이 생긴다.

Q3. 8비트와 16비트의 이론 SNR 차이는?

6.02 × (16 − 8) ≈ 48 dB. 이론값은 49.92 dB와 98.08 dB다.

Q4. 1초짜리 8 kHz 소리를 25 ms 창(200개), 10 ms 간격(80개)으로 자르면 프레임은 몇 개인가?

(8,000 − 200) ÷ 80 + 1 = 98개(소수점 버림 후 1을 더함).

Q5. 프레임 98개 × 멜 칸 20개 행렬의 숫자는 몇 개이고, 원래 소리 숫자의 몇 분의 1인가?

1,960개. 8,000 ÷ 1,960 ≈ 4.1, 약 4분의 1이다.

Colab 과제

기본

코드 1의 NMEL을 20에서 40으로, FRAME을 200에서 400으로 바꾼다. 멜 행렬의 크기와 그림이 어떻게 달라지는지, 시간 해상도와 주파수 해상도의 맞바꿈과 연결해 세 문장으로 쓴다.

도전

자기 목소리나 설비 소리를 직접 녹음한 파일로 코드 2를 실행한다(파일은 각자 준비, 개인정보 주의). 같은 소리를 두 번 녹음해 멜 행렬이 얼마나 비슷한지 상관계수로 비교하고, 무엇이 차이를 만드는지 쓴다.

난이도 조절과 더 배우기

입문자섹션 3·4는 건너뛰어도 흐름이 끊기지 않는다. 섹션 1·5의 소리 듣기를 꼭 해 본다
심화창 길이·간격·멜 칸 수가 인식 성능에 미치는 영향을 조사하게 한다. 조사한 논문은 원문으로 확인한다
더 배우기안상선, 「비즈니스를 위한 데이터 과학」 강의안 (데이터 과학 전반) · STEP [K-디지털] 인공지능 자연어 처리 (3-5·3-8과 연결) · STEP [K-디지털] 핀테크 데이터 분석 기초 (3-6과 연결)
강사용 자료확인 문제의 채점 기준과 과제 예시 답안은 교육자용 정답 페이지 (3-4)에서 볼 수 있다

수고하셨습니다!

「3-4 음성」 편을 끝까지 읽었어요. 연구실 식구들이 한마디씩 정리해 드립니다.

박사
박사공기의 떨림이 숫자 행렬이 되는 과정을 모두 거쳤어요.
  • 1초에 재는 횟수의 절반까지만 소리를 담을 수 있다
  • 창으로 잘라 푸리에 변환하면 소리가 높이별로 나뉜다
  • 1초 소리의 숫자 8,000개가 멜 행렬 1,960개가 된다
조수
조수3비트 소리는 귀가 아파요!
초파리 연구원
초파리 연구원내 날갯소리도 멜 행렬로 부탁해.