Eleven v4를 소개합니다역대 가장 감성적인 모델, Eleven v4를 만나보세요. 10월 12일까지 Creator+에 크레딧 3배 제공

콘텐츠로 건너뛰기

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

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

듣기이 글 오디오로 듣기

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

이 과정 덕분에 다화자 오디오를 활용할 수 있습니다. 회의록, 콜센터 분석, 인터뷰 전사, 팟캐스트 편집, 법적 기록은 모두 무엇을 말했는지뿐 아니라 누가 말했는지도 파악해야 합니다. 

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

요약

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

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

화자 분할은 누가 말하는지를 기준으로 오디오 스트림을 세그먼트로 나누는 과정입니다. 화자 분할이 적용된 전사본은 각 오디오 세그먼트에 화자 ID를 지정합니다. 간단히 말해, “누가 언제 말했는가?”라는 질문에 답합니다. 

회의의 원본 전사본은 발화 내용을 제공하는 반면, 화자 분할 전사본은 화자 1이 질문하고 화자 2가 답했으며 화자 3이 중간에 끼어들었다는 점을 알려 줍니다.

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

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

출력은 시간 범위에 연결된 화자 레이블 집합이며, 보통 전사본과 함께 제공됩니다. 예를 들어 2인 통화의 화자 분할 전사본은 다음과 같습니다.

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

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

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

화자 세그멘테이션과 화자 식별은 모두 화자 분할과 밀접하게 겹치므로, 세 가지가 서로 혼동되는 경우가 많습니다.

각각 해결하는 문제는 조금씩 다르므로, 도구를 평가할 때 그 차이를 이해하는 것이 중요합니다.

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의 음성이 녹음 시작 부분에서 말한 음성과 같다는 것을 알려 줍니다.

화자 식별은 화자 분할과 별개의 기능이지만, 자주 함께 사용됩니다. 식별은 해당 화자들이 실제로 누구인지 판별합니다. 식별 시스템은 등록된 음성 지문과 음성을 비교하고, 알려진 화자를 참조하여 ID를 반환합니다. 식별 후 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_화자 = 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 오디오로 창작하세요