dev.Log
NVIDIA NeMo Speaker Diarization(SD) 구조 정리 본문
ASR과 분리된 화자 인식 파이프라인
STT 시스템을 실제 서비스로 운영하다 보면
단순히 “무엇을 말했는지”를 넘어서
**“누가 언제 말했는지”**가 필요한 경우가 많다.
이를 해결하는 기술이 **Speaker Diarization(SD)**이며,
NVIDIA NeMo는 ASR과 분리된 독립적인 diarization 파이프라인을 제공한다.
이 글에서는 NeMo 내부의 SD 로직이
어떤 구성과 철학으로 설계되어 있는지 정리한다.
1. NeMo에서 Speaker Diarization의 위치
NeMo에서 diarization은:
- ASR의 부가 기능이 아니라
- 독립적인 음성 분석 파이프라인이다.
즉,
- ASR 없이도 diarization만 수행 가능
- diarization 결과를 ASR 결과에 후처리로 결합
하는 구조를 기본 전제로 한다.
이 설계 덕분에:
- ASR 모델 교체
- diarization 모델 교체
- 파이프라인 단계별 튜닝
이 비교적 자유롭다.
2. NeMo Diarization 전체 파이프라인
NeMo의 diarization은 일반적으로 다음 단계를 거친다.
각 단계는 독립적인 모델 또는 모듈로 구성된다.
3. VAD (Voice Activity Detection)
역할
- 음성 구간과 무음 구간을 구분
- 이후 단계에서 불필요한 연산을 줄임
특징
- Frame 단위 또는 짧은 window 단위
- ASR과 분리되어 동작
- diarization 정확도에 직접적인 영향
VAD 성능이 낮으면:
- 무음이 speaker embedding에 포함되거나
- 음성 구간이 잘려 diarization 품질이 급격히 떨어진다.
4. Segmentation (구간 분할)
VAD로 얻은 음성 구간을
고정 길이 슬라이딩 윈도우로 다시 나눈다.
- 예: 1.5초 window, 0.75초 overlap
- 하나의 화자가 여러 window에 걸쳐 등장하도록 설계
이 단계의 목적은:
- speaker embedding 추출을 안정화
- 긴 발화를 작은 단위로 나누기 위함이다.
5. Speaker Embedding Extraction
각 segment에서 speaker embedding을 추출한다.
- 흔히 x-vector 계열 구조
- 발화 내용이 아니라 화자 고유 특성을 표현
- 동일 화자면 embedding 간 거리가 가까워지도록 학습됨
이 embedding이
- diarization의 핵심 표현 공간이 된다.
6. Clustering (화자 묶기)
추출된 embedding들을
“같은 사람끼리 묶는” 단계다.
NeMo에서는:
- Spectral Clustering
- Hierarchical Clustering
등을 사용한다.
출력 결과는 보통:
형태의 화자 타임라인이다.
이 단계에서:
- 화자 수 자동 추정
- 유사 화자 병합
이 이뤄진다.
7. Multi-Scale Diarization (MSDD)
NeMo의 중요한 특징 중 하나는
Multi-Scale Diarization 지원이다.
- 서로 다른 window 크기
- 서로 다른 시간 해상도
에서 얻은 결과를 결합한다.
효과:
- 짧은 발화
- 화자 전환이 잦은 대화
- 겹말(Overlap)에 대한 강건성 향상
실제 회의 음성, 콜센터 데이터에서
단일 스케일보다 안정적인 결과를 낸다.
8. Overlap Handling (겹말 처리)
NeMo diarization은:
- 기본적으로 “한 시점에 한 화자”를 가정
- 하지만 겹말이 많은 환경에서는 이를 보완한다.
- Overlap 감지
- Re-segmentation
- 후처리 smoothing
을 통해 실사용 가능한 수준으로 개선한다.
9. ASR과의 결합 방식
NeMo diarization의 출력은
텍스트가 아닌 시간 기반 화자 정보다.
ASR과 결합할 때는:
- ASR 수행
- ASR 결과의 timestamp와
- diarization 결과를 align
- 화자별 자막 생성
이 방식은:
- Whisper, NeMo ASR, 외부 ASR
어느 쪽에도 적용 가능하다.
10. NeMo Diarization의 설계 철학
NeMo의 SD 로직은 다음 철학을 따른다.
- ASR과 diarization은 분리
- 화자 인식은 전용 모델로 해결
- 파이프라인 기반으로 확장 가능
- 실무 데이터(회의, 콜센터) 중심 설계
그래서:
- “간단히 화자 구분”보다
- 신뢰 가능한 화자 타임라인 생성에 초점을 둔다.
11. 정리
- NeMo의 Speaker Diarization은
- ASR과 독립된 파이프라인이다.
- VAD → Segmentation → Embedding → Clustering 구조를 따른다.
- Multi-scale diarization과 overlap handling으로
실사용 환경을 고려한다. - 결과는 화자 ID 기반 타임라인이며,
ASR 결과와 후처리로 결합한다.
마무리
Whisper가 “무엇을 말했는지”에 강점이 있다면,
NeMo의 diarization은
“누가 언제 말했는지”를 안정적으로 복원하는 데 초점이 맞춰져 있다.
실제 STT 서비스를 설계할 때는
두 기술을 경쟁 관계로 보기보다
역할이 분리된 구성 요소로 바라보는 것이 현실적인 선택이다.
'인공지능' 카테고리의 다른 글
| NeMo Diarization vs pyannote.audio 구조 비교 (0) | 2025.12.30 |
|---|---|
| 실제 서비스에서 Speaker Diarization 성능 평가 지표(DER) 정리 (1) | 2025.12.30 |
| In-batch Augmentation이란 무엇인가 (0) | 2025.12.30 |
| ECNR이 뭐길래 STT 성능을 좌우할까 (0) | 2025.12.30 |
| Baseline / Ablation, 그리고 라벨링 이야기 (0) | 2025.12.29 |