본문 바로가기

연구실 공부

[논문] KoSpeech: Open-Source Toolkit for End-to-End Korean Speech Recognition

728x90

https://arxiv.org/abs/2009.03092

 

KoSpeech: Open-Source Toolkit for End-to-End Korean Speech Recognition

We present KoSpeech, an open-source software, which is modular and extensible end-to-end Korean automatic speech recognition (ASR) toolkit based on the deep learning library PyTorch. Several automatic speech recognition open-source toolkits have been relea

arxiv.org

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

 

Abstract

KoSpeech는 pytorch 기반의 modular extensible end-to-end Korean automatic speech recognition toolkit입니다. 여러 automatic speech recognition open-source toolkit들이 공개되었지만, 대부분 영어와 같은 non-Korean language를 다룹니다. AI Hub에서 KsponSpeech라는 1000시간 Korean speech corpus를 open 했지만, preprocessing method와 baseline model이 없습니다. 그러므로 저자들은 KsponSpeech corpus에 대한 preprocessing method를 제안하고 baseline model을 제안합니다. 저자들의 baseline model은 Listen, Attend, and Spell (LAS) architecture 기반이며 쉽게 다양한 학습 hyperparameter로 customize 될 수 있습니다. 

 

Introduction

traditional hybrid ASR stystem은 복잡한 구조로 구성됩니다. 복잡성을 줄이기 위해, end-to-end ASR system이라는 single system으로 모든 작업을 처리합니다. 이러한 편리성 때문에, Listen, Attend and Spell (LAS)와 같이 많은 end-to-end model들이 등장했습니다. LAS는 attention을 사용하는 sequence to sequence learning framework를 기반으로 합니다. 이는 listener라는 encoder recurrent neural network (RNN)와 speller라는 decoder RNN으로 구성됩니다. LAS는 간단하고 직관적이고 domain knowledge 없이도 사용 가능합니다.

이러한 이점 때문에, 다양한 LAS 기반 variant acoustic model들이 등장했으며 성능을 크게 향상시켰습니다. 하지만 LibreiSpeech, WSJ, Switchboard, CallHome과 같은 대부분의 open source들은 english corpus에서만 동작합니다. 이는 Korean speech recognition에 대한 진입 장벽을 높이는 주요 요인이 되었습니다.

2018년에 AI Hub에서 대규모 Korean dialog dataset인 KsponSpeech를 공개했습니다. KsponSpeech는 다양한 domain의 1000시간 Korean dialog로 구성되며, 이는 2000명의 다양한 speaker가 조용한 환경에서 녹음되었습니다. KsponSpeech corpus가 공개된 지 몇 년이 지났지만, preprocessing method가 성립되지 않고 baseline model이 제공되지 않아 model 성능들을 비교하기 어렵습니다. 이러한 이유로, 저자들은 KoSpeech라는 end-to-end Korean speech recognition open-source framework를 제안합니다.

그리고 저자들은 KsponSpeech의 pre-processing method를 다뤘습니다. KsponSpeech coprus의 preprocessing에 있어 phonetic transcription and spelling transcription selection, special character removal 등 여러 issue가 존재합니다. 이전에 음소 단위 기반의 Korean speech recognition 시도가 있었습니다. 그 연구들을 위해, 저자들은 chracter, subword, grapheme unit으로 preprocess 하는 것을 구성했습니다.

model part에서, 저자들은 LAS를 기반으로 다양한 구조를 구성했습니다. 저자들은 Deep Speech2와 VGGNet에서 제안한 convolution neural network feature extractor와 4가지 attention mechanism을 구성했습니다(Dot-Product, additive, Multi-Head and Location-Aware). 저자들의 baseline model은 VGG extractor와 multi-head attention mechanism으로 구성됩니다.

 

ASR System

 

Transcript Preprocessing

KsponSpeech dialog transcript은 ETRI transcription rule을 따르며, 수많은 불필요한 token들이 존재합니다. 아래 일련의 방법들을 통해, original script는 적절한 script로 변환될 수 있습니다.

 

- Statistical Analysis

original KsponSpeech corpus는 620,000보다 더많은 text file을 가지고 있습니다. 

 

위 그림과 같이 대부분의 script는 문자 단위로 계산했을 때, 100보다 더 짧은 sequence입니다. 저자들은 model이 더 빠르게 학습될 수 있도록 sequence length가 100을 넘는 training file을 구성하여 memory size를 줄였습니다. 그리고 실제 ASR situation에서 대화들이 길지 않기 때문에, 긴 문장들은 훈련에서 noise처럼 동작할 수 있습니다. 이 method를 통해 학습 속도를 약간 향상시킬 수 있었고, batch 내에서 다른 문장에 비해 긴 문장이 사용되지 않기 때문에 memory 사용량을 크게 감소시킬 수 있었습니다. 

 

위 그림과 같이 training data를 처리합니다.

 

- Special Token Handling

ETRI transcription rule에 따라, background noise, speaker's breathing sound 등 여러 special token이 존재합니다. 그리고 transcription은 의미 없는 감탄사도 존재합니다. 저자들은 ASR task에 필요없다고 생각하여 이러한 token을 제거합니다.

 

- Selective Transcription

original script에서는 첫 번째 괄호 안에 원본 또는 문법적으로 올바른 표현이 있고, 두번째 괄호 안에는 speaker가 잘못 발음했더라도 음성 표현이 표시됩니다. KoSpeech를 통해 이 표현들을 선택적으로 사용할 수 있습니다. 일반적으로 문법적으로 올바르지 않더라도 phonetic expression을 사용하는데, sound and acoustic data가 phonetic expression과 더 비슷하기 때문입니다. 하지만 숫자 표현과 같은 경우에는 연구자가 옵션을 설정하여 선택할 수 있습니다.

 

- Variable Base Unit

 

KoSpeech는 character, subword, grapheme unot으로 처리하는 것을 제공합니다. 이 논문에서 저자들은 character-unit based condition만 고려합니다. subword로 tokenize 하기 위해, 저자들은 sentencepiece 또는 SKT's pre-trained KoBERT tokenizer를 사용합니다. 그리고 hgtk (hangul-toolkit)을 사용하여 graphene unit tokenizer를 수행하기도 합니다.

 

Speech signals

KsponSpeech audio file은 16KHz sample rate, 16 bit rate, headerless (little-endian) linear pulse-code modulation (PCM)입니다. 아래의 과정들을 통해, 학습 속도를 향상시키고 model 성능을 향상시키기 위해 original audio를 수정하고 처리합니다.

 

- Silence Elimination

 

original KsponSpeech audio file에는 꽤 많은 silence section들이 존재합니다. silence section은 대화에 대한 정보를 담고 있지 않기 때문에, 저자들은 30db threshold를 사용하여 silence section을 제거했습니다. 이 threshold 데시벨은 여러 실험을 통해 선택했습니다. 저자들은 모든 test case에서 silence section을 제거했을 때 정보 손실이 없다는 것을 확인했습니다. 대화에 대한 정보를 잃을 수 있다는 risk가 존재하지만, audio file의 길이를 상당히 줄일 수 있으며, 이를 통해 model이 original audio를 사용했을 때보다 더 빠르게 학습될 수 있습니다.

 

- Feature Extraction

저자들은 Mel-Frequency cepstral coefficients (MFCCs), log mel-spectrogram, log spectrogram, filterbank 와 같은 다양한 feature를 사용했습니다.

 

- Spec Augment

ASR을 학습할 때 사용될 추가적인 training data를 생성하는 data augmentation입니다. SpecAugment는 raw audio가 아니라 input audio의 log mel-spectrogram을 가지고 수행합니다. SpecAugment를 log mel-spectrogram 뿐만 아니라 spectrogram, mfcc, mel filter bank에 적용하고 더 나은 성능을 얻을 수 있었습니다.

이 방식은 간단하고 연산량이 적으며, 추가적인 data를 필요로 하지 않습니다. 그래서 SpecAugment를 학습과정에서 online으로 수행할 수 있습니다. SpecAugment는 3가지 spectrogram의 변형으로 구성됩니다. 먼저 time warping입니다. 이는 time direction에서 time-series를 변형시키는 방식입니다. 나머지 두 방식은 computer-vision에서 제안된 "Cutout"에서 영감을 받았습니다. 연속적인 time step block을 masking 하거나 spectrogram의 특정 band width를 masking 하는 방식입니다. 이를 time-masking, frequency-masking이라 부르며 아래와 같습니다.

  • Frequency masking은 연속적인 frequency channels [f_0, f_0 + f)을 masking 하며, f는 0에서 frequency mask parameter F 사이 균등 분포에서 선택됩니다. f_0는 [0, v - f)에서 선택됩니다. v는 frequency axis에 따른 channel 수를 의미합니다. 
  • Time masking은 연속적인 time step [t_0, t_0 + t)을 masking 하며, t는 0에서 time mask parameter T 사이 균등 분포에서 선택되며, t_0는 [0, τ - t)에서 선택됩니다. 

위 그림은 single input에 대한 augmentation 예시를 보여줍니다.

 

Acoustic Model

 

저자들은 Listen, Attend and Spell (LAS) network를 사용하여 ASR task를 수행했습니다. 저자들은 connectionist temporal classification (CTC) algorithm 을 제외하고 "Advances in Joint CTC-Attention based End-to-End Speech Recognition with a Deep CNN Encoder and RNN-LM"에서 제안한 구조를 사용합니다. 이 model은 end-to-end 방식이며, 학습이 간단합니다. 

 

- Listener

저자들의 encoder network는 deep CNN을 사용하여 boost합니다. 첫 번째는 Deep Speech 2 (ds2) extractor이고 두 번째는 VGG extractor입니다. 저자들은 encoder network에 DS2 / VGG net architecture를 initial layer로 사용하고, 그 뒤에 Bi-directional LSTM (BLSTM) layer를 사용합니다.

 

각 extractor는 위와 같은 구조입니다. COnv2dBNReLU는 convolutio n2D layer 뒤에 batchnormalization, ReLU activation이 따라오는 구조입니다.

input speech feature image는 two max-pooling (Maxpool2D) layer 또는 filter를 사용하여 time-frequency axis를 따라 image로 downsample 합니다. CNN extractor로부터 구한 high-level feature를 BLSTM의 input으로 feed 합니다. LAS encoder의 RNN module은 three stacked bidirectional LSTM으로 구성됩니다.

 

- Speller

decoder는 two stacked undirectional LSTM with 1024 unit과 two projection layer로 구성됩니다. 이를 통해 character probability distribution을 예측합니다. attention은 encoder output (value)와 decoder hidden state (query) 사이 alignment를 학습합니다. Multi-Head attention은 speech alignment를 위해 사용합니다. Multi-Head attention은 Transformer에서 제안되었으며, sequence-to-sequence architecture와 결합되어도 좋은 성능을 보여줍니다.

그리고 저자들은 residual-conneciton technique을 사용합니다. Transformer에 사용하여 gradient vanishing 문제를 예방하고 decoder RNN's information (query)를 유지합니다. attention 또는 feed forward network 이후에 input을 다음 layer에 더하여 positional encoding information을 유지합니다. 그리고 upper layer의 gradient를 유지하고 upper layer가 gradient를 lower layer에 손실 없어 전달할 수 있도록 만들어줍니다.

 

- Attention Mechanism

저자들은 4개 attention에 대해 실험을 진행했습니다.

 

    - Scaled Dot-Production Attention

 

scaled Dot-Production Attention은 d_k차원 query와 d_v차원 key로 구성됩니다. 이 scaled dot-product attention은 query를 모든 key와 dot product하고 d_k로 나눈 다음 softmax function을 적용하여 value에 대한 weight를 구합니다.

 

식으로 나타내면 위와 같습니다. Dot-product attention은 d_k라는 scaling factor를 사용하지 않는 algorithm입니다. scaling은 수렴 속도를 향상시키고 효율성을 향상시켜 줍니다.

 

    - Additive Attention

additive attention은 feed-forward network를 사용합니다. 이는 query vector와 key vector를 가지고 attention을 계산할 때 single hidden layer을 사용합니다. 그러므로 query vector와 key vector는 동일한 dimension을 가질 필요가 없으며 model은 dimension에 상관없이 일관성 있는 성능을 보여줍니다. 

 

식은 위와 같습니다. query vector와 key vector를 concatenate하고 tanh function을 activation function으로 사용하는 single hidden layer feed-forward network에 feed 하여 결과를 구합니다.

 

    - Location-Aware Attention

location aware attention은 speech recognition을 위해 처음 제안되었습니다. 다른 attention mechanism과 다르게, 이 attention은 이전 attention distribution을 고려합니다. 이러한 차별점은 model이 alignment를 잘 학습할 수 있게 만들어 줍니다. 이러한 이점 덕분에 등장한 지 오래되었지만, 여전히 ASR model에서는 종종 사용되고 있습니다.

 

    - Multi-Head Attention

 

Multi-head attention (MHA)는 machine translation 관련 연구에서 처음 등장했으며, 저자들은 speech로 확장시켜 연구했습니다. 구체적으로 MHA는 여러 head를 가진 conventional attention mechanism이며, 각 head는 서로 다른 attention distribution을 생성합니다. 각 head가 encoder의 output에 따라 서로 다른 역할을 하는 것을 알아냈습니다. 저자들은 4개 head를 사용하여 baseline model을 구현했습니다.

 

- Optimization

저자들은 optimization을 위해 다양한 method를 사용했습니다. scheduled sampling, label smoothing, learning rate scheduling이 있습니다. 저자들은 acoustic modeling이 중요하지만 이러한 technique을 사용하는 것이 model 성능을 크게 향상시킨다는 것을 관측했습니다.

 

    - Scheduled Sampling

ground-truth label을 이전 prediction으로 fedding하는 teacher forcing은 decoder가 초기에 학습을 빠르게 수행할 수 있도록 도와주지만 training과 inference 사이 차이를 유발할 수 있습니다. 이전 예측의 확률 분포에서 sample 한 다음, 그 token을 다음 label을 예측할 때 이전 token으로 사용하는 방식은 training과 inference 사이 차이를 줄일 수 있습니다. scheduled sampling process는 학습 초기에 teacher forcing을 사용하며, 학습이 진행됨에 따라 model의 예측에서 sampling 할 확률을 0.8까지 선형적으로 증가시키고 학습이 종료될 때까지 이를 일정하게 유지합니다.

 

공식은 다음과 같습니다.

 

다른 연구들은 teacher forcing ratio가 결과에 미치는 영향이 크지 않다고 하지만, 저자들의 실험에서는 중요한 parameter였다고 합니다.

 

    - Label smoothing

Label smoothing은 speech recognition task에서 빈번히 사용되었습니다. Label smoothing은 예측에 대해 덜 확신을 갖게 만들어주고, vision이랑 speech task에서 성공적으로 사용되었던 regularization mechanism입니다. model이 예측할 때 더 높은 entropy를 갖도록 만들어주며, model이 더 adaptable하게 만들어줍니다. 모든 label에 uniform distribution을 적용한 ground truth label distribution을 사용합니다. 0.1을 epsilon (smoothing)으로 사용했습니다.

 

    - Learning Rate Scheduling

learning rate schedule은 ASR network의 성능을 결정짓는 중요한 factor입니다. 저자들은 처음 400 step에서는 0에서 3e-04로 learning rate를 warm-up 했습니다. 그 다음, validation set에서 loss가 몇 epoch동안 특정 threshold보다 많이 감소하지 않은 경우 learning rate를 줄였습니다. PyTorch's ReduceLROnPlateau method를 사용하여 scheduling을 control 했습니다.

 

Experiments

1000시간 labeled speech로 구성된 KsponSpeech dataset을 사용하여 실험을 진행했습니다. 80차원 log mel-filter bank coefficient feature를 추출하였습니다. SpecAugment를 사용하여 data augmentation을 진행했으며, mask parameter (F = 20), 최대 time-mask ratio (p_s = 0.05)과 함께 10개의 time mask를 사용했습니다. AI Hub에서 제공한 dataset은 짧은 발화로 이루어져 있습니다. 그렇기 때문에 저자들은 총 길이에 masking을 적용하는 방식을 사용했습니다.

저자들은 character error rate (CER)을 metric으로 사용했습니다.

 

위 식에서 X는 predicted script, Y는 ground truth script를 나타냅니다. distance D는 X와 Y 사이 Levenshtein distance를 나타내고, length L은 ground truth script Y의 length를 나타냅니다. 이 metric을 통해, 저자들은 acoustic model만 사용했을 때 10.31% CER을 달성했습니다. 그리고 저자들은 KoSpeech가 제공하는 다양한 option에 맞춰 여러 실험을 수행했습니다. 약 50가지 option이 있지만, 저자들은 3가지 part에 집중했습니다: feature, CNN extractor, attention mechanism.

 

실험 결과는 위와 같습니다. 또한 beam search를 수행했습니다. beam search는 greedy search보다 더 나은 성능을 보여주며 풍부한 예측 표현을 보장합니다. 저자들은 실험을 통해 평균적으로 beam search decoding CER이 greedy search보다 2% 더 높은 결과를 보이는 걸 확인했습니다.

 

Conclusion

다양한 feature를 가지고 실험을 진행했으며, 결과는 RNN structure, listner layer와 speller layer size의 ratio 등 조건에 따라 달라졌습니다.

log spectrogram과 filter bank 사이 성능 차이의 경우, 저자들은 log spectrogram에 내포된 정보의 양이 filter bank보다 더 많았지만, 발음을 표현하는 envelope information가 filter bank에서 더 명확히 표현되었습니다. MFCC의 경우 차원 감소의 영향 때문에 성능이 감소되는 것으로 판단했습니다.

feature 뿐만 아니라 decoding mechanism에 대해서도 흥미로운 결과를 보였습니다. greedy decoding mechanism은 beam search보다 더 뛰어난 결과를 보였습니다. 저자들은 예측을 재평가하는 외부 언어 model의 부재 때문이라고 생각한다 합니다. 내부 language model은 자체적으로 poweful하지만, beam search decoding step에 있어 더 정교한 rescoring system은 여전히 필요해 보입니다.

728x90