회의나 대화, 통화 녹음처럼 여러 명의 목소리를 받아 적어야 하는 경우가 있습니다. 이 때 컴퓨터가 참여자들의 목소리를 자동으로 구분해준다면 정말 편리하겠죠?
화자 분리(Speaker Diarization)
상상만 했던 일이 이제 음성 AI로 가능해졌습니다. 인공지능이 여러 명의 목소리가 포함된 오디오 파일에서 화자를 분리할 수 있게 되었거든요.
화자 분리는 오디오 파일에서 ‘누가 언제 말했는지’의 문제를 다루는 분야입니다. 오디오 신호(Raw waveform 신호 또는 Mel-Spectogram과 같이 변환된 신호)를 입력으로 받아, ‘누가 언제 말했는지(Who spoke when)’에 대한 타임 스탬프를 출력합니다.
화자 분리는 아래 순서대로 진행되며, 각 모델은 따로 학습될 수 있습니다.
음성 활동 감지(Voice Activity Detection)와 음성 분할(Segmentation)
음성 활동 감지(이하 ‘VAD’)는 음향 이벤트 감지(Sound Event Detection)의 일종으로 음성 구간을 검출합니다. VAD 결과로 얻은 음성 구간에 대해 음성 분할 모델은 화자의 특징을 추출(Speaker Feature Extraction)하기 좋은 단위로 구간을 분할하는 모델입니다.
Speaker-Uniform Segmentation은 고정된 짧은 단위(예: 0.72초)로 구간을 나누는 방법으로, 짧은 구간 동안에는 화자가 변하지 않을 것이라고 가정하는 방법이에요.
Speaker-change-point Segmentation은 화자 변화를 감지하는 알고리즘을 이용하여, 화자가 변할 때마다 구간을 분할하는 방법입니다. 액션파워에서는 Turn-to-Diarize 알고리즘을 사용하고 있어요.
화자 특징 추출(Speaker feature extraction)
음성 분할(Segmentation)의 결과로 얻은 음성 구간들에 대해, N차원(예: 256)의 화자 특징 벡터를 추출하는 모델입니다.
고전적인 화자 특징 추출 방법으로는, 다양한 화자의 음성 특성을 반영하는 분포인 UBM(Universal Background Model)을 각각의 음성 구간에 대해서 적응 학습한 뒤, 이를 화자의 음성 특징에 대한 분포로 취급하는 방법들이 있습니다. 대표적인 예로 JFA(Joint factor analysis)와 I-vector가 있죠.
최근에는 딥 러닝 모델을 기반으로 화자 특징 벡터를 추출하는 방법들이 널리 사용되고 있어요. 이런 모델들은 짧은 시간(예: 0.04초) 단위마다 화자의 특징을 계산한 뒤 풀링 레이어(pooling layer)를 통해서 계산된 모든 화자의 특징들을 결합해서 최종적인 벡터를 만듭니다. 대표적인 모델의 예로는 X-vetors와 ECAPA-TDNN이 있어요.
Online clustering은 순차적으로, 이전 시점까지 들어온 화자 특징 벡터와 화자 정보에 기초하여 다음 시점의 화자를 예측하는 방법이에요. 실시간 환경에서도 적용할 수 있다는 장점이 있지만, 미래 시점의 화자 정보를 사용하지 못한다는 한계점이 있죠. 대표적인 방법의 예로는 LINKS와 UIS-RNN이 있습니다.
Offline clustering은 모든 화자 특징 벡터들을 한꺼번에 처리하는 모델입니다. 모든 시점의 음성 정보들을 전부 활용할 수 있다는 장점이 있지만, 반대로 요구되는 계산량과 메모리가 많아지기 때문에 딥러닝 기반의 모델 대신 비지도 학습 기반의 고전적인 클러스터링 방법을 많이 사용하는 편이에요. 대표적인 방법의 예로, Spectral clustering과 AHC(agglomerative hierarchical clustering)가 있습니다.
액션파워는
액션파워는 화자를 분리하여 회의록을 작성할 수 있어요.
액션파워의 STT 서비스인 다글로에서는 Speaker-change-point Segmentation, Neural Network based Speaker Feature Extraction, Offline clustering 기술을 기초로 화자 분리 서비스를 제공하고 있습니다.
액션파워는 하나의 모델만 이용하여 화자분리를 처음부터 끝까지 수행하는 End-to-End 방식의 화자 분리 또한 연구하고 있어요.
화자 분리의 평가수단으로는 DER(Diarization Error Rate)와 JER(Jaccard Error Rate)이 있습니다.
DER은 화자를 제대로 예측한 총 시간을 측정하여 이를 기반으로 평가하는 방식입니다.
JER은 총 시간을 측정하는 것이 아닌, 회의에 참석한 모든 화자들을 제대로 가려냈는지 평가하는 방식이에요. 따라서, 짧은 시간 동안만 발화했던 화자를 보존하는 것도 JER에서는 중요하게 작용합니다.