목록으로

DCGAN으로 감정 음성 데이터를 늘려서 인식 성능을 끌어올린 이야기

1

논문: Enhanced Speech Emotion Recognition Using DCGAN-Based Data Augmentation 게재: Electronics (MDPI, SCIE) — 2023.09 DOI: https://doi.org/10.3390/electronics12183966


왜 이 연구를 시작했는가

음성 감정 인식(Speech Emotion Recognition, SER)은 스마트 홈, 헬스케어, 고객 서비스 등 다양한 분야에서 점점 중요해지고 있다. 하지만 현실적인 문제가 하나 있다. 감정 음성 데이터가 턱없이 부족하다는 것이다.

이미지 분야에는 ImageNet(1,400만 장), CIFAR-10(6만 장) 같은 대규모 데이터셋이 있지만, 감정 음성 데이터셋은 사정이 다르다.

데이터셋규모
RAVDESS1,440개
EmoDB454개
IEMOCAP~10,000개

이 정도 규모로는 딥러닝 모델이 감정의 복잡한 패턴을 충분히 학습하기 어렵다. 이 문제를 해결하기 위해 DCGAN(Deep Convolutional GAN)을 활용한 데이터 증강을 시도했다.


핵심 아이디어

아이디어는 간단하다.

  1. 음성을 멜 스펙트로그램(mel-spectrogram) 이미지로 변환한다
  2. DCGAN으로 합성 멜 스펙트로그램을 생성한다
  3. 원본 + 합성 데이터로 감정 인식 모델을 학습한다

멜 스펙트로그램은 음성의 시간-주파수 정보를 2D 이미지 형태로 표현한 것이다. 인간의 청각 특성을 반영한 mel-scale을 사용하기 때문에 감정의 미묘한 차이가 시각적으로 드러난다. 이미지니까 이미지 생성 모델(GAN)을 쓸 수 있다는 것이 핵심 발상이다.


데이터 전처리

Envelope Detection으로 무음 제거

원본 음성 파일에는 발화 전후로 무음 구간이 포함되어 있다. librosa의 envelope detection을 사용해 STFT 기반으로 각 프레임의 최대 진폭을 추출하고, 무음 구간을 제거했다.

원본: [--무음--][발화 구간][--무음--] 처리 후: [발화 구간]

dB-scaled Mel-spectrogram 변환

전처리된 음성을 librosa의 melspectrogram 함수로 변환한 뒤, dB 스케일을 적용했다.

S_dB = 10 * log10(S / ref)

실제 환경에서 발생하는 큰 다이내믹 레인지를 압축해서, 모델 학습에 더 적합한 형태로 만드는 과정이다.


DCGAN으로 멜 스펙트로그램 생성

Generator 구조

입력: 100차원 랜덤 노이즈 벡터 → Linear [100] → [512, 8, 8] → ConvTranspose2d + BatchNorm + ReLU → [256, 16, 16] → ConvTranspose2d + BatchNorm + ReLU → [128, 32, 32] → ConvTranspose2d + BatchNorm + ReLU → [64, 64, 64] → ConvTranspose2d + Tanh → [1, 128, 128] 출력: 128x128 멜 스펙트로그램 이미지

Discriminator 구조

입력: 128x128 멜 스펙트로그램 이미지 → Conv2d + LeakyReLU + BatchNorm (stride 2) × 4 → Sigmoid 출력: 진짜/가짜 확률 (0~1)

각 감정 클래스별로 원본 데이터 수만큼 합성 데이터를 생성했다. 예를 들어 RAVDESS의 Angry가 192개이면, 합성 데이터 192개를 추가하여 총 384개로 학습에 사용했다.


감정 인식 모델: CNN + BiLSTM

생성된 데이터와 원본 데이터를 합쳐서 CNN + BiLSTM 모델로 감정을 분류했다.

입력: 멜 스펙트로그램 → CNN Module 1: Conv(64) + BN + ReLU + MaxPool(2×2) → CNN Module 2: Conv(128) + BN + ReLU + MaxPool(4×4) → CNN Module 3: Conv(256) + BN + ReLU + MaxPool(4×4) → Flatten → BiLSTM (256 units) → Dense(128, L2 reg) → Softmax 출력: 6개 감정 클래스 확률

CNN이 멜 스펙트로그램에서 공간적 특징(주파수 패턴, 에너지 분포)을 추출하고, BiLSTM이 시간적 특징(감정 변화의 순서, 양방향 맥락)을 포착하는 구조다.


실험 결과

전체 성능 비교

| 데이터셋 | WA (원본) | WA (증강) | UA (원본) | UA (증강) | |----------|----------|----------|----------|--------- -| | RAVDESS | 64.8% | 72.3% | 64.2% | 72.3% | | EmoDB | 80.6% | 90.4% | 82.6% | 91.3% |

두 데이터셋 모두에서 약 7~10%p의 성능 향상이 나타났다.

EmoDB Confusion Matrix 변화 (증강 전 → 후)

특히 데이터가 적었던 클래스에서 성능 향상이 두드러졌다.

감정원본 정확도증강 후 정확도
Angry94.7%94.7%
Disgust71.4%85.7%
Fear81.8%90.9%
Happy63.6%81.8%
Neutral83.3%100%
Sad88.9%88.9%

Happy(71→142개)와 Disgust(46→92개)처럼 원래 데이터가 적었던 감정에서 성능이 크게 올랐다. 이는 DCGAN이 소수 클래스의 데이터 분포를 효과적으로 보강했음을 보여준다.


배운 점과 한계

잘 된 점

  • 이미지 생성 기법을 음성에 성공적으로 적용 — 멜 스펙트로그램이라는 중간 표현 덕분에 가능했다
  • 데이터 불균형 문제 완화 — 소수 클래스 성능이 크게 향상
  • 별도의 음성 증강 기법 없이 범용적인 이미지 GAN을 활용

한계와 개선 방향

  • RAVDESS, EmoDB 두 데이터셋만 검증 — 더 다양한 언어/데이터셋 검증 필요
  • 생성 모델로 DCGAN만 사용 — StyleGAN, Diffusion Model 등 최신 생성 모델 비교 필요
  • 생성된 멜 스펙트로그램의 품질 정량 평가(FID 등)가 추가되면 좋겠음

기술 스택

항목사용 기술
프레임워크PyTorch
음성 처리librosa
생성 모델DCGAN (Generator + Discriminator)
인식 모델CNN + BiLSTM
학습 설정RMSprop, ReduceLROnPlateau, lr=0.001
데이터셋RAVDESS (1,440개), EmoDB (454개)
감정 클래스Angry, Disgust, Fear, Happy, Neutral,
Sad

마무리

"데이터가 부족하면 만들면 된다"는 발상이 실제로 유효했다. 멜 스펙트로그램이라는 2D 표현 덕분에, 이미지 도메인에서 검증된 GAN 기반 데이터 증강을 음성 감정 인식에 자연스럽게 적용할 수 있었다. 특히 데이터가 부족한 감정 클래스에서 성능 향상이 두드러졌다는 점이 실용적 가치를 보여준다.

감정 음성 인식은 단순한 분류 문제를 넘어, 사람과 기계가 더 자연스럽게 소통하기 위한 핵심 기술이다. 데이터 증강은 이 분야의 발전을 가속화하는 현실적인 해법 중 하나다.

DCGAN으로 감정 음성 데이터를 늘려서 인식 성능을 끌어올린 이야기 | JYBAEK