Eleven v4를 소개합니다역대 가장 감성적인 모델, Eleven v4를 만나보세요.

콘텐츠로 건너뛰기

화자 분할이란? 작동 방식과 활용 사례

작성자
Jack Limebear
게시일
최종 업데이트

듣기이 글 오디오로 듣기

화자 분리(speaker diarization)는 화자 수를 알 수 없는 오디오 스트림을 받아 레이블이 지정된 구간의 타임라인을 생성합니다. 예를 들어 0:00~0:42는 화자 A, 0:42~1:15는 화자 B, 1:15 이후에는 다시 화자 A로 표시됩니다. 시스템은 화자가 누구인지는 모르지만 서로 다른 사람이라는 점은 알며, 녹음 전체에서 레이블을 일관되게 유지합니다.

이 프로세스 덕분에 여러 화자가 있는 오디오를 활용할 수 있습니다. 회의록, 콜센터 분석, 인터뷰 녹취, 팟캐스트 편집, 법률 기록은 모두 무엇을 말했는지뿐 아니라 누가 말했는지를 알아야 합니다. 

이 가이드에서는 화자 분리의 작동 방식, 세그먼테이션 및 식별 같은 관련 기술과의 차이점, 이를 처리하는 오픈 소스 도구, 화자 분리 시스템의 성능 측정 방법을 설명합니다.

요약

  • 화자 분리는 오디오 녹음을 발화자 기준으로 구간화하여, 실명을 식별하지 않고 레이블이 지정된 화자 발화 구간을 생성합니다.
  • 화자 분리는 화자가 바뀌는 시점을 찾는 화자 세그먼테이션, 음성을 실제 이름과 연결하는 화자 식별과 다릅니다.
  • 화자 분리 성능은 전반적인 정확도를 나타내는 화자 분리 오류율(DER)과 모든 화자에게 정확도가 유지되는지 확인하는 자카드 오류율(JER)로 측정합니다.

화자 분리란 무엇이며 어떻게 작동하나요?

화자 분리는 누가 말하는지에 따라 오디오 스트림을 구간으로 나누는 프로세스입니다. 화자 분리가 적용된 트랜스크립트는 각 오디오 구간에 화자 ID를 부여합니다. 간단히 말해, “누가 언제 말했는가?”라는 질문에 답합니다. 

회의의 원본 트랜스크립트는 말한 내용을 제공하는 반면, 화자 분리 트랜스크립트는 화자 1이 질문했고 화자 2가 답했으며 화자 3이 중간에 끼어들었다는 정보까지 알려 줍니다.

대부분의 화자 분리 시스템은 다음 4단계 파이프라인을 따릅니다.

Diarization pipeline: voice detection, segmentation, embeddings, clustering, and anonymous labels.

각 단계를 더 자세히 살펴보겠습니다.

음성 활동 감지(VAD)

음성 활동 감지는 음성을 침묵, 배경 소음, 음악, 키보드 타건음 등 그 밖의 모든 소리와 구분합니다. 실제 음성이 포함된 오디오 구간만 다음 단계로 넘어갑니다.

이 단계에서 오류가 발생하면 이후 모든 단계에 영향을 미칩니다.

세그먼테이션

그런 다음 음성이 포함된 구간을 화자가 바뀔 가능성이 높은 지점에서 나눕니다. 예를 들면 음색 변화, 발화 사이의 휴지, 음높이 패턴의 변화 등이 있습니다. 대부분의 시스템은 후보 경계 양쪽의 음향 특성을 비교하여 이러한 변화 지점을 직접 감지합니다. 

일부 세그먼테이션 도구는 오디오를 2초 단위처럼 짧고 균일한 윈도우로 나눈 후, 클러스터링 단계에서 같은 화자에 속하는 인접 윈도우를 병합합니다.

임베딩 추출

각 음성 구간은 해당 구간의 화자가 지닌 음성 특성을 포착하는 수치 벡터인 화자 임베딩으로 변환됩니다. 같은 화자의 임베딩은 벡터 공간에서 서로 가깝게 군집을 이루고, 다른 화자의 임베딩은 더 멀리 떨어집니다.

클러스터링

이후 임베딩을 그룹화하여 같은 화자의 구간이 동일한 레이블을 갖도록 합니다. 시스템은 일반적으로 화자 수를 미리 알지 못하므로, 클러스터링 알고리즘이 약간 다르게 들리는 구간이 새 화자인지 아니면 다른 톤으로 말하는 동일 인물인지 추론해야 합니다.

Embeddings cluster same-speaker samples together, but speaker count is unknown in advance in speaker diarization

출력은 보통 트랜스크립트와 함께 제공되는, 시간 범위에 연결된 화자 레이블 집합입니다. 예를 들어 두 사람이 통화한 화자 분리 트랜스크립트는 다음과 같습니다.

  • [speaker_0] 전화 주셔서 감사합니다. 무엇을 도와드릴까요?
  • [speaker_1] 안녕하세요, 지난달 청구서 때문에 전화드렸습니다.
  • [speaker_0] 물론입니다. 확인해 보겠습니다.

레이블은 익명이며 내부적으로 일관성을 유지합니다. Speaker_0는 나타날 때마다 같은 음성이지만, 시스템은 speaker_0의 이름이 Fergal이라는 사실은 모릅니다. 실제 신원을 연결하는 일은 별개의 작업이며, 아래에서 다룹니다.

화자 세그먼테이션과 화자 식별의 주요 차이점

화자 세그먼테이션과 화자 식별은 모두 화자 분리와 밀접하게 겹치므로, 이 세 가지는 종종 혼동됩니다.

각각 약간씩 다른 문제를 해결하므로, 도구를 평가할 때는 차이를 이해하는 것이 중요합니다.

Segmentation
Question it answers
Where do speaker changes occur?
Output
Change-point boundaries
Requires contextual information
No
Diarization
Question it answers
Who spoke when (anonymous labels)?
Output
Labeled segments (speaker_0, speaker_1)
Requires contextual information
No
Identification
Question it answers
Who are the speakers (real identities)?
Output
Named speakers matched to voiceprints
Requires contextual information
Yes

앞서 설명했듯 화자 세그먼테이션은 파이프라인 초반에 수행되는 화자 분리의 한 단계입니다. 레이블을 부여하지 않고 화자가 한 음성에서 다른 음성으로 바뀌는 경계를 찾습니다. 세그먼테이션은 0:42에 변화가 일어났다고 알려 줍니다. 화자 분리는 여기서 한 단계 더 나아가 결과 구간을 그룹화하고 완전한 레이블이 지정된 출력을 생성하여, 1:15의 음성이 녹음 시작 시점에 말한 음성과 동일하다는 것을 알려 줍니다.

화자 식별은 화자 분리와는 별개의 기능이지만 자주 함께 사용됩니다. 식별은 해당 화자들이 실제로 누구인지 판단합니다. 식별 시스템은 등록된 음성 지문과 음성을 비교하고, 알려진 화자 참조 정보를 활용해 신원을 반환합니다. 식별 후 speaker_0와 speaker_1은 “Fergal”과 “Eric”이 됩니다.

많은 제품은 더 포괄적인 최종 트랜스크립트를 만들기 위해 이러한 도구를 결합합니다. 회의 도구는 수동 검토 없이 모든 참석자의 발언을 이름으로 표시할 수 있도록, 이를 자동으로 처리할 수 있습니다(Teams나 Meet에서 설정한 이름 같은 문자열을 가져오는 경우도 있습니다). 

Comparison of segmentation, speaker diarization, and identification; diarize first, then identify.

인기 있는 오픈 소스 화자 분리 도구 및 라이브러리

제어 기능, 유연성 또는 로컬 배포가 필요하다면 오픈 소스 화자 분리 도구를 고려할 만합니다. 최적의 선택은 처리하는 오디오 유형(전화 통화, 회의, 팟캐스트, 방송), 지연 시간 요구 사항, 투입할 수 있는 엔지니어링 시간에 따라 달라집니다. 

가장 널리 사용되는 몇 가지 옵션을 소개합니다.

Pyannote.audio

Pyannote.audio는 화자 분리를 위해 특별히 구축된 PyTorch 기반 툴킷으로, 가장 널리 사용되는 오픈 소스 옵션 중 하나입니다. VAD, 세그먼테이션, 임베딩, 클러스터링을 포함한 전체 화자 분리 스택을 포괄하는 사전 학습 파이프라인과 자체 데이터로 모델을 학습하거나 파인튜닝할 수 있는 구성 요소를 제공합니다. 

사전 학습 모델은 Hugging Face를 통해 배포되며, 대규모 트랜스크립션 프로젝트에서 화자 분리 계층으로 흔히 사용됩니다.

WhisperX

WhisperX는 OpenAI의 Whisper ASR을 화자 분리 및 강제 정렬과 결합합니다. Whisper만으로도 뛰어난 트랜스크립트를 생성하지만 화자 레이블을 부여하지 않으며, 타임스탬프도 대략적인 수준에 그칩니다. WhisperX는 단어 수준의 타임스탬프 정렬을 추가하고 pyannote 기반 화자 분리를 통합하여, 각 단어에 정확한 타임스탬프와 화자 레이블이 함께 표시되는 트랜스크립트를 생성합니다.

NVIDIA NeMo

NVIDIA NeMo는 더 광범위한 대화형 AI 프레임워크의 일부로 화자 분리 기능을 포함합니다. 겹치는 음성을 처리하는 엔드투엔드 접근 방식을 포함한 학습 가능한 화자 분리 모델을 제공하며, GPU 인프라에서 대규모 맞춤형 음성 시스템을 구축하는 팀을 위해 설계되었습니다.

이러한 도구는 모델 배포, 확장, 모니터링, 업데이트를 포함한 화자 분리 인프라를 직접 관리해야 합니다. 이러한 운영 부담을 원하지 않는 팀에는 관리형 화자 분리 API가 더 간단한 대안이 될 수 있습니다. 기존 workflow에 통합하거나 전체 화자 분리 파이프라인을 처리할 수 있어, 고객 지원 분석, 회의 트랜스크립션, 팟캐스트 처리 같은 프로덕션 사용 사례에 적합합니다.

실시간 화자 분리: 과제와 사용 사례

실시간 화자 분리는 시스템이 불완전한 맥락에서 판단해야 하므로 완성된 녹음의 화자 분리보다 훨씬 어렵습니다.

오프라인 시스템은 결정을 내리기 전에 전체 녹음을 확인합니다. 2분 시점의 음성과 40분 시점의 음성을 비교하여 두 순간을 동시에 볼 수 있으므로 같은 화자라고 확신할 수 있습니다. 실시간 시스템에는 이런 여유가 없습니다. 다음에 말할 내용을 알 수 없고, 한 번 내린 결정을 수정할 기회도 거의 또는 전혀 없는 상태에서 음성이 들어오는 즉시 레이블을 부여해야 합니다. 

이처럼 미래 맥락이 없다는 점은 다음 세 가지 문제를 실시간으로 해결하기 훨씬 어렵게 만듭니다.

  • 지연 시간과 정확도의 균형: 대화 전체를 오가며 살펴볼 수 없기 때문에, 더 엄격한 응답 시간 예산을 맞추려면 정확도를 직접 희생해야 합니다.
  • 겹치는 음성: 사람들이 동시에 말하면 오디오를 재처리할 수 있는 시스템은 이를 분리해 낼 수 있습니다. 실시간 시스템은 이를 하나의 레이블로 강제하거나, 즉석에서 겹침 인식 특화 모델을 사용해야 합니다.
  • 짧은 발화: 짧은 “네” 또는 “말씀하세요”만으로는 시스템이 활용할 수 있는 음성 정보가 거의 없으며, 의지할 주변 맥락도 없는 상태에서 즉시 레이블을 결정해야 합니다.

어려움에도 불구하고 일부 애플리케이션은 녹음이 끝날 때까지 기다릴 수 없습니다. 실시간 자막은 회의와 방송에서 사람들이 말하는 즉시 화자 레이블이 필요합니다. 콜센터 소프트웨어는 통화 중 상담원에게 안내를 제공하려면 고객이 사용하는 단어를 실시간으로 알아야 합니다. 음성 에이전트는 여러 참여자가 있는 통화를 처리할 때 누가 무엇을 묻는지 지체 없이 파악해야 합니다. 모든 경우에 약간 덜 정확하더라도 즉각적인 시스템이 더 정확하지만 지연되는 시스템보다 낫습니다.

분석, 규정 준수 검토, 트랜스크립트 생성처럼 실시간 레이블이 꼭 필요하지 않은 워크로드라면, 정확도가 훨씬 높으므로 배치 화자 분리가 더 나은 선택입니다.

화자 분리 성능 평가 방법

화자 분리 정확도를 측정할 때 가장 중요한 지표는 두 가지입니다. 전반적인 정확도를 나타내는 화자 분리 오류율(DER)과 모든 화자에게 정확도가 유지되는지 확인하는 자카드 오류율(JER)입니다.

DER은 잘못 귀속된 전체 음성 시간의 비율을 계산합니다. 다음 세 가지 오류 유형을 결합합니다.

  • 오탐 음성: 아무도 말하지 않았는데 시스템이 구간을 음성으로 레이블링했습니다.
  • 미탐 음성: 누군가 말하고 있었지만 시스템이 이를 침묵으로 레이블링했습니다.
  • 화자 혼동: 음성은 감지됐지만 잘못된 화자에게 귀속됐습니다.

DER = (오탐 + 미탐 음성 + 화자 혼동) / 전체 음성 길이

DER이 10%라는 것은 이 세 유형을 합친 오류가 전체 음성 시간의 10분의 1에 해당한다는 뜻입니다. 낮을수록 좋으며, 점수는 같은 조건에서 동일한 데이터로 측정한 경우에만 비교할 수 있습니다. DER은 오디오 품질, 화자 수, 녹음 내 음성 겹침 정도에 따라 크게 달라집니다.

자카드 오류율(JER)은 화자별로 화자 분리 정확도를 개별 측정한 뒤, 모든 화자의 결과를 평균합니다. 각 참조 화자에 대해 평가기는 시스템의 가장 가까운 화자 레이블을 매칭하고, 두 화자에 할당된 전체 시간 대비 정확히 겹치는 시간을 비교합니다.

예를 들어 60분 회의에서 화자 A가 50분, 화자 B가 10분 동안 말한다고 가정해 보겠습니다. 화자 분리 시스템은 화자 A의 50분 중 48분을 정확히 레이블링했지만, 화자 B의 10분 중에서는 4분만 정확히 레이블링했습니다. 회의 대부분이 화자 A의 발화이므로 전체 DER은 여전히 비교적 양호해 보일 수 있습니다. JER은 화자 A와 화자 B를 독립적으로 평가한 후 점수를 평균하므로, 화자 B의 저조한 결과도 동일한 비중으로 반영합니다.

JER_speaker = 1 - (correct_overlap / (ref_time + sys_time - correct_overlap))

최종 JER은 화자별 오류율의 평균입니다.

JER = (1 / N) * Σ[JER_speaker_i]  또는 i = 1..N

DER과 JER을 함께 추적하면 화자 분리 정확도를 더 완전하게 파악할 수 있습니다. DER은 전반적인 정확도를, JER은 발화량이 적은 사람을 포함한 모든 참여자에게 그 정확도가 유지되는지를 보여 줍니다.

프로덕션 환경을 대표하는 오디오로 테스트하기

화자 분리 시스템을 평가할 때는 일반적인 화자 수, 오디오 품질, 혼선 수준 등 실제 배포 조건과 일치하는 오디오에서 DER과 JER을 모두 계산하세요. 

공개된 벤치마크 점수는 깨끗하고 통제된 데이터세트에서 측정될 수 있습니다. 예를 들어 스튜디오 녹음은 실제 통화 녹음이나 라이브 회의의 음질과 일치하는 경우가 드뭅니다. 벤치마크에서 좋은 점수를 받은 시스템도 소음이 많고 음성이 겹치는 실제 환경의 오디오에서는 성능이 크게 떨어질 수 있습니다. 화자 분리 제품을 결정하기 전에 자체 데이터로 테스트하세요.

화자 분리를 위한 ElevenAPI 시작하기

여러 화자를 지원하는 트랜스크립션 기능을 구축할 준비가 되었다면, Scribe v2를 통해 ElevenLabs는 화자 분리 기능을 단일 음성 텍스트 변환 API로 제공합니다. diarize=true를 지정해 엔드포인트로 오디오를 전송하면, JSON 응답이 최대 32명의 화자, 90개 이상의 언어, 최대 10시간 길이의 파일에서 각 단어에 화자 ID를 레이블링합니다.

두 가지 옵션으로 표준 화자 분리 출력을 확장할 수 있습니다. 통화 녹음에서는 detect_speaker_roles=true를 사용하면 익명 번호 대신 화자를 상담원과 고객으로 레이블링합니다. 워크스페이스에 등록된 화자 프로필이 있다면 use_speaker_library=true를 통해 감지된 화자를 등록된 음성과 매칭하여, 한 번의 요청으로 화자 분리와 식별을 함께 수행할 수 있습니다. 

화자 분리 임계값 파라미터를 사용하면 화자를 과도하게 분할하는 것과 병합하는 것 사이의 균형을 조정할 수 있습니다. 또한 스테레오 통화 녹음처럼 화자가 이미 별도의 오디오 채널로 분리되어 있다면, 다중 채널 트랜스크립션은 채널별로 화자를 할당하므로 화자 분리를 완전히 건너뜁니다.

음성 텍스트 변환 퀵스타트에서 첫 통합 과정을 단계별로 안내합니다. 규제 대상 배포를 위해 이 플랫폼은 SOC 2, ISO 27001, PCI DSS L1 및 HIPAA를 준수하며, EU 데이터 레지던시와 무보존 모드를 제공합니다.

시스템에 화자 분리 기능을 구축할 준비가 되셨나요? API 키를 받아 시작하거나 ElevenLabs Docs에서 자세히 알아보세요.

FAQ

작성자

Jack Limebear는 Growth 팀에서 블로그와 인사이트 페이지의 콘텐츠 작가이자 전략가로 활동하고 있습니다. ElevenLabs에 합류하기 전에는 빠르게 성장하는 SaaS 스타트업부터 포춘 500대 기업까지 다양한 조직에서 10년 넘게 콘텐츠 전략을 이끌었습니다. 케임브리지 대학교에서 영문학 석사 학위를 취득했습니다.

유사한 기사

최고 품질의 AI 오디오로 창작하세요