본문 바로가기

연구실 공부

[논문] X-Vectors: Robust DNN Embeddings For Speaker Recognition

728x90

https://ieeexplore.ieee.org/document/8461375

 

X-Vectors: Robust DNN Embeddings for Speaker Recognition

In this paper, we use data augmentation to improve performance of deep neural network (DNN) embeddings for speaker recognition. The DNN, which is trained to discriminate between speakers, maps variable-length utterances to fixed-dimensional embeddings that

ieeexplore.ieee.org

해당 논문을 보고 작성했습니다.

 

Abstract

저자들은 speaker recognition에 적용시킬 DNN 성능의 향상을 위해 데이터 augmentation을 사용했습니다. speaker를 구분하는 학습을 하는 DNN은 가변 길의 발화를 고정된 차원의 embedding으로 mapping 합니다. 저자들은 이 고정된 차원의 embedding을 x-vector라 부릅니다. 이 전에 존재했던 embedding들은 대규모 training dataset에서 i-vector보다 좋은 성능을 보였습니다. 그러나 학습 data를 그렇게 많이 모으는 것 자체가 어렵습니다. 그래서 저자들은 noise를 추가하거나 reverberation을 추가하는 data augmentation을 사용하면, 간단하게 몇 배의 train data를 얻을 수 있고 robustness를 추가할 수 있습니다. 저자들은 augmentation이 PLDA classifier에서 효과가 있는 반면, i-vector extractor에서는 큰 효과가 없다고 합니다. 그러나, x-vector DNN은 supervised training을 하기 때문에 효과적으로 data augmentation을 활용할 수 있다고 합니다. 

 

Introduction

저자들은 i-vector와 같이 사용할 수 있는, DNN을 통해 추출되는 x-vector를 소개합니다. 저자들은 이전에 소개했던 DNN embedding 구조를 그대로 사용합니다('Deep neural network embeddings for text-independent speaker verification'). 그리고 저자들은 data에 noise를 추가하고 reverberation을 부여해 training data를 늘리는 것이 DNN embedding system의 성능을 향상시킨다는 것을 보입니다.

대부분의 speaker recognition system은 i-vector를 기반으로 합니다. i-vector는 UBM, large projection matrix T로 이루어지고, T는 maximize data likelihood하는 방식으로 학습됩니다. projection은 UBM으로부터 얻은 고차원 통계를 저차원 표현으로 mapping 하는 것이고, 해당 저차원 표현을 i-vector라 부릅니다. probabilistic linear discriminant analysis(PLDA) classifier는 i-vector를 비교할 때 사용되고, 이를 통해 같은 speaker인지 다른 speaker인지 결정합니다.

speaker recognition에서 DNN는 주로 automatic speech recognition을 위해 acoustic model로 사용되어 학습되었습니다. 그 이후엔 i-vector UBM에서 음성 모델링을 향상시키는데 사용되었습니다. 다시 말해, ASR DNN으로부터 얻은 posterior은 GMM을 대체하거나, bottleneck features는 DNN으로 추출하여 acousitc feature와 결합합니다. 어느 경우든, ASR DNN이 in-domain data에서 학습되었다면, 전통적인 acoustic i-vector에 비해 성능이 향상됩니다. 그러나, 이 접근법은 transcribed train data(speec data가 text로 전사되어 있는)가 필요하며 i-vector에 비해 연산량이 매우 증가되는 문제가 있습니다.

그에 대안으로 neural network가 서로 다른 speaker를 직접 구별하도록 최적화하는 것이 존재합니다. 이 방식은 powerful하고 compact system이 될 잠재력을 가지며, speaker label만 있으면 학습할 수 있습니다. 이전 system에서, neural network는 speaker를 분리하도록 학습되었고, newtork로부터 frame-level의 표현을 추출했으며 Gaussian speaker model의 feature로써 사용되었습니다. 그 이후에 다양한 연구들이 등장했습니다.

DNN embedding 성능은 train data의 양에 매우 영향을 받았습니다. 그래도 최근에는 공개된 speaker recognition corpora를 가지고 좋은 성능을 보이는 연구들도 등장했습니다. 저자들은 DNN train 과정에 data augmentation을 적용하고, x-vector system의 상당한 성능 향상을 얻습니다.

 

Speaker Recognition Systems

Acoustic i-vector

전통적인 GMM-UBM 기반 i-vector system은 저자들의 acoustic feature baseline system입니다. features는 20 MFCCs이고 이는 25ms frame에서 얻어지는 feature입니다. 그리고 최대 3초 동안의 sliding window를 기준으로 평균 정규화됩니다. Delta와 acceleration을 추가해 60차원의 feature vector를 만듭니다. energy based speech activity detection(SAD) system은 speech frame에 해당하는 feature를 선택합니다. UBM은 2048개의 component로 이루어진 full covariance GMM입니다. 600차원의 i-vector extractor를 사용하여 PDLA scoring을 사용합니다.

 

Phonetic bottleneck i-vector

i-vector system은 ARS DNN acoustic model에서  phonetic bottleneck feature(BNF)를 얻고 이를 통합합니다. DNN은 p-norm nonlinearity time-delay acoustic model입니다. ASR DNN은 TDNN과 동일한 구조를 띄지만, 마지막 2번째 layer는 60차원의 linear bottleneck layer로 대체됩니다. softmax output layer는 BNF를 계산할 필요가 없으니 제외하면, DNN은 920만개 parameter로 이루어집니다.

BNF는 20차원 MFCC와 concat되고 deltas와 더해져 100차원의 feature가 됩니다. 남은 system의 요소들(feature processing, UBM, i-vector extractor, PLDA classifier)은 그대로입니다.

결국 ARS DNN acoustic model을 통해 acoustic feature인 phonetic bottleneck feature를 얻고, 이를 MFCC와 결합하고 delta와 더해져 100차원 feature를 만든다는 것이다. 이를 이용해 i-vector를 진행하는 방식인 것이다.

 

The x-vector system

이제 x-vector system을 보겠습니다. DNN embedding을 기반으로 합니다. 

 

features는 25ms frame length로 구성된 24차원 filterbank로, 최대 3초 동안의 sliding window를 기준으로 합니다. SAD를 이용해 nonspeech frame을 제거합니다.

위 table을 보면 DNN 구조를 알 수 있습니다. input은 T개의 frame으로 이루어져 있다고 가정하겠습니다. 첫 5개의 layer는 현재 frame t를 중심으로 small temporal context를 가지고 있는 speech frame에서 동작합니다. 이전 layer의 시간적 context를 기반으로 하여, frame 3에서는 15개 frame의 total context를 볼 수 있습니다.

statistics pooling layer는 frame 5 layer으로부터 모든 T개의 frame level output을 집계하고, 평균과 표준편차를 계산합니다. statistics은 1500차원의 vector이고, 각 input segment에 1번씩 동작합니다. 이러한 과정은 시간 차원을 통해 정보를 집계하여 전체 segment에 대해 동작하도록 합니다. 평균과 표준편차는 concat되어 segment-level layer와 마지막 softmax output layer를 거칩니다.

DNN은 training data에 존재하는 N명의 speaker를 분류하도록 학습됩니다. training 예제는 음성 특징의 chunck(약 평균 3초의 segment)와 해당하는 speaker label로 구성됩니다. 학습 후에는 embedding(x-vector)이 segment6 layer의 affine component로부터 추출됩니다.

 

PLDA classifier

PLDA classifier는 x-vector와 i-vector를 사용합니다(실험 결과 비교를 i-vector와 하기 때문). 두 표현(x-vector & i-vector)은 중앙화되어 있고 LDA를 이용해 투영됩니다. i-vector의 경우 200차원으로, x-vector는 150차원으로 만듭니다. 차원축소 이후에 각 표현들은 PLDA에 의해 길이 정규화(결국 표현은 크기가 1이 된 상태로 변하지만 방향을 그대로!)가 됩니다. score는 adaptive s-norm을 통해 정규화됩니다.

 

Experimental Setup

Training data

train data는 전화나 microphone을 이용해 영어로 대화한 data로 이루어집니다. 모든 대역폭의 audio는 8kHZ로 downsample 합니다. SWBD dataset은 28k개의 recording이 있으며, 2.6k명의 speaker로 이루어집니다. SRE는 63k개의 recording과 4.4k명의 speaker로 이루어집니다. SWBD와 SRE data로 학습을 진행하고 PLDA classifier은 SRE로만 학습됩니다.

저자들은 마지막에는 VoxCeleb dataset을 extractor와 PLDA train data와 통합하여 학습합니다. VoxCeleb에는 1251명의 셀럽 speaker로 이루어집니다. 하지만 SITW와 VoxCeleb은 서로 독립적으로 data를 모았지만, 60명의 speaker가 중복됩니다. 그래서 VoxCeleb에서 제거해 사용했습니다. 총 1191명의 speaker와 20k개의 recording으로 학습합니다.

i-vector system(BNF)에서 사용하는 ASR DNN은 Fisher English corpus로 학습됩니다. 제한된 형태의 domain adaptation을 하기 위해서, SITW와 SRE16에서 얻은 development data는 결합되며, 중앙화하고 score normalization을 위해 사용되었습니다.

 

Evaluation

저자들의 실험은 2가지 구분된 dataset으로 이루어집니다. Speakers in the Wild(SITW) Core와 Cantonese portion of the NIST SRE 2016 evaluation(SRE16)입니다. SITW는 영어를 말하는 speaker가 있는 video, audio로 구성되며, 이 data에는 자연스럽게 생기는 noise나 reverberation, device와 codec에 따른 변화도 포함되어 있습니다. 또 다른 data는 Cantonese conversation을 하는 전화 speech입니다.

SITW의 enroll과 test utterance는 6~240초 길이로 이루어집니다. SRE16의 enrollment utterance는 약 60초이지만, test utterance는 10 ~ 60초 사이입니다.

저자들은 equal error-rate(EER)과 minimum of the normalized detection cost function(DCF)를 수치로 보여줍니다.

 

Data augmentation

augmentation은 현재 가지고 있는 training data의 수와 다양성을 늘려줍니다. 저자들의 전략은 추가적인 noise와 reverberation을 적용하는 방식입니다. reverberation은 room impulse responses(RIR)을 audio와 합성하는 과정입니다. 그래서 다른 논문에서 진행한 방식과 동일하게 audio에 reverberation을 다양한 condition에서 추가하여 사용합니다.

noise를 추가할 때 MUSAN dataset을 사용했습니다. data는 900개가 넘는 noise로 구성되어 있으며, 다양한 장르의 음악 42시간과 12개의 언어의 speech 60시간으로 구성됩니다.

저자들은 clean training data를 2배 증강시켜, clean data 포함, 처음보다 3배의 data를 가지고 학습했습니다.

 

    - babble: MUSAN speech에서 3명에서 7명 사이의 speaker의 음성을 랜덤하게 선택하여 더하고 원본 신호에 추가하는 방식(13~20dB Signal to Noise Ratio, SNR)

    - music: MUSAN에서 랜덤하게 하나의 음악 file을 선택하고, 지소 시간을 맞추기 위해 잘라내거나 반복하여 원본 신호에 추가하는 방식(5~15dB SNR)

    - noise: MUSAN noise을 녹음동안 1초마다 추가하는 방식(0~15dB SNR)

    - reverb: training recording은 simulated RIR와 합성하여 인공적으로 reverberate하는 방식

 

위 네 가지 방식 중 랜덤하게 하나를 골라 선택하여 증강시켰습니다.

 

Results

 

위 표를 보면 EER, DCF 수치들을 볼 수 있습니다. i-vector system 2가지와 x-vector를 비교합니다. 여기서 extractor는 UBM/T가 있고 embedding DNN이 있습니다.

 

Original systems

data augmentation없는 system 결과를 보겠습니다. extractor는 SWBD와 SRE data로 학습됩니다. PLDA classifier는 SRE만 사용하여 학습됩니다. data augmentation 없이는, SITW에서 가장 좋은 결과를 보인 것은 i-vector(BNF)입니다. SRE16에서는 x-vector가 가장 좋은 결과를 보입니다. 심지어 i-vector(BNF)는 i-vector(acoustic)보다 더 좋지 않은 모습을 보입니다.

 

PLDA augmentation

PLDA train data에만 augmentation을 적용한 상태로 결과를 보겠습니다. extractor는 그대로입니다. PLDA augmentation은 모든 system에 대해 성능 향상을 보입니다. 그러나 x-vector가 PLDA augmentation으로 인해 생기는 이점을 다른 system에 비해 더 많이 받습니다. SITW data의 경우, x-vector system은 i-vector(acoustic)보다 약간 더 낮은 EER을 기록합니다. 하지만 대부분의 다른 수치들은 i-vector(BNF)가 더 좋은 모습을 보입니다. SRE16 data에서는 x-vector가 i-vector보다 더 좋은 모습을 보입니다.

 

Extractor augmentation

PLDA는 augmentation을 적용하지 않은 채로, 이제는 extractor의 train data에도 augmentation을 적용하겠습니다. data augmentation을 UBM/T에 적용했을 때, i-vector는 일관성 있는 효과를 보지 못합니다. 즉 i-vector system에 data augmentation을 PLDA에만 적용하는 것이 효과적임을 의미합니다.

반면에 embdding DNN의 train data를 augmentation하는 것은 큰 효과를 가져다줍니다. i-vector system과 대조적으로, PLDA data augmentation 효과가 큽니다. SITW data의 경우, x-vector system은 i-vector(acoustic)보다 더 낮은 EER 수치를 달성하고, i-vector(BNF) system과 비슷한 성능까지 향상되었습니다. SRE16의 경우, x-vector는 i-vector보다 더 향상된 모습을 보입니다. 심지어 PLDA data만 augmentation 했을 때보다 2배 가까이 향상된 결과를 보입니다.

 

PLDA and extractor augmentation

PLDA data augmentation은 i-vector system과 x-vector 모두에 효과가 있었지만, extractor data augmentation은 embedding system에만 효과가 있었습니다.

이번에는 extractor와 PLDA train data 모두 augmentation한 결과를 보겠습니다. x-vector가 i-vector(acoustic)보단 훨씬 향상된 결과를 보이며, i-vector(BNF)보다 모든 포인트에 대해 약간씩 다 향상된 결과를 보입니다. SRE16에서는 여전히 x-vector가 훨씬 앞서는 결과를 보입니다.

 

Including VoxCeleb

기존 train data에는 telephone으로 이루어진 speech가 훨씬 많았습니다. 그래서 저자들은 많은 수의 microphone speech를 추가했을 때의 효과를 보는 실험을 진행했습니다. VoxCeleb dataset을 augmentation하고 extractor와 PLDA에 추가했습니다.

SITW data의 경우, i-vector와 x-vector system 모두 매우 향상되었습니다. x-vector가 i-vector에 비해 in-domain data의 양이 늘어난 것을 더 잘 활용하는 모습을 볼 수 있습니다.

SRE16 data는 여전히 x-vector system이 더 우수한 것을 볼 수 있습니다.

 

위 그래프의 왼쪽은 Cantonese portion of NIST SRE16을 이용해 구한 DET curve입니다. 오른쪽은 SITW Core data를 이용해 측정한 DET curve입니다.

 

Conclusion

저자들은 성능 향상을 할 수 있는 간단한 data augmentation 방식과 효과적인 전략을 소개했습니다. SRE16 Cantonese에서 특히 x-vector가 더 뛰어난 모습을 보였습니다. microphone speech를 추가했을 때 x-vector가 i-vector에 비해 성능 향상 폭이 컸으며, 이를 통해 in-domain data augmentation의 효과를 x-vector가 더 잘 받는다는 것을 알아냈습니다.

ASR DNN으로부터 bottleneck feature를 뽑아내는 i-vector system은 transcribed data가 있어야 학습이 가능합니다. 하지만 x-vector DNN은 speaker label만 있으면 학습할 수 있으며, transcribed speech가 제한적인 domain에선 효과적입니다.

 

728x90