DCGAN으로 감정 음성 데이터를 늘려서 인식 성능을 끌어올린 이야기
논문: 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만 장) 같은 대규모 데이터셋이 있지만, 감정 음성 데이터셋은 사정이 다르다.
| 데이터셋 | 규모 |
|---|---|
| RAVDESS | 1,440개 |
| EmoDB | 454개 |
| IEMOCAP | ~10,000개 |
이 정도 규모로는 딥러닝 모델이 감정의 복잡한 패턴을 충분히 학습하기 어렵다. 이 문제를 해결하기 위해 DCGAN(Deep Convolutional GAN)을 활용한 데이터 증강을 시도했다.
핵심 아이디어
아이디어는 간단하다.
- 음성을 멜 스펙트로그램(mel-spectrogram) 이미지로 변환한다
- DCGAN으로 합성 멜 스펙트로그램을 생성한다
- 원본 + 합성 데이터로 감정 인식 모델을 학습한다
멜 스펙트로그램은 음성의 시간-주파수 정보를 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 변화 (증강 전 → 후)
특히 데이터가 적었던 클래스에서 성능 향상이 두드러졌다.
| 감정 | 원본 정확도 | 증강 후 정확도 |
|---|---|---|
| Angry | 94.7% | 94.7% |
| Disgust | 71.4% | 85.7% |
| Fear | 81.8% | 90.9% |
| Happy | 63.6% | 81.8% |
| Neutral | 83.3% | 100% |
| Sad | 88.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 기반 데이터 증강을 음성 감정 인식에 자연스럽게 적용할 수 있었다. 특히 데이터가 부족한 감정 클래스에서 성능 향상이 두드러졌다는 점이 실용적 가치를 보여준다.
감정 음성 인식은 단순한 분류 문제를 넘어, 사람과 기계가 더 자연스럽게 소통하기 위한 핵심 기술이다. 데이터 증강은 이 분야의 발전을 가속화하는 현실적인 해법 중 하나다.