← 블로그로 돌아가기

AI 화자 분리 원리: 목소리를 어떻게 구별하고, 화자가 많을수록 왜 어려워지나

Picute Team 작성···10 min read

화자 분리란

화자 분리(speaker diarization)는 받아쓴 문장 위에 '누가 말했는가'를 붙이는 작업입니다. 다음 질문에 답합니다.

  • Speaker 1의 말은 어디서 끝나고 Speaker 2의 말은 어디서 시작되는가?
  • 4분 23초의 목소리와 18분 7초의 목소리는 같은 사람인가?
  • 이 녹음에는 모두 몇 명이 말하는가?

음성 인식은 '무엇을 말했는가'를, 화자 분리는 말하는 순서와 주인을 다룹니다. 두 작업은 함께 돌아가지만 따로 틀립니다. 단어는 정확한데 화자 라벨이 엉망일 수도 있고 그 반대일 수도 있으니, 다중 화자 대본을 검수할 때는 문장과 라벨을 따로 확인하세요.

모델이 목소리를 구별하는 방식

1. 음성 구간 감지(VAD)

먼저 말소리와 말소리가 아닌 부분(침묵, 음악, 배경 소음)을 나눕니다. 말소리 구간 하나하나가 화자가 바뀌었을 수 있는 후보가 됩니다.

2. 음성 임베딩

각 구간을 음성 임베딩이라는 숫자 벡터로 바꿉니다. 음높이, 음색, 말 속도, 발음할 때의 공명 특성 같은 정보가 이 벡터에 담깁니다. 같은 사람의 구간끼리는 벡터가 가깝고, 다른 사람끼리는 멉니다.

3. 클러스터링

가까운 벡터끼리 묶습니다. 묶음의 수가 추정한 화자 수가 되고, 묶음마다 Speaker 1, Speaker 2 같은 라벨이 붙습니다.

화자가 많을수록 어려워지는 이유

화자가 두세 명이면 묶음이 서로 멀리 떨어져 있어 비교적 깔끔하게 나뉩니다. 사람이 늘어나면 음역대, 말 속도, 음색이 비슷한 사람이 생기고(예: 중저음 남성 두 명) 묶음이 겹치기 시작합니다. 그러면 비슷한 두 사람이 한 라벨로 합쳐지거나, 한 사람이 흥분해서 목소리가 달라진 구간이 다른 라벨로 떨어져 나갑니다. 화자가 아주 많으면 모델이 화자 수 자체를 적게 잡기도 합니다.

모델이 헷갈린다기보다는, 짧은 구간 하나만으로는 사람마다의 목소리 특징이 충분히 구별되지 않는다고 보는 것이 정확합니다.

참여자별로 따로 녹음하기

가장 확실한 방법은 화자마다 오디오 파일을 따로 남기는 것입니다.

모두 한 트랙에 섞인 녹음 대신:

mixed_audio.mp3 (모두 한 트랙)

사람마다 한 트랙씩:

speaker_alice.mp3 (앨리스만)
speaker_bob.mp3 (밥만)
speaker_carol.mp3 (캐롤만)

파일마다 누가 말했는지 이미 알고 있으므로 목소리를 묶어 구별할 필요가 없습니다.

트랙을 나눠 녹음할 수 있는 도구 예

  • Zoom: 녹화 설정에서 참가자마다 오디오 파일을 따로 저장하는 옵션
  • Riverside: 게스트별 트랙 녹음
  • Discord 봇 Craig: 화자별 채널 녹음

Picute에서 트랙을 합치는 방법 Picute에는 여러 트랙을 하나의 대본으로 합쳐 주는 기능이 없으므로 트랙마다 따로 전사합니다. 그다음 SRT 합치기 도구에 두 파일을 넣고 두 번째 파일을 첫 번째 뒤에 이어붙이기를 끄면, 원래 타이밍을 유지한 채 시간순으로 섞인 SRT 하나가 나옵니다. 한 번에 두 파일씩 합치므로 세 명 이상이면 합친 결과에 다음 파일을 다시 합칩니다. 누가 말했는지 보이게 하려면 합치기 전에 파일마다 문장 앞에 화자 이름을 붙여 두세요.

트랙마다 전체 길이를 전사하므로 크레딧도 트랙 수만큼 듭니다. 1시간 회의를 세 트랙으로 녹음했다면 180크레딧입니다.

화자 분리를 개선하는 녹음 습관

트랙을 나눌 수 없을 때는 다음을 챙기세요.

  1. 사람마다 마이크 따로 쓰기: 노트북 내장 마이크 하나를 같이 쓰면 목소리 특징이 비슷하게 잡힙니다.
  2. 말 겹치지 않기: 한 마이크에 두 목소리가 동시에 들어가면 모델은 한 목소리로 받아들이기 쉽습니다.
  3. 한 사람이 충분히 길게 말하기: 한 사람의 말이 많을수록 그 사람의 특징이 또렷해집니다.
  4. 녹음 환경 유지하기: 중간에 자리를 옮기거나 마이크를 바꾸면 같은 사람이 새 화자로 잡힐 수 있습니다.
  5. 초반에 이름 부르기: "오늘 사회는 김OO 님입니다"처럼 이름이 나오면 검수할 때 라벨이 누구인지 맞추기 쉽습니다.

흔한 오류와 고치는 법

"Speaker 1이 중간에 Speaker 3으로 바뀌었어요"

같은 사람의 목소리 특징이 중간에 달라진 경우입니다. 보통 자리를 옮겼거나 마이크를 바꿨거나 잡음이 끼었을 때 생깁니다. 검수할 때 Speaker 3을 Speaker 1로 한꺼번에 바꾸면 됩니다.

"두 사람이 한 화자로 묶였어요"

목소리가 너무 비슷해 한 묶음으로 합쳐진 경우입니다. 모호한 구간을 직접 듣고 맥락을 보며 라벨을 나눠 붙이는 수밖에 없습니다.

"한 사람이 두 화자로 쪼개졌어요"

반대로 너무 잘게 나눈 경우입니다. 두 라벨 중 하나가 잠깐씩만 나온다면 같은 사람일 가능성이 크니 하나로 합칩니다.

"화자 전환이 조금 늦게 잡혀요"

화자가 바뀌는 경계는 정확히 잡기 어려운 부분입니다. 기록 보관용이라면 그대로 둬도 되지만, 자막으로 쓸 거라면 검수할 때 경계를 직접 맞춥니다.

화자 분리가 필요한 경우와 필요 없는 경우

필요한 경우

  • 인터뷰 대본(질문자와 답변자 구분)
  • 회의록(누가 무엇을 결정했는지 기록)
  • 팟캐스트 대본(독자에게 화자 이름 표시)
  • 법률이나 의료 기록처럼 발언자를 분명히 남겨야 하는 경우

필요 없는 경우

  • 혼자 말하는 콘텐츠
  • 누가 말했는지보다 주제가 중요한 자유 토론
  • 어차피 사람이 직접 라벨을 붙일 녹음

Picute에서 화자 분리 켜기

Picute에서는 작업을 만들 때 옵션의 화자 분리 레이블을 켜면 됩니다. 결과를 받은 뒤에는 위의 오류 유형을 기준으로 라벨을 검수하세요.

관련 글

Picute 회의 전사 페이지 보기화자 분리 레이블을 옵션으로 켤 수 있습니다

자주 묻는 질문

두 사람이 동시에 말하면 어떻게 되나요?

겹친 구간은 화자 분리가 가장 어려워하는 부분입니다. 구간 전체가 한 사람에게 붙거나 두 사람의 문장이 뒤섞여 나오기 쉬워서 검수할 때 직접 정리해야 합니다. 녹음할 때 상대의 말이 끝난 뒤 말하도록 진행하고, 가능하면 참여자별로 따로 녹음하세요. 트랙이 나뉘어 있으면 겹친 말도 각자의 트랙에 따로 남습니다.

어떤 도구의 화자 분리가 내 녹음에 맞는지 어떻게 시험하나요?

화자를 모두 아는 30분 정도의 회의 녹음을 여러 도구에 넣고 같은 기준으로 오류를 세어 비교하세요. 다른 사람으로 표시된 경우, 한 사람이 두 라벨로 쪼개진 경우, 두 사람이 한 라벨로 합쳐진 경우, 화자가 바뀌었는데 감지되지 않은 경우를 따로 세면 도구마다 어디에서 약한지 보입니다.