dev.Log

NVIDIA NeMo Speaker Diarization(SD) 구조 정리 본문

인공지능

NVIDIA NeMo Speaker Diarization(SD) 구조 정리

초코푸딩 2025. 12. 30. 10:59

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은 일반적으로 다음 단계를 거친다.

 
AudioVAD (Voice Activity Detection)Segmentation (Sliding Window)Speaker Embedding ExtractionClustering(Optional) Refinement / Overlap Handling

각 단계는 독립적인 모델 또는 모듈로 구성된다.


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
    등을 사용한다.

출력 결과는 보통:

 
(start_time, end_time, speaker_id)

형태의 화자 타임라인이다.

이 단계에서:

  • 화자 수 자동 추정
  • 유사 화자 병합
    이 이뤄진다.

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과 결합할 때는:

  1. ASR 수행
  2. ASR 결과의 timestamp와
  3. diarization 결과를 align
  4. 화자별 자막 생성

이 방식은:

  • 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 서비스를 설계할 때는
두 기술을 경쟁 관계로 보기보다
역할이 분리된 구성 요소로 바라보는 것이 현실적인 선택이다.

Comments