레이블이 붙은 전사본은 두 답이 모두 정확해야 합니다. 레이블은 단어 위에 얹혀 있으므로, 잘못된 레이블은 텍스트를 건드리지 않고도 고칠 수 있습니다.
회의 전사본은 두 가지 질문에 동시에 답합니다. 무엇을 말했는지, 그리고 누가 말했는지입니다. 독자가 보는 것은 하나의 작업, 즉 줄 옆에 붙은 이름입니다. 그 아래에는 두 가지 문제가 있으며, 각각 고유한 입력과 고유한 실패 방식을 가집니다.
음성 인식은 단어를 듣습니다. 오디오를 텍스트로 바꾸고, 잘 수행되면 모든 단어에 시작 시각과 끝 시각을 붙여 줍니다. 문장 중간에 목소리가 바뀌었는지는 신경 쓰지 않습니다. 음성 인식의 역할은 문장을 정확하게 받아 적는 것입니다.
화자 분리는 목소리를 듣습니다. 단어는 알지 못합니다. 역할은 시간축을 발화 차례로 나누고, 어떤 차례들이 같은 사람의 것인지 구분하는 것입니다. 예를 들어 Speaker 1, Speaker 2처럼 말이죠. 이 용어는 "diary"(일기)에서 빌려온 말이며, 출력 결과를 잘 표현합니다. 누가 언제 발언권을 가졌는지 기록한 일지입니다.
이와 혼동되기 쉬운 용어가 세 가지 있습니다. 화자 분리는 누구인지 알지 못한 채 누가 언제 말했는지를 말해 줍니다. 화자 식별은 등록된 목소리 가운데 어떤 알려진 사람의 발화인지를 고릅니다. 화자 검증은 예/아니요로 답하는 질문에 답합니다. 이 목소리가 정말 X 씨의 것인가? 세 가지를 구분해 두면 벤더의 주장을 더 쉽게 읽을 수 있습니다. "화자 레이블"이라는 말은 차례 경계에 대한 대략적인 추정부터, 녹음이 바뀌어도 같은 사람을 따라가는 이름까지 무엇이든 뜻할 수 있기 때문입니다. 이 레이블이 무엇을 보장할 수 있고 무엇을 보장할 수 없는지 알려면 화자 분리기 내부를 들여다봐야 합니다.
대부분의 화자 분리 시스템은 세 단계로 작동하며, 어느 단계도 언어를 다루지 않습니다.
각 단계는 단독으로도 잘못될 수 있습니다. 조용히 말하는 화자는 놓치고, 비슷한 두 목소리는 하나로 합쳐지며, 차분하다가 격앙된 어조로 바뀐 한 사람은 두 명으로 나뉩니다.
이 분야는 이 모든 것을 화자 분리 오류율(DER)로 평가합니다. 이는 음성 시간 가운데 놓쳤거나, 음성이 아닌데 음성으로 잘못 검출했거나, 잘못된 화자에게 배정된 시간의 비율입니다. 보통 모든 경계 주변에 약 0.25초의 허용 구간(forgiveness collar)을 둡니다. 이 허용 구간이 있는 이유는 사람이든 기계든 화자 전환을 밀리초 단위로 정확히 찍을 수 없기 때문입니다. 이 허용 오차는 화자 분리기를 단독으로 평가할 때는 괜찮습니다. 그러나 전사본에서는 다릅니다. 0.25초 어긋난 경계가 단어 위에 떨어지기 때문입니다.
두 문제가 만나는 지점이며, 레이블이 붙은 전사본의 품질이 결정되는 곳이기도 합니다. 화자 분리기는 경계를 어느 정도 부정확하게 찍습니다. 대개 앞뒤로 몇 분의 1초 정도입니다. 음성 인식기는 단어를 같은 시간축 위에 배치합니다. 이 둘을 단순히 겹쳐 놓으면 경계가 단어 안에 떨어집니다. 그러면 "tomorrow"의 앞부분은 Speaker 1에, 뒷부분은 Speaker 2에 속하게 됩니다.
레이블은 맞아지기 전까지 한동안 틀려 있을 수도 있습니다. 화자 분리기는 더 많은 오디오를 들을수록 자신의 그룹에 더 확신을 갖게 됩니다. 그래서 초기 레이블은 이후 내용에 비추어 보면 틀려 보일 수 있습니다. 실시간 전사본에서는 줄이 표시된 뒤에도 레이블이 수정될 수 있습니다. VocalStack의 실시간 API는 transcript.amended 프레임을 보내며, 이 프레임은 확정된 줄의 텍스트나 화자를 그 자리에서 고칩니다. 따라서 독자는 모순된 내용을 보는 대신 수정된 내용을 보게 됩니다.
완벽하게 배치되고 완벽하게 안정된 레이블이라도 결국 숫자일 뿐입니다. 숫자만으로도 대화를 따라갈 수는 있습니다. 하지만 사람들이 읽고 싶어 하는 것은 이름입니다.
레이블은 두 가지 방식으로 이름이 되며, 두 방식은 서로를 기반으로 합니다.
첫 번째는 녹음 내에서 이름 붙이기입니다. 전사에서 찾아낸 화자마다 0부터 세는 인덱스가 붙습니다. 접근 권한이 있는 사람은 녹음 중이나 녹음이 끝난 뒤에 각 화자의 이름을 지정할 수 있습니다. 이름은 단어 위에 얹히는 층이므로, 텍스트를 건드리지 않고도 설정, 변경 또는 삭제할 수 있습니다. API에서는 name과 함께 PUT /v1/recordings/{id}/speakers/{idx}를 사용합니다. 이름을 비워 두면 이름이 지워집니다. speaker 값이 -1인 줄에는 레이블이 없습니다. 레이블 기능이 꺼져 있었거나, 실시간 초안에서 아직 화자가 배정되지 않은 줄이기 때문입니다.
두 번째는 녹음들을 가로지르는 인식입니다. 앞 절에서 말한 식별 문제입니다. 화자 분리기는 두 목소리가 다르다고만 말할 수 있을 뿐, 그들이 누구인지는 결코 말하지 못합니다. "다르다"에서 "이 사람은 Ana다"로 넘어가려면 기준이 필요합니다. 즉 그 한 사람의 녹음에서 얻은 저장된 음성이 필요합니다. 깨끗한 음성 30초가 최소이며, 몇 분이면 더 좋습니다. 샘플은 또한 비교될 녹음과 비슷하게 들려야 합니다. 같은 사람이라도 노트북 마이크로 녹음한 목소리와 무대 마이크로 녹음한 목소리는, 같은 방식으로 녹음한 두 낯선 사람의 목소리보다 기계에게 덜 닮아 들릴 수 있습니다. 음성을 저장하고 나면, 전사에서 들리는 모든 화자가 그 음성과 비교되고, 일치하면 그 이름이 전사본에 기록됩니다. VocalStack에서는 Voices 아래에서 이 기능을 관리합니다. 파일 전사와 대시보드의 라이브 세션은 저장된 음성과 자동으로 대조되며, 실시간 API 세션은 identifyVoices에 나열한 음성만 인식합니다.
저장된 음성은 생체 정보입니다. 어떤 녹음에서든 그 사람을 인식할 수 있습니다. VocalStack에서는 이 음성이 그 사람의 대사를 소리 내어 읽을 수 있는 복제 음성 역할도 합니다. 대시보드는 음성을 저장하기 전에 그 사람의 허락을 받았는지 확인하도록 요청합니다. 음성은 언제든지 삭제할 수 있습니다.
이 모든 내용은 레이블 자체가 필요하다는 것을 전제로 합니다. 하지만 많은 경우 레이블은 필요하지 않습니다.
강의를 읽는 한 사람에게는 모든 줄 앞에 "Speaker 1"을 붙일 필요가 없습니다. 청중은 이미 누가 마이크를 잡고 있는지 알고 있습니다. 그래서 화자 레이블 설정에는 세 가지 위치가 있으며, 실시간 세션, 방송, 전사, 녹음 모두에서 동일합니다.
auto). 둘 이상의 목소리가 들리면 줄마다 화자 레이블이 붙습니다. 화자가 한 명뿐인 녹음은 일반 텍스트로 남고, 나중에 합류한 두 번째 목소리도 여전히 감지됩니다. 대시보드의 새 실시간 전사 양식은 이 설정으로 시작합니다.파일 업로드에서도 같은 speakerLabels 옵션을 사용하며, 실시간 API에서는 스트림 중간에도 이 설정을 바꿀 수 있습니다. 자세한 내용은 API 레퍼런스에 있습니다. 화자 구분과 이름 붙이기는 요금을 추가로 올리지 않습니다(요금제 페이지에 요금표가 있습니다). 따라서 이 선택은 비용이 아니라 독자에게 무엇을 보여줄지에 관한 것입니다.
화자 분리를 켜면 훌륭하지만 마법은 아닙니다. 여전히 화자 분리가 제대로 해내지 못하는 상황이 두 가지 있습니다.
첫 번째는 겹침입니다. 두 사람이 동시에 말하면 한 구간의 오디오에 목소리 두 개가 함께 담깁니다. 겹침을 고려하는 화자 분리기는 연구에 존재하며, 점점 제품에도 등장하고 있습니다. 예를 들어 엔드투엔드 신경망 화자 분리(EEND)는 "누가 말하고 있는가"를 하나의 답이 아니라 동시에 던지는 예/아니요 질문들의 집합으로 다룹니다. 그러나 대부분의 실제 운영 시스템은 여전히 구간마다 화자 한 명만 배정하며, 그 위에서 동작하는 인식기는 한 번에 한 목소리만 전사합니다. 열띤 패널 토론의 혼선 음성은 이 분야에서 가장 어려운 오디오이며, 어느 벤더든 그 구간에서 레이블 품질이 떨어집니다. 또한 그곳은 틀림없이 모두가 나중에 인용하고 싶어 하는 부분이기도 합니다.
두 번째는 매우 비슷한 목소리입니다. 형제자매는 임베딩이 너무 가까워서 안정적으로 구분하기 어려울 수 있으며, 한 시간 동안 짧은 차례를 주고받으면 더욱 그렇습니다. 전화 음성은 모든 사람에게 이를 더 나쁘게 만듭니다. 협대역 회선은 8 kHz로 샘플링되고 약 3.4 kHz 이상은 전달하지 못합니다. 그런데 한 목소리를 다른 목소리와 구별하는 요소의 상당수는 그 차단 주파수 이상에 있습니다. 같은 전화 회선의 두 사람은 화자 분리기에게는 여러분이 듣는 것보다 더 비슷하게 들립니다.
두 문제에 대한 가장 실용적인 해결책은 어떤 모델보다도 상류에 있습니다. 각 사람에게 자기 마이크를 주는 것입니다. 화자마다 채널이 하나씩 있으면 화자 분리는 어느 채널이 큰지 묻는 일로 줄어들고, 겹침은 흐릿한 하나의 트랙 대신 깨끗한 두 개의 트랙이 됩니다. 그러면 임베딩이 어려운 일을 떠맡을 필요가 없습니다. 하지만 테이블 마이크 한 대가 더 저렴하고 대부분 실제로 가진 장비이기 때문에, 이 글의 나머지 부분이 존재합니다.
어떤 한계도 독자에게 그대로 전달될 필요는 없습니다. 레이블은 단어 위에 얹히는 층이므로, 틀린 레이블 때문에 텍스트를 잃는 일은 없습니다. 화자 이름은 녹음의 어느 시점에서든 설정하거나 지울 수 있습니다. 그리고 실시간 전사에서는 진행 중에도 호스트가 어떤 단어나 줄이든 고칠 수 있으며, 모든 수정은 표시되고 되돌릴 수 있습니다.
단어 쪽에 대해서는 단어 오류율이 측정하는 것과 놓치는 것에서 수정 층을 자세히 다룹니다. WER는 인식기에, DER는 화자 분리기에 대응하는 지표이며, 전사본은 둘 다 낮아야 합니다.