728x90

이번에 리뷰할 논문은 Almost Unsupervised Text to Speech and Automatic Speech Recognition [1]이며, ICLR 2019에 억셉되었다.

 

Overview

- 음성 및 텍스트 영역 모두에서 언어 이해 및 모델링 기능을 구축하기 위해 짝을 이루지 않는 음성 및 텍스트 데이터에 대한 self-supervised learning 아이디어를 활용함

- 특히, 인코더-디코더 프레임 워크에서 손상된 음성 및 텍스트를 재구성하기 위해 Denoising Auto-Encoder를 사용함

- 역 번역의 개념인 Dual transformation을 사용하여 텍스트를 음성으로 (TTS) 및 음성을 텍스트로 (ASR) 변환하는 기능을 제안함

- 음성 및 텍스트 시퀀스가 ​​일반적으로 Neural Machine Translation과 같은 다른 시퀀스--시퀀스 학습 작업보다 길다는 점을 고려하면 오류 전파로 인해 더 많은 어려움을 겪을텐데, 이는 생성된 시퀀스의 오른쪽 부분이 일반적으로 왼쪽 부분보다 나쁘다는 문제를 나타냄

- 특히 Supervised 데이터가 부족하여 리소스가 없거나 리소스가 부족한 설정에서(즉 데이터가 부족한 상황) 자주 나타나는 현상임

- 따라서 Denoising Auto-Encoder Dual Transformation을 기반으로 텍스트와 음성 모두에 대해 양방향 시퀀스 모델링을 추가로 활용하여 오류 전파 문제를 완화하는 것을 제안함

 

Intro & Related works

- 최근, 최첨단 성능의 TTS ASR 시스템은 대부분 Neural Networks 기반이며, 모두 대규모 데이터를 많이 사용하므로, 쌍을 이루는 음성 및 텍스트 데이터셋이 부족한 언어에는 문제가 발생함

- 비지도 ASR에 초첨을 맞춘 작업에서는 TTS의 추가 정보를 활용하지 않는데(2019년 기준), 이는 ASR의 이중 작업이며, ASR의 성능을 향상시킬 수 있는 큰 잠재력임

- 게다가 비지도 ASR은 일반적으로 음성 파형을 단어 또는 음소로 먼저 분할하고, 세그먼트 수준에서 텍스트 데이터와 음성을 정렬하는 일부 작업별 알고리즘을 활용함

- 그러나 TTS는 일반적으로 음성 파형을 Mel-spectrogram 또는 MFCC로 변환하여 프레임 수준에서 처리함

- 따라서 비지도 ASR 용으로 설계된 알고리즘을 TTS에 쉽게 적용하기 힘듬

- 샘플이 거의 없는 특정 화자의 음성을 합성하려는 작업은 일반적으로 전이 학습 문제로 간주되지만, 비지도 학습 문제가 아닌 다른 화자의 레이블이 지정된 다량의 음성 및 텍스트 데이터를 활용함 

- 그리하여 이 논문에서는, TTSASR 작업의 이중 특성으로부터 영감을 받아 TTSASR 모두에 대해 몇 가지 쌍을 이루는 음성 및 텍스트 데이터와 추가로 쌍을 이루지 않는 데이터를 활용하여 거의 감독되지 않는 새로운 방법을 제안함

 

 

Method

1. DAE (Denoising Auto-Encoder)

 

- 짝을 이루지 않는 대량의 음성 및 텍스트 데이터를 감안할 때 표현 추출 및 언어 모델링 기능을 구축하는 것이 음성과 텍스트 간의 변환을 위한 첫 번째 단계임
- 이를 위해 논문에서는 DAE를 활용하여 손상된 버전 자체에서 음성 및 텍스트 시퀀스를 재구성함
- 노이즈 제거 자동 인코더는 일반적인자가지도 학습 방법이며 비지도 학습에 널리 사용되는데, 음성 및 텍스트 데이터에 대한 노이즈 제거 자동 인코더의 손실 함수 $L^{dae}$ 는 다음과 같이 공식화됨

$L^{dae}=L_s(x|C(x);\theta_{enc}^S,\theta_{dec}^S)+L_T(y|C(y);\theta_{enc}^T,\theta_{dec}^T)$

- 여기에서, $S, T$는 각각 음성과 텍스트 도메인의 시퀀스 데이터이며, $\theta_{enc}^T,\theta_{dec}^T$는 음성 인코더, 음성 디코더, 텍스트 인코더 그리고 텍스트 디코더의 파라미터들임
- $C$는 0값을 갖는 벡터로 일부 요소를 무작위로 마스킹하거나 음성 및 텍스트 시퀀스의 특정 창에서 요소를 교체하는 손상된 연산을 나타냄

- $L_s, L_T$ 각각 음성 및 텍스트 대상 시퀀스의 손실을 나타냄

- 이를 정리하면, $L_s$ 는 음성의 Mean Squared Errors로, $L_T$는 text Classification으로 나타낼 수 있음

 

2. Dual Transformation (DT)

1) DT는 TTS 및 ASR 작업의 이중 특성을 활용하고 텍스트를 음성으로 (TTS) 및 음성을 텍스트로 (ASR) 변환하는 기능을 개발하는 핵심 구성 요소임
- ASR 모델을 사용하여 음성 시퀀스 $x$를 텍스트 시퀀스 $\hat{y}$로 변환 한 다음 변환 된 쌍 $(\hat{y},x)$에서 TTS 모델을 훈련시킴
- 마찬가지로 TTS 모델에 의해 생성 된 변환 된 쌍 $(\hat{x},y)$에 대해 ASR 모델을 훈련함
- 이중 변환은 번역을 위해 단일 언어 데이터를 활용하는 가장 효과적인 방법 중 하나인 backtranslation(역번역) 으로서, Neural Machine Translation
- DT는 번역을 위해 단일 언어 데이터를 활용하는 가장 효과적인 방법 중 하나인 Neural Machine Translation의 backtranslation(역-번역) 방법에서 제안되었음

 

2) 손실 함수 $L^{dt}$ 다음 두 부분으로 구성됨

$L^{dt}=L_S(x|\hat{y};\theta_{enc}^T,\theta_{dec}^S)+L_T(y|\hat{x};\theta_{enc}^S,\theta_{dec}^T)$

- 여기에서, $\hat{y}$=argmax$P(y|x;\theta_{enc}^s,\theta_{dec}^S)$ 및, $\hat{x}=f(y;\theta_{enc}^T,\theta_{dec}^S)$는 각각 음성 $x$ 및 텍스트 $y$에서 변환된 텍스트 및 음성 시퀀스임
- 모델 학습 중에는 TTS 모델이 변환된 최신 텍스트 시퀀스를 활용하는 DT가 즉시 실행되며, 훈련을 위해 ASR 모델에 의해 또는 그 반대로 TTS 및 ASR의 정확도가 점진적으로 향상될 수 있도록 보장함

 

3. Bidirectional Sequence Modeling

1) Seq2seq 학습은 일반적으로 오류 전파로 어려움을 겪음

- 예를 들어, 추론 중에 요소가 실수로 예측되면 오류가 전파되며, 이로 인해 생성된 시퀀스의 오른쪽 부분 (끝 부분)이 왼쪽 부분보다(앞 부분) 정확도가 떨어짐
- 음성 및 텍스트 시퀀스는 일반적으로 신경 기계 번역과 같은 다른 NLP 작업의 시퀀스보다 길며 오류 전파로 인해 더 많은 문제를 겪을 수 있음 
- 예를 들어, 실험에서 DT중에 생성된 음성 시퀀스의 오른쪽 부분은 일반적으로 반복되는 단어나 누락된 단어가 있는 왼쪽 부분보다 품질이 낮음
- 결과적으로 훈련을 위해 변환된 데이터에 의존하는 DT이 영향을 받고 텍스트의 오른쪽 부분과 음성 시퀀스가 잘 훈련될 수 없음
- 따라서 TTS 및 ASR 모델은 모두 시퀀스의 오른쪽 부분, 특히 label이 있는 데이터가 부족하여 리소스가 낮거나 없는 환경에서 낮은 품질의 결과가 도출되는 경향이 있음
2) 위의 문제를 해결하기 위해 양방향 시퀀스 모델링을 활용하여 왼쪽에서 오른쪽 및 오른쪽에서 왼쪽 방향으로 음성 및 텍스트 시퀀스를 생성하는 것을 제안함
- 이러한 방식으로 기존의 DT 프로세스에서 항상 품질이 낮았던 시퀀스의 오른쪽 부분을 좋은 품질을 유지한 채로 오른쪽에서 왼쪽 방향으로 생성 가능함
- 결과적으로, 훈련을 위해 변환된 데이터에 의존하는 이중 작업은 시퀀스의 오른쪽 부분에서 개선된 품질의 혜택을 받을 것이며, 시퀀스의 왼쪽과 오른쪽 부분 사이의 생성 품질에서 더 균형을 이룰 것임
- 원래 왼쪽에서 오른쪽으로 생성된 것보다 더 높은 변환 정확도를 제공함

- 동시에 양방향 시퀀스 모델링은 양방향으로 데이터를 활용하는 데이터 증대 효과로도 작용할 수 있으며, 이는 특히 거의 비지도 학습 설정에서 쌍을 이룬 데이터가 거의 없을 때 유용하게 사용될 수 있음
- 양방향 DAE는 다음과 같이 구성할 수 있음

- 왼쪽에서 오른쪽 및 오른쪽에서 왼쪽 방향으로 손상된 음성 및 텍스트 시퀀스를 재구성하는 경우 $C(\cdot)$은 masking 연산임
- 시퀀스를 두 방향으로 모델링할 때 모델 매개 변수를 공유함
- DAE 및 DT를 기반으로 한 양방향 시퀀스 모델링은 왼쪽에서 오른쪽 및 오른쪽에서 왼쪽 세대 간에 모델을 공유함
- 즉, 시퀀스를 양방향으로 생성하는 하나의 모델을 학습할 수 있으며, 모델 매개 변수를 줄이는 것도 가능함
- 모델에게 훈련과 추론의 시작 요소로 제로 벡터를 사용하는 기존의 디코더와는 달리, 제안하는 방법은 두 개의 학습 가능한 내장 벡터를 훈련과 추론 방향을 나타내는 두 개의 시작 요소로, 하나는 왼쪽에서 오른쪽으로, 다른 하나는 오른쪽에서 왼쪽으로 사용함
- 따라서 총 4 개의 시작 임베딩을 학습함
- 2 개는 음성 생성 용이고 다른 2 개는 텍스트 생성 용임


- TTS 및 ASR의 음성 및 텍스트 시퀀스는 일반적으로 monotonic attention에 의해 alignment되므로, 예를 들어 디코더의 음성 시퀀스의 왼쪽 부분은 일반적으로 TTS의 인코더에서 텍스트 시퀀스의 왼쪽 부분에 집중될 수 있음
- 왼쪽에서 오른쪽 생성과 일치하기 위해 오른쪽에서 왼쪽 방향으로 대상 시퀀스를 생성할 때 오른쪽에서 왼쪽 방향으로 소스 시퀀스를 인코더에 공급함
- 따라서 소스 시퀀스를 역순으로 대상 시퀀스와 일치시킴

 

4. Proposed model details

1) 시퀀스 모델링에서 기존 RNN / CNN 보다 장점이 있기 때문에 Transformer로 선택하였음

 

2) 그림 a
- 녹색 및 노란색 화살표는 음성 및 텍스트에 대한 DAE를 나타냄
- 빨간색 화살표는 텍스트에서 음성으로 (TTS)
- 파란색 화살표는 음성에서 텍스트로 (ASR)의 DT를 나타냄
- DAE와 DT 모두 양방향 시퀀스 모델링을 포함함

 

3) 그림 b
- Transformer를 기반으로 하는 음성 및 텍스트 인코더 및 디코더
- Transformer는 주로 교차 위치 정보를 추출하기 위한 MHA와 각 위치에서 non-linear 변환을 보장하기 위한 FFN로 구성된 self-attention 메커니즘을 사용하고, 각각에 residual 연결 및 layer norm이 이루어짐
- 디코더는 인코더의 마지막 레이어에서 hidden representation을 추출하기 위해 추가 MHA를 사용함
- 인코더와 디코더는 모두 input d_model이 256이고 FFN은 1024의 크기이며, 4 layer로 쌓았음
- TTS와 ASR은 인코더와 디코더에 대해 동일한 모델 구조를 공유하지만 모델 매개 변수가 다름 (공개 안되어있음)

 

4) 그림 c
- 음성 및 텍스트에 대한 입력 및 출력 모듈이며, 음성 입력 모듈 (그림 c의 왼쪽 하단)은 hidden size가 256 인 Pre-Net으로 구성되며 출력 차원은 Transformer의 hidden size인 256과 같음
- 음성 출력 모듈 (그림 c의 왼쪽 상단)은 두 가지 구성 요소로 구성됨
- 하나는 출력 차원이 1 인 stop linear layer와 현재 디코딩 단계가 중지되어야 하는지 여부를 예측하는 sigmoid임
- 다른 하나는 각 단계에서 80 차원 벡터로 mel-spectrogram을 생성하기 위해 추가 Post-Net이 있는 mel linear layer임
- Post-Net은 생성된 mel-spectrogram의 품질을 개선하는 것을 목표로 하는 256의 hidden size를 갖는 5-layer 1-D Convolution 네트워크로 구성됨
- Griffin-Lim 알고리즘을 사용하여 mel-spectrogram을 audio로 변환함
- 텍스트 입력 모듈 (그림 c의 오른쪽 하단)은 phoneme 임베딩으로, phoneme ID를 임베딩으로 변환함
- 출력 모듈의 텍스트 linear layer (그림 c의 오른쪽 상단)와 phoneme 임베딩의 매개 변수를 공유함
- 텍스트 시퀀스는 모델에 입력하기 전에 먼저 텍스트-음소 변환기를 사용하여 음소 시퀀스로 변환됨

 

[1] Ren, Yi, et al. "Almost unsupervised text to speech and automatic speech recognition." International Conference on Machine Learning. PMLR, 2019.

728x90
728x90

이번에 리뷰할 논문은 Facebook AI에서 발표한, Self-Training for End-to-End Speech Recognition [1] 이며, Pseudo labels을 활용한 self-training에 대한 내용임

 

Overview

1. Self-training with pseudo-labels

2. Pseudo-labelled data set을 사용한 학습이 기준 모델의 정확도를 크게 향상시킬 수 있음을 보임

- 작은 쌍의 labeled 데이터셋에서 강력한 베이스라인 (음향 모델) training

- Pseudo-label을 생성하기 위해 대규모 text corpus에서 훈련된 LM으로 안정적인 디코딩 수행

- 시퀀스 간 모델의 일반적인 error에 조정된 filtering mechanism 제안

- Seq2Seq 모델에서 자주 접하게 되는 실수를 해결 하기 위해, 제안하는 pseudo-label filtering에 대한 heuristicconfidence-based approach 평가

-> Looping and early stopping

- 또한, 학습 중 여러 모델을 결합하는 앙상블 접근 방식 제안

-> 레이블 다양성을 개선하고 모델이 잡음이 있는 pseudo-label에 대해 지나치게 확신하지 않도록 함

 

Background & Issue

1. ASR 시스템을 구축하기 위해 많은 양의 transcribed data 필요

- Labeled 데이터 양이 감소하면 end-to-end 모델의 성능 저하

- 많은 양의 오디오를 transcribing 하는 것은 expensive, time-consuming

- Unpaired audio and text를 활용하기 위해 semi-supervised learning이 제안됨

 

2. Self-training

- Semi-supervised learning 기법 중 하나인 self-training 방법 채용

- 훨씬 더 작은 labeled 데이터에서 학습된 모델로부터 생성된 잡음이 있는 label을 사용

 

Proposed model

1. Baseline model architecture [2]

- 앞서 리뷰한 TDS block 논문 아키텍처를 사용

 

2. Inference

- Beam search를 사용하여 가능성이 가장 높은 hypothesis 탐색

$\bar{Y}=$argmax$_Y$log$P_{AM}(Y|X)+\alpha$log$P_{LM}(Y)+\beta|Y|$ ...(1)

- $\alpha$는 LM의 weight임

- $\beta$는 seq2seq 모델에서 흔히 볼 수있는 조기 중지 문제를 피하기위한 토큰 insertion [3]

-> 디코딩 중에 발생하는 모델의 실수로 인해, 음성의 특정 frame을 건너 뛰어 일부 단어가 decoding이 안되는 문제

-> 이는 특히 외부 언어 모델을 사용할 때 많이 발생

 

- [2]의 모델을 활용하여 decoder 안정화 (random sampling, EOS threshold)

log$P_u$(EOS$|y_{<u}$)$<\gamma\cdot$max$_{c\neq EOS}$log$P_u(c|y_{<u})$

- 위의 식이 성립될 경우에 EOS 사용

- $\gamma$는 튜닝 가능한 hyperparameter임

 

3. Semi-supervised Self-training

 

1) Supervised learning setting

- 우리가 많이 사용하는 supervised learning setting은 입력 $X$와 그에 해당하는 label $Y$가 있으며, 이를 paired dataset이라 부름. 이는 아래와 같음

$\mathcal{D}={(X_1,Y_1),...,(X_n,Y_n)}$

- 아래의 식처럼, $D$에 대해 학습된 모델은 레이블이 있는 $Y$에 주어진 ground-truth의 가능성을 최대화 함

$\sum_{(X,Y)\in\mathcal{D}}$log$P(Y|X)$ ...(2)

 

2) Semi-supervised setting

- $mathcal{D}$ 외에 label이 없는 오디오 데이터 세트 $\mathcal{X}$ 및 페어링되지 않은 텍스트 데이터 세트 $mathcal{Y}$ 만 포함 됨

- 먼저, 식 (2)를 최대화하여 $mathcal{D}$에서 AM 모델을 훈련함
- 둘째, $mathcal{Y}$에서 LM 교육

- 셋째, 두 모델을 결합하여 식 (1)을 적용하고, label이 지정되지 않은 각 데이터에 대한 pseudo label을 생성하고, 아래와 같이 paired pseudo label을 이룬 데이터 세트를 얻음
$\mathcal{D}={(X_i,\bar{Y_i})|X_i\in\mathcal{X}}$

- 마지막으로 새 AM은 $mathcal{D}$와 $D$의 조합에 대해 아래와 같은 목표로 훈련 할 수 있음

$\sum_{(X,Y)\in\mathcal{D}}$log$P(Y|X)+\sum_{(X,Y)\in\mathcal{D}}$log$P(\bar{Y}|X)$

 

3) Proposed filtering

- Pseudo-labelled dataset $\bar{\mathcal{D}}$는 noisy $\bar{Y}$를 포함하고 있음

- Filtering은 $\bar{\mathcal{D}}$의 크기와 pseudo-label 사이에 balance를 이루기 위해 사용됨

- Seq2seq에 특화된 두 가지 heuristic-based filtering 기능 제안

 

-> Confidence-based filtering [4] 추가 결합 가능하며, 문장 수준에 적용

-> $c$번 이상 반복되는 n-gram을 포함하는 pseudo-label을 제거하여 루프를 필터링 함

-> EOS확률이 threshold 이상인 $\hat{Y}$을 유지함으로써, early stopping을 해결할 수 있음

-> 또한, 완전한 $\hat{Y}$을 찾지 않고 beam search이 종료되는 경우에 대해서도 필터링 함

 

4) Confidence-based filtering [4]

- Decoder가 디코딩 된 $\bar{\mathcal{Y}}$에 대해 얼마나 확신하는가?

- Sentence-level confidence $C_{sent}$는 아래의 식인 평균 단어 신뢰도로 계산됨

$C_{sent}\frac{1}{N}\sum_{i=1}^N c_{w_i}$

- Word confidence $c_{w_i}$Confusion Network [5]의 $i$번째 step에 있는 단어 $w_i$의 사후 확률임

- Word sequence posterior 값은 예상되는 WER을 최소화하는 Minimum Bayes Risk Decoding [6]에 의해 얻어짐

 

5) Confusion network [5]

- 디코딩 결과가 얼마나 정확한지 검증하는 기법으로 사용 됨

- Word graph 혹은 Finite-state Machine에서 state transition 스코어의 합이 1이 되도록 확률로 normalize한 모델

- 이외에도 알아두면 좋을 것들: Lattice-based word error minimization algorithm

-> Lattice alignment algorithm

-> Intra-word clustering

-> Inter-word clustering

-> Pruning

-> The consensus hypothesis

-> Score scaling

- 올해 안에 확인해보기

 

6) Minimum Bayes decoding [6]

- ASR에 사용되는 MAP rule은 다음과 같음

$W^*=$argmax$_{w}P(W|\mathcal{O})$

- W word-sequence 이고, Oobservation sequence이며

- 이를 통해 WER과 관련된 Minimum Bayes Risk 추정치 제공 (Levenshtein edit distance를 기준으로 WER 사용하기 때문)

$W^*=$argmin$_w\sum_{w'}P(W'|\mathcal{O}L(W,W'))$

- 여기에서 $L(W,W')$는 word sequence $W$와 $W'$사이의 Levenshtein edit distance임

- 또한, $P(W'|\mathcal{O})$는 모델에 의해 $W'$에 할당된 posterior 확률임

 

다시 3)으로 돌아와서, - 각 pseudo-label에 대해 seq2seq에서 length-normalized log likelihood를 confidence score로 계산한 것은 아래의 식과 같음

 

ConfidenceScore$(\bar{Y_i})=\frac{log{P_{AM}(\bar{Y_i}|X_i)}}{|\bar{Y_i}|}$

- 여기에서 $|\bar{Y_i}|$는 각 발화의 토큰 수임

 

7) Ensembles in self-training 

7-1) 문제점

- Self-training에서 여러 모델을 활용하는 방법은 추론 중 모델들의 score 결합

- 더 높은 품질의 single pseudo-labelled 세트를 생성할 수 있음

- 하지만 $M$이 증가하면 디코딩 프로세스가 heavyweight

 

7-2) Proposed sample ensemble

- Given $M$ bootstrapped AM, 각 모델에 대한 pseudo-labelled dataset $\bar{D_m}$을 병렬로 생성

이후 pseudo-label의 모 $M$ setuniform 가중치와 combine

훈련 중 아래의 식을 최적화

$\sum_{(X,Y\in\mathcal{D})}$log$P(Y|X)+\frac{1}{M}\sum_{m=1}^M\sum{X,Y\in{D_m}}$log$P(\bar{Y}|X)$

 

- Implementation으로, 먼저 labelled $\mathcal{D}$를 이용하여 randomly initialized weights로 모 $M$ 학습

- 이후, 각각의 모델에 맞춰 tuninghyper-parameter로 $\bar{D_m}$생성

- 학습 동안, 모델 $M$중 하나에서 매 epoch마다 target으로 pseudo-label을 균일하게 샘플링함

 

Experiments

1. Data (LibriSpeech)

- Paired dataset: Train-clean 100

- Unpaired dataset (clean): Train-clean-360

- Unparied dataset (noisy): Train-other-500

- Realistic for self training

-> LibriSpeech는 총 14,476권의 공개 도서에서 파생되어 생성된 데이터셋임

-> LM을 위한 훈련 데이터에서 AM 훈련 셋과 관련된 모든 책 제거 (997개)

- NLTK toolkit for text normalization

--> 문장 분할 적용, 소문자로 모두 변경, ` 를 제외한 구두점 제거, 하이픈 공백으로 대체

 

2. Model

- 각각 10, 14 및 16 채널과 $k$ = 21이 있는 3 개 그룹의 9 개의 TDS 블록
- Soft-window 사전 교육 (attention 수렴을 위해), teacher-forcing, 20%의 dropout, 1%의 random sampling, 10%의 Label smoothing, 정규화를위한 1%의 word piece sampling
- SentencePiece [7]을 사용하여 "train-clean-100"의 transcripts에서 5,000 개의 word piece을 대상 토큰으로 계산

 

3. Training

- Pseudo-labels 학습시 8GPUs 사용

- Learning rate가 0.05 인 200 Epoch 동안 momentum이 없는 SGD 사용

- GPU 1개를 사용할 때 Epoch 40마다 0.5 씩 decay, GPU 8개에 Epoch 80 개씩 decay 먹임
- wav2letter ++ 프레임 워크 사용 [8]

 

4. LM

- ConvLM [9]과 동일한 model architecture 및 학습 방법 사용하여 word piece 학습

- 모든 beam search hyper-parameterpseudo-label 생성 전 dev set에서 조정

 

Results

1. Label measure

- Ground truth와 비교하여 필터링 된 pseudo-label의 WER로 정의함 (논문 자체에서 이렇게 했다는 말임)

2. Heuristic filtering

- No EOS + n-gram필터를 $c=2, n=4$에 적용

- 이후 필터링 된 데이터 세트 위에 confidence-based filtering 추가

- Confidence score에 대한 threshold 조정 시 pseudo-label 품질 개선됨 (그림 참조)

 

3. Model ensembles

- 여러 모델을 결합하면 특히 노이즈가 많은 설정에서 성능 향상

- 6개 모델과 heuristic filtering을 통해 13.7%의 상대적 개선률 획득

- 두 가지 필터링 기술이 ensemble과 효과적으로 결합 됨을 보임

- Sample ensemble이 학습 시간에 동일한 utterance에 대해 서로 다른 transcript를 사용하기 때문에 모델이 noise가 포함된 pseudo-label에 지나치게 확신하는 것을 방지함

 

4. Comparison with Literature

- 원본 책(label)과 비교를 하였는데 이때 쓰인 measure는 WRR (WER Recovery Rate) 이며 아래와 같음

$\frac{baseline WER - semi - supervised WER}{baseline WER - oracle WER}$

- WRR를 통해 pseudo-label과 연결할 수 있는 baselineoracle 사이의 간격을 보임

5. Comparison with other semi-supervised learning

- Seq2seq model에서 동일한 음성으로 실험 조건 세팅

기존 연구 (semi-supervised)

--> Cycle TTE [10]: inputoutput사이에 cycle-consistency loss 도입

--> ASR+TTS [11]: TTS 모듈을 활용하여 unpaired text에서 합성 데이터 생성

- 제안한 Self-training 방법이 기존 연구 보다 약 65.1% 우수한 WER 생성

Why?

- TDS 기반 encoder

- 실제 설정에서 쉽게 얻을 수 있는 훨씬 더 큰 unpaired text corpus 활용

 

 

Conclusion

- 대규모 Unlabelled dataset을 이용한 self-trainingend-to-end 시스템의 상당한 개선을 가져옴

- 기존의 Seq2seq 모델 및 앙상블에서 발생하는 문제점에 맞게 조정된 필터링 메커니즘의 효과

- Self-training에도 효과적임을 보임

 

- TDS block 및 이 논문 모두 Decoding, External LM 등에 대한 사전 지식이 있어야 충분히 이해할 수 있는 레벨이었음

- 소량의 Self-training을 통해 data augmentation 효과 및 unseen data의 distribution등의 개선을 기대할 수 있을 것 같고, real scenario에 사용해봄직 함

 

[1] Kahn, Jacob, Ann Lee, and Awni Hannun. "Self-training for end-to-end speech recognition." ICASSP 2020-2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2020.

[2] Kahn, Jacob, Ann Lee, and Awni Hannun. "Self-training for end-to-end speech recognition." ICASSP 2020-2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2020.

[3] Chorowski, Jan, and Navdeep Jaitly. "Towards Better Decoding and Language Model Integration in Sequence to Sequence Models." Proc. Interspeech 2017 (2017): 523-527.

[4] Veselý, Karel, Mirko Hannemann, and Lukáš Burget. "Semi-supervised training of deep neural networks." 2013 IEEE Workshop on Automatic Speech Recognition and Understanding. IEEE, 2013.

[5] Mangu, Lidia, Eric Brill, and Andreas Stolcke. "Finding consensus in speech recognition: word error minimization and other applications of confusion networks." Computer Speech & Language 14.4 (2000): 373-400.

[6] Xu, Haihua, et al. "An improved consensus-like method for Minimum Bayes Risk decoding and lattice combination." 2010 IEEE International Conference on Acoustics, Speech and Signal Processing. IEEE, 2010.

[7] Kudo, Taku, and John Richardson. "SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing." Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing: System Demonstrations. 2018.

[8] Vineel Pratap, Awni Hannun, Qiantong Xu, Jeff Cai, Jacob Kahn, Gabriel Synnaeve, et al., "Wav2letter++: A fast opensource speech recognition system", International Conference on Acoustics Speech and Signal Processing (ICASSP), 2019.

[9] Dauphin, Yann N., et al. "Language modeling with gated convolutional networks." International conference on machine learning. PMLR, 2017.

[10] Takaaki Hori, Ramon Astudillo, Tomoki Hayashi, Yu Zhang, Shinji Watanabe and Jonathan Le Roux, "Cycle-consistency training for end-to-end speech recognition", International Conference on Acoustics Speech and Signal Processing (ICASSP), 2019.

[11] Murali Karthick Baskar, Shinji Watanabe, Ramon Astudillo, Takaaki Hori, Luk áš Burget and Jan Černockỳ, "Semi-supervised sequence-to-sequence ASR using unpaired speech and text", Interspeech, 2019.

728x90
728x90

이번에 리뷰할 논문은 Sequence-to-sequence speech recognition with time-depth separable convolutions [1] 이며, receptive field를 크게 유지하면서 모델의 매개변수 수를 극적으로 줄이는 시간 깊이 분리형 CNN block을 제안한 논문임

 

Overview

1. TDS (Time-depth separable)

- Fully convolutional sequence-to-sequence encoder architecture
- RNN baseline에 비해 WER 우수, 계산의 병렬 특성으로 인해 효율적임을 주장
- Receptive field를 크게 유지하면서 모델의 매개 변수 수를 극적으로 줄이는 시간 깊이 분리형 CNN block 제안

 

2. 또한, 느리고 순차적인 기술 폐기
- Neural content attention
- Location based attention [2]
- Scheduled sampling [3]

3. CNN 기반의 언어 모델
- CNN 기반의 언어 모델을 효과적으로 통합할 수 있는 Beam search 추론 절차 제공
- Beam size가 매우 크더라도 정확도가 저하되지 않음

 

Proposed model

1. Background

1) 주어진 음성 입력 $X=[x_1,...,x_t]$, $Y=[y_1,...,y_u]$가 있을 때, Seq2seq 모델의 인코더는 $X$를 hidden representation으로 인코딩하며, 디코더는 인코더로부터 받은 hidden represetation과 디코더의 입력을 각각의 출력 토큰으로 디코딩하여 문장으로 생성함. 이를 아래에 자세히 설명함

 

2) 인코더는 아래의 식으로 볼 수 있음

$(K, V)$ = encode$(X)$

- 여기에서 $K=[k_1,...,k_t]$ 는 key이며, $V=[v_1,...,v_t]$는 value임

 

3) 디코더는 아래처럼 주어질 수 있는데,

$Q_u = g(y_{u-1},Q_{u-1})$

$S_u = $attend$(Q_u,K,V)$

$P(y_u|X,y_<u)=h(S_u,Q_u)$

- 여기에서 $g(\cdot)$은 이전 token과 query vector $Q_{u-1}$을 인코딩하여 다음 query vector를 처리하는 RNN임

- Attention mechanism인 attend$(\cdot)$은 summary vector인 $S_u$를 처리함. 여기에서 summary vector는 일방적인 context vector로도 알려짐

- $h(\cdot)$은 출력 token들의 전체 distribution을 계산함. 즉 attention score를 뜻함

 

2. Time-depth separable convolutions

1) 채널을 통한 mixing에서 시간 경과에 따른 집계를 부분적으로 분리

- 2D Convolution-based

- 매개 변수 수를 무시할 정도의 증가량으로, 모델의 receptive field를 늘릴 수 있음

 

 

2) 모델 구조 (그림 내의 b)

TDS convolution model architecture

- $t * w * c$의 입력을 받아 2D CNN으로 시작

-> $T$: time step의 수

-> $w$: 입력 width (frequency)

-> $c$: 입력과 출력의 채널 수

- 커널 사이즈는 $k * 1$

- 매개변수의 total 수: $kc^2$

- Residual, ReLU, Layer norm 적용

 

3) 모델 구조 (그림 내의 c)

- 입력: $T * 1 * wc$, 즉 (b)의 출력과 동일

- 2-layer of 1x1 CNN (즉, linear layer) with ReLU 추가

- 입력과 위의 결과를 residual로 연산

- Layer norm 적용

 

4) 3개의 sub-sampling layers

- Stride 2로 사용

- 전체 8 sub-sampling factor 사용

-> 이 중 1개는 첫 번째 layer, 나머지는 각각의 TDS block 사이에 사용

-> 시간 축에 대해서만 stride 2로 적용

 

5) Increasing the number of output channels

- Feature를 적시에 압축하기 때문에, 각 sub-sample에서 output channel 수를 늘림

- 이 때 단순화를 위해 residual connection은 사용되지 않고, ReLU와 Layer norm만 적용

 

Efficient Decoder 제안

1. 기존 방법

- Sequential Dependency in the decoder: 다음 출력을 계산하려면 decoder는 이전 예측이 필요

- 기존 방법 중 이에 대한 예시: scheduled sampling, input feeding [4], location-based attention

 

2. Inner-product key-value attention 제안

- Hidden 차원 $d$의 역 제곱근으로 inner-product 확장

$S=V\cdot$softmax$(\frac{1}{\sqrt{d}}K^TQ)$

- 이를 통해 수렴을 개선하고, 모델이 alignment를 학습하는데 도움이 된다고 함

- 하지만 일반화에서는 개선된 모습이 보이지 않았다고 함

 

3. Scheduled sampling의 한계

- 훈련 조건을 테스트 조건에 더 가깝게 만들어 노출 편향을 제한하지만, 다음 시간 단계에서 이전 예측을 사용하기 때문에 decoder에 순차 종속성이 도입된다는 단점이 있음

- 논문에서는 병렬로 계산하기 위해 위의 기술을 폐기하고, 대안으로 random sampling [5] 적용을 제안함

- 본 논문에서는 이전 예측이 무작위로 샘플링 된 토큰으로 대체되는 무작위 샘플링을 사용

- 입력 토큰을 샘플링 할 확률 $P_{rs}$로 결정

- 샘플링시, 균일한 분포에서 새 토큰 선택

- Random number $c_j$를 균일한 분포 $[0,1]$로부터 샘플링한 토큰 $U$를 얻음

- $R=[r_1,...,r_U]$로 설정, 이때 $r_j=\mathcal{I}(c_j>P_{rs})$이고, $P_{rs}$는 sampling 확률

- 이후 $U$토큰의 벡터 $Z$를 샘플링 함

- EOS를 포함하지 않는 출력 토큰에 대해 균일한 배포를 사용

- 이후 $\hat{Y}=R\cdot Z+(1-R)\cdot Y$ 

 

4. Soft window pre-training: Deep CNN-encoder를 학습하기 위한 soft attention 제안

- 모델이 원하는 위치에서 너무 멀리 떨어져 있는 attention 값에 페널티를 적용하여 입력을 따라 균일한 간격으로 출력을 정렬함

- $W$를 $T*U$ matrix with $W_{ij}=(1-\frac{T}{U}j)^2$라고 할 때,

- $W$는 출력이 입력을 따라 균일한 간격으로 있다고 가정하고, $i$번째 입력과 $j$번째 출력 사이의 제곱 거리를 인코딩함

- 따라서 스케일링 계수는 $\frac{T}{U}$가 됨

- 아래와 같이 $W$를 적용함

$S=V\cdot$softmax$(\frac{1}{\sqrt{d}}K^TQ-\frac{1}{2\sigma^2}W)$

- $\sigma$는 $W$의 효과를 약화시키는 hyperparameter임

- $W$의 적용은 정규화 된 attention vector (즉, softmax 이후)에 가우시안 모양의 마스크를 곱하는 것과 같음

 

- 처음 몇 epoch에 대해서만 window pre-training 진행

- 해당 작업으로 alignment와 수렴하는 것이 충분하다고 주장

- Encodersub-sampling 양이 변경될 때만 $\sigma$를 변경함

- 개인 적인 생각으론, 가우시안 필터 모양의 마스크를 곱하여 어텐션을 가이드하는 아이디어, 즉 휴리스틱한 내용은 도입해보고 잘 되었기 때문에 넣은 것인지 않을까 싶음

 

5. Regularization

- Dropout: 인코더 내에서 Non-linearity 이후 layer norm 이전에 적용

- Label smoothing: Prediction에 대한 과도한 신뢰성을 줄이기 위해 사용

- Word piece sampling

-> Word piece model 사용

-> 단어 수준에서 샘플링

-> 가 단어에 대해 확률 $1-P_{wp}$를 사용하여 가장 가능성이 높은 Word piece를 취하거나, $P_{wp}$가 가능성이 가장 높은 상위 10개에 대해 균일하게 샘플링하여 사용

 

6. Beam search decoding

- Stabilizing Beam Search

-> Seq2Seq Beam Search는 종종 beam size가 증가함에 따라 성능 저하 및 불안정 한 문제가 있음 [6]

-> 하지만 모델은 가능한 hypothesize를 효과적으로 검색하기 위해 큰 beam size를 사용할 수 있어야 함

-> Beam size를 크게 사용하기 위해 성능 저하 및 불안정 문제를 해결하는 아래의 2가지 방법론 제안

 

- Hard Attention Limit

-> Beam search가 이전 attention peak에서 $t_{max}$ 프레임 이상을 차지하는 $\hat{y}$값에 대해 허용하지 않음

-> $t_{max}$는 주어진 데이터 셋에 대해 한 번만 조정함

 

- End-of-sentence Threshold

-> 짧은 transcriptions에서 검색에 bias를 주기 위해, score가 최고 후보 score의 값보다 클 경우에만 EOS를 고려함

log$P_u(EOS|y_{<u})>\gamma\cdot max_c$log$P_u(c|y_{<u})$

-> Hard attention 한계와 마찬가지로, 매개 변수 $\gamma$는 주어진 데이터 세트에 대해 한 번만 조정함

 

7. Efficiency

- Heuristics method on Beam search

-> Beam threshold [7]를 설정하여 현재까지의 최고의 $\hat{y}$에서 고정된 범위 미만인 beam의 $\hat{y}$을 제거함

-> 또한, beam의 현재 $\hat{y}$ 세트에 새로운 후보 토큰을 제안 할 때, threshold 적용

-> 아래의 식

log$P_u(EOS|y_{<u})>\gamma\cdot max_c$log$P_u(c|y_{<u})$

-> 이 아래의 식을 만족해야 함

log$P_u(y|y_{<u})> max_c$log$P_u(c|y_{<u})-\eta$

-> Beam의 모든 후보에 대해 업데이트 된 probability 집합을 일괄 계산하므로, 각 단계에서 한 번의 forward만 필요

 

 

Experiments

1. Data

- LibriSpeech 960h

 

2. Encoder

- Two 10-channel, three 14-channel 그리고 six 18-channel TDS blocks (11 blocks)

- Using 1D convolutions to sub-sample over time

-> One as the first layer

-> One in between each group of TDS blocks

- Kernel sizes: all 21 x 1

- Final linear layer produces the 1024-dimensional encoder output

 

3. Decoder

- One-layer GRU with 512 hidden units

 

4. Initialization

- uniform distribution $\mathcal{U}(-\sqrt\frac{4}{f_{in}},\sqrt\frac{4}{f_{in}})$으로 초기화 되었으며, $f_{in}$은 각 유닛에 대한 fan-in임

 

5. Speech preprocessing

- 80-dimensional mel-scale filter banks computed every 10ms with a 25ms window

 

6. Token preprocessing

- 10k word pieces computed from the Sentence Piece toolkit [8]

 

7. Optimizer

- Synchronous SGD with a learning rate of 0.05, decayed by a factor of 0.5 every 40 epochs

- Clip the gradient norm to 15

 

8. Pre-train

- 해당 모델은 soft window와 $\sigma=4$로 3에폭 동안 pre-train 됨

 

9. Hyperparameters

- Dropout as 20%, label smoothing as 5%, random sampling as 1%, word piece sampling as 1%

 

10. Two word piece LMs on the 800M-word text-only dataset

- 두 개의 word piece 언어 모델을 사용하였음

- 첫 번째는 4-gram trained with KenLM [9]

- 두 번째는 convolutional LM (ConvLM) [10]

 

11. Beam setting

- Beam size of 80

- $t_{max}=30$

- EOS penalty $\gamma=1.5, \eta=10$

- LM 가중치 및 토큰 삽입 조건은 dev set LM 조합과 교차 검증으로 진행

- Wav2letter++ [11] 를 사용하여 training evaluation 평가

 

Results

 

1. TDS 모델은 외부 LM을 사용시 더 많은 이점을 얻음

- Better loss on the correct transcription

- More effective beam search

 

 

2. Model variants

 

 

- Varying the number of channels in TDS blocks

-> TDS Block의 채널 개수 변경

-> 기존: 10, 14, 18, params=36.5

--> (10, 12, 14), params=24.4

--> (10, 10, 10), params=14.9

 

- Fix params, Number of TDS blocks

-> N=9, k=27, c=(14, 16, 20), 5.18%

-> N=12, k=19, c=(10, 16, 16), 5.10%

 

- $P_{wp}$와 $P_{rs}$가 낮을수록 성능이 좋았음

 

- Soft window pre-training

--> Soft window 기법은 명확히 학습 초기에 모델 수렴에 도움이 되었음

 

- Receptive fields

--> 큰 사이즈의 receptive field가 없으면, encoder의 키 outputdecoderquery를 명확하게 할 수 없음을 주장

 

- Number of beam size

--> Beam size80까지 이득을 볼 수 있음

 

Conclusion

1. Fully convolutional encoder

- 제안하는 Fully convolutional encodersimple decoder가 강력한 RNN baseline의 도달함과 동시에 더 우수하고 효율적인 결과를 보임

 

2. TDS block

- CNN-based encode의 성공 핵심은 모델이 큰 사이즈의 receptive field를 유지할 수 있는 TDS에 의해 가능함

 

3. + ConvLM

- Convolutional LM을 안정적이고 확장 가능한 beam search 절차와 통합 하는 방법을 보임

 

 

[1] Hannun, Awni, et al. "Sequence-to-Sequence Speech Recognition with Time-Depth Separable Convolutions." Proc. Interspeech 2019 (2019): 3785-3789.

[2] Chorowski, Jan, et al. "Attention-based models for speech recognition." Proceedings of the 28th International Conference on Neural Information Processing Systems-Volume 1. 2015.

[3] Bengio, Samy, et al. "Scheduled sampling for sequence prediction with recurrent Neural networks." Proceedings of the 28th International Conference on Neural Information Processing Systems-Volume 1. 2015.

[4] Luong, Minh-Thang, Hieu Pham, and Christopher D. Manning. "Effective Approaches to Attention-based Neural Machine Translation." Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. 2015.

[5] Wang, Xinyi, et al. "SwitchOut: an Efficient Data Augmentation Algorithm for Neural Machine Translation." Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing. 2018.

[6] Chorowski, Jan, and Navdeep Jaitly. "Towards Better Decoding and Language Model Integration in Sequence to Sequence Models." Proc. Interspeech 2017 (2017): 523-527.

[7] Collobert, Ronan, Christian Puhrsch, and Gabriel Synnaeve. "Wav2letter: an end-to-end convnet-based speech recognition system." arXiv preprint arXiv:1609.03193 (2016).

[8] Kudo, Taku, and John Richardson. "SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing." Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing: System Demonstrations. 2018.

[9] Heafield, Kenneth. "KenLM: Faster and smaller language model queries." Proceedings of the sixth workshop on statistical machine translation. 2011.

[10] Dauphin, Yann N., et al. "Language modeling with gated convolutional networks." International conference on machine learning. PMLR, 2017.

[11] Pratap, Vineel, et al. "Wav2letter++: A fast open-source speech recognition system." ICASSP 2019-2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2019.

728x90
728x90

이번 논문은 음성 인식에서 널리 사용되고 있는 증강 기법인 SpecAugment [1]이다. 논문은 arxiv.org/abs/1904.08779에서 확인할 수 있다.

 

Intro, related works

기존의 음성 인식을 위한 증강 기법은 아래와 같았다.

 

1) Noise Injection

Noise Injection 

Numpy를 사용하여 데이터에 임의의 값을 추가하여 증강하는 기법 (잡음 추가)

 

2) Shifting time

Shifting time

임의의 ms로 오디오를 왼쪽 / 오른쪽으로 이동

n_ms를 사용하여 오디오를 왼쪽으로 이동하면 처음 n_ms초는 0(무음)으로 표시

n_ms를 사용하여 오디오를 오른쪽으로 이동하면 마지막 n_ms가 0(무음)으로 표시됨

 

3) Changing pitch

Changing pitch

무작위로 pitch (음 높이)를 변경할 수 있음. librosa에 의해 수행 가능

 

4) Changing speed

 

Changing speed

음 높이를 변경하는 것과 동일하게 librosa에 의해 수행할 수 있음

고정 비율로 시계열을 늘릴 수 있음

 

이러한 방법을 사용하는 도중, SpecAugment가 2019년도에 제안됨

 

Method

 

Time warping, frequency masking, time masking의 세 가지 기본 방법으로 데이터를 증강 기법을 제안함

이 논문에서는 이 증강 기법을 LibriSpeech 및 SwitchBoard dataset에 적용하여 실험함

 

사용된 네트워크는 Listen, attend and spell [2] (블로그 리뷰 참조: kaen2891.tistory.com/30?category=453454)

 

1. Time Warping

 

임의의 점이 선택되고, 해당 선을 따라 $0$에서 시간 왜곡 매개 변수 $W$까지의 균일 분포에서 선택한 거리 $w$로 왼쪽 또는 오른쪽으로 warping 함

 

2. Frequency Masking

 

주파수 채널 $[f_0,f_0 + f)$ 이 마스킹됨

여기에서 $f$는 0에서 주파수 마스크 매개 변수 $F$까지의 균일한 분포에서 선택됨

$f_0$은 $[0, v-f)$에서 선택되며, 여기에서 $v$는 주파수 채널의 수임 (80차원 mel-spectrogram이 주로 사용되므로 80이 해당됨)

 

3. Time Masking

 

연속 시간 단계 $[t_0, t_0+t)$가 마스킹됨

$t$는 0에서 시간 마스크 매개 변수 $T$까지의 균일한 분포에서 선택됨

$t_0$은 $[0,\tau-t)$에서 선택됨

 

위에서부터 아래로, log-mel spectrogram 입력, time warping, frequency masking, time masking 적용된 그림

 

4. Augmentation Policy

Frequency masking과 Time maksing을 결합하여 아래의 그림과 같이 4개의 새로운 정책이 도입됨

LB, LD, SM 및 SS 정책

여기에서,

- $W$는 시간 왜곡 매개 변수

- $F$는 주파수 마스킹 매개 변수

- $m_F$: 적용된 주파수 마스킹 수

- $T$: 시간 마스킹 매개 변수

- $m_t$: 적용된 시간 마스킹 횟수

 

이에 따라 적용된 증강 스펙트럼 결과는 아래의 그림과 같음

위에서부터 아래로, 원본 log mel-spectrogram, LB 적용 결과, LD 적용 결과

 

Experimental setup and results

 

Setup

- 80-dimensional log-mel spectrogram 사용

- Encoder layer에서 stride size가 2 인 32 개 채널이 있는 3x3 컨볼 루션의 2 개 레이어가 포함되어 총 시간 감소 계수인 $r$ factor를 4로 설정함

- Convolutional layer위의 Encoder에는 Bi-LSTM (LAS-4-1024) layer 4 개가 포함됨

- 최대 학습률을 $1e−3$으로, batch_size를 512로, 32 개의 Google Cloud TPU를 사용하여 학습하였음

 

results

- 논문 출판 당시 SpecAugment를 이용하여 SOTA 달성함

 

Switchboard 300H WER results

SpecAugment는 overfitting 문제를 underfitting 문제로 변환함
- 아래 그림의 네트워크의 learning curve에서 볼 수 있듯이 훈련 중 네트워크는 training dataset의 loss 및 WER뿐만 아니라 augmented dataset에 대해서도 learning시 적합하지 않은 것처럼 보임

- 이것은 네트워크가 training dataset에 과도하게 맞추는 경향이 있는 일반적인 상황과는 완전히 대조적임

- 이를 통해 Data augmentation은 과적합 문제를 과소 적합 문제로 변환함을 보임

 

 

시간 왜곡이 기여하지만 성능을 향상하는 주요 요인은 아님
- 시간 왜곡, 시간 마스킹 및 주파수 마스킹이 각각 해제된 세 가지 훈련 결과를 제공하였음

- 시간 왜곡의 효과는 작다고 밝힘
- SpecAugment 작업에서 시간이 오래 걸리고 가장 영향력이 적은 Time warping은 GPU&CPU&Memory를 고려하여 가장 첫 번째로 삭제할 법한 문제로 밝힘

Label smoothing의 효과

- 레이블 평활화로 인해 훈련이 불안정해질 수 있음 

- LibriSpeech 학습 시 학습률이 점차 감소할 때, Label smoothing과 augmentation이 함께 적용되면 training이 불안정해짐을 밝힘
- 따라서 LibriSpeech에 대한 학습률의 초기 단계에서만 레이블 스무딩을 사용했다고 함

 

 

 

Conclusion & Take Away

- Time warping은 모델 성능을 많이 향상하지 못하였음
- Label smoothing은 훈련을 불안정하게 만듦
- 데이터 augmentation은 over-fitting 문제를 under-fitting 문제로 변환함 
- 증강이 없는 모델은 훈련 세트에서 거의 완벽하게 수행되는 반면 다른 데이터 세트에서는 유사한 결과가 수행되지 않음을 알 수 있음 ==> Augmentation이 일반화에 기여함을 알 수 있음

 

 

Reference

[1] Park, Daniel S., et al. "SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition}}." Proc. Interspeech 2019 (2019): 2613-2617.

[2] Chan, William, et al. "Listen, attend and spell: A neural network for large vocabulary conversational speech recognition." 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2016.

 

728x90
728x90

해당 논문은 2013년 ICLR에 accept 된 Microsoft의 논문으로서, 상당히 오래된 논문이다. arxiv.org/abs/1301.3605

 

Feature Learning in Deep Neural Networks - Studies on Speech Recognition Tasks

Recent studies have shown that deep neural networks (DNNs) perform significantly better than shallow networks and Gaussian mixture models (GMMs) on large vocabulary speech recognition tasks. In this paper, we argue that the improved accuracy achieved by th

arxiv.org

 

그래서 2021년의 기법, 계산 속도등을 어느정도 배제하고 읽을 필요가 있다.

 

Intro, related work

저자들은 음성 인식의 어려움이 주로 음성 신호의 높은 가변성에 기인한다고 주장함

 

Neural networks는 비선형 특성 변환과 로그-선형 분류기의 결합 모델로 간주될 수 있기 때문에 Neural network의 입력 특성은 작은 섭동(Perturbation: 다른 행성의 힘을 무시하고 타원방정식을 구한 뒤, 섭동에 의해 어떻게 변하는지 계산함. NN으로 따지면 outlier 학습 정도가 되지 않을까?)에 덜 민감함 차별적 내부 표현 (robustness representation)을 추출할 수 있다면, 음성 인식 정확도를 향상 시킬 수 있음

 

그러나 테스트셋이 학습셋과의 분포가 매우 다르면 NN의 성능이 저하 될 수 밖에 없음. 즉, NN은 학습셋과 상당히 다른 샘플이 테스트셋으로 들어오게 되면 좋은 결과를 낼 수 없음 (extrapolate 할 수 없음)

 

그러나 훈련셋의 분포와 테스트 셋의 분포가 비슷하다면, NN에서 학습한 내부 기능은 화자 차이, 대역폭 차이 및 환경 왜곡과 관련하여 상대적으로 안정적인 인식률을 보유할 수 있음

 

즉, 위처럼 해결하고자, 환경 소음에 의해 왜곡 된 narrow 및 wide band의 음성 및 음성 혼합에 대한 일련의 recognition 실험을 사용하여 이러한 문제를 해결하려는 것이 목적

(Wide band: 16kHz, narrow band: 8kHz)

 

Method
혼합 대역폭 ASR 연구 (mixed-bandwidth ASR study)

- 일반적인 음성 인식기는 8kHz로 녹음 된 narrow band 음성 신호 또는 16kHz로 녹음된 wide band 음성 신호로 훈련되지만, 단일 시스템이 narrow/wide band 음성, 즉 혼합 대역폭 ASR을 모두 인식할 수 있다면 유리하다고 가정

- 아래의 그림은 혼합 대역폭 ASR 시스템의 아키텍처이며, 이를 기반으로 동적 기능과 함께 29차원의 멜 스케일 로그 필터 뱅크 출력을 진행

NN을 사용한 mixed-bandwidth 음성 인식 그림

- 29 차원 필터 뱅크는 두 부분으로 구성
- 처음 22 개 필터는 0-4kHz에 걸쳐 있고 마지막 7 개 필터는 4-8kHz에 걸쳐 있으며, 더 높은 필터 뱅크에있는 첫 번째 필터의 중심 주파수는 4kHz임 

- 음성이 광대역이면 29 개의 모든 필터에 관찰 된 값이 있지만, 음성이 협대역이면 고주파 정보가 캡처되지 않았으므로 최종 7 개의 필터가 0으로 설정됨 

- 혼합 대역폭 훈련은 누락 된 대역을 명시 적으로 재구성 할 필요없이 여러 샘플 속도를 동시에 처리함

- 저자는 16kHz와 8kHz로 샘플링 된 데이터로 음향 모델을 훈련하며,  8kHz 입력에 대한 기능을 계산할 때 high-frequency의 log mel 대역은 0으로 설정

 

 

 

Experimental setup and results

데이터셋: mobile voice search (VS) corpus

- VS1: 72 시간의 16kHz training set

- VS2: 197 시간의 16kHz training set

- VS-T:  9562개의 발화, 총 26757개의 단어

- 8kHz인 narrow band의 훈련 및 테스트 데이터셋은 16kHz인 wide band를 다운 샘플링하여 얻음

 

협대역 훈련 데이터가 있거나 없는 광대역(16k) 및 협대역(8k) 테스트 세트의 WER(%).

결과

- 위의 표는 NN이 8kHZ 음성 유무에 관계없이 훈련되었을 때 16kHz 및 8kHz 테스트 세트에 대한 WER을 보임

- 이 표에서 모든 훈련 데이터가 16kHz이면 NN이 16kHz VS-T (27.5 % WER)에서 잘 수행되지만, 8kHz VS-T (53.5 % WER)에서는 매우 열악함

- 그러나 훈련 셋 중 VS-2를 8kHz로 변환하고 mixed-bandwidth 데이터 (두 번째 행)를 사용하여 동일한 NN을 훈련하면 NN은 16kHz 및 8kHz 음성 모두에서 잘 수행됨을 보임

 

Conclusion

- 잡음과 유사하게 mixed-bandwidth 훈련은 여러 샘플링 속도로 일반화하는데 도움이 됨

- 또한, DNN이 음성 변동성의 두 가지 중요한 소스인 화자 변동성과 환경 왜곡에 비교적 invariant한 표현을 학습할 수 있음을 보였음

728x90
728x90

Listen, Attend and Spell : A Neural Network for Large Vocabulary Conversational Speech Recognition 리뷰


이번에 읽은 논문은 Listen, Attend and Spell: A Neural Network for Large Vocabulary Conversational Speech Recognition 이다.

Carnegie Mellon 대학의 William Chan과 Google Brain팀에서 출간한 논문이며, 해당 논문은 https://arxiv.org/pdf/1508.01211.pdf 에서 볼 수 있다.

ICASSP2016에 제출 된 논문이다.



1. Abstract

 이 논문은 LAS(Listen, Attend and Spell) model을 소개하고 있다. LAS는 기존의 DNN-HMM모델과는 다른 스피치 발화를 문자로 변경해주는 뉴럴넷이다. 기존의 DNN-HMM모델과 다르다고 주장하는 이유는, 모든 것을 End-to-End로 학습하기 때문이라고 한다. 시스템은 크게 2개의 구성요소로 되어있는데 1개는 Encoder Part의 Listener, 1개는 Decoder Part의 Speller이다. Listener는 피라미드 모양의 RNN을 사용하고 있으며, 이 때 input 데이터로는 filter bank를 통과한 Spectrum들을 사용하고 있다. Speller는 Attention-Based RNN이며 Listener의 output을 input으로 받아 글자로 내뱉어주는 역할을 한다. 

 논문은 2015년 8월에 쓰여졌고, 이때 당시 state-of-the-art 였던 CLDNN-HMM 모델의 WER은 8.0% 였지만, 이 논문에서 제안하는 WER은 14.1%였다. 이 때, 14.1%는 사전이나 언어 모델 없이 학습하였을 때의 결과이고, 언어 모델을 사용할 때의 WER은 10.3%라고 한다.



2. Introduction

 (논문이 쓰여진 2015년 8월 즈음) State-of-the-art 음성인식 모델은 음향 모델(Acoustic Model), 언어 모델(Language Model), 명사 모델(Pronunciation), 언어 정규화(Text normalization) 등 다양한 구성 요소로 이루어진 복잡한 시스템이었다. 예를 들어 n-gram 언어 모델과 Hidden Markov Models (HMMs)은 문장 내의 단어/기호간 strong한 Markovian independence 추정을 만든다. CTC (Connectionist Temporal Classification)와 DNN-HMM 시스템은 뉴럴 네트워크가 독립된 예측을 다른 시간에서 하게끔 하고, HMM이나 언어 모델은 시간 경과에 따라 이러한 예측 간의 종속성을 도입하게 해준다.

 이렇듯, 2개 이상의 구성 요소를 합쳐서 음성 인식 시스템을 만들었지만, 이 논문에서 제안하는 바로는 End-to-End로 음성을 문자로 변경하는 시도를 보인다. 즉, input으로 음성을 받아서 언어 모델이나 명사 모델, Hmm 등을 쓰지 않고 output으로 character로 내보내는 것을 말한다. 이 방법은 Seq2Seq 학습 framework에 에 Attention 기법을 도입하는 것을 참고로 한다. Encoder로 Listener라는 이름을 갖는 RNN을 사용하고, decoder로 Speller라는 이름을 갖는 RNN을 사용한다.



3. Model and Methods


x = (x1, x2, ...., xt) 를 필터 뱅크를 통과한 스펙트럼 특징들인 입력 시퀀스로 두고, y = (<sos>, y1, ...., ys, <eos>)문자의 출력 순서라고 가정하자. 이 때, yi는 {a, ...., z, 0, ...., 9, <space>, <comma>, <period>, <apostrophe>, <unk>) 를 포함하는데, sos는 sentence의 시작 토큰이고, eos는 sentence의 종료 토큰이다.(start-of-sentence: sos, end-of-sentence: eos) 또한 <unk>는 악센트 문자와 같이 unknown token으로 가정하고 있으며, <space>, <comma>, <apostrophe> 같은 경우는 스페이스, 콤마, ' 와 같은 문자이다. 즉 알파벳 a~z, 숫자 0~9, 그리고 위에서 언급한 것들이 모두 y에 포함된다는 것이다.


LAS 모델은 각각의 출력 문자 yi를 이전 문자 y<i에 대한 조건부 분포로 모델링하고, 확률에 대한 Chain Rule을 사용하여 입력 신호 x를 y로 모델링 한다. 이때의 공식은 다음과 같다.



즉 주어진 음성 x에 대하여 출력문자 y가 될 확률은, 전체 문자 y < i(위에서의 a~z, 0~9, 등)에 대한 x의 조건부 분포(Conditional Distribution)로 모델링한다고 볼 수 있다. 위의 식은 음향 신호가 입력으로 들어오면, 문자 시퀀스의 조건부 확률을 직접 예측할 수 있기 때문에 모델을 차별화 된 End-to-End로 만들어 준다.


아래의 그림은 Paper에 개재된 그림으로 LAS 모델의 구조인 Listener(Encoder)와 Speller(Decoder)를 설명해주고 있다.


screen shot 2017-12-07 at 1 47 58 pm


1) 먼저 Listener는 Encoder로서 음성 신호를 high level feature들로 변환하는 역할을 LAS내에서 맡고 있다. Listener는 BLSTM을 Pyramidal 형식으로 3개를 붙여서 사용하고 있다. 논문에서는 이를 pBLSTM으로 부르고 있으며, pyramidal 하게 사용하는 이유는 pBLSTM 1개당 연산속도를 2배로 줄여주기 때문이다. 


h를 Listen Encoder라 하고, i를 i-th time step이라하고, j를 from the j-th layer라 하였을 때,




3개의 BLSTM의 top of the bottom에 쌓은 pBLSTM은 time resolution을 2의 3승만큼, 즉 8 배만큼 줄여준다고 한다. 



2) Speller는 Decoder로서, attention-based LSTM 변환기 역할을 맡고 있다. 즉, 모든 출력 단계에서 변환기는 이전에 본 모든 문자를 조건으로 한 다음 문자에 대한 확률 분포를 생성한다. yi에 대한 분포는 디코더 상태 si 및 컨텍스트 ci의 함수이다. 디코더 상태 si는 이전 상태 si-1, 이전에 출력 된 문자 yi-1 및 컨텍스트 ci-1의 함수이다. 컨텍스트 벡터 ci는 attention-mechanism에 의해 생성된다.



여기서 CharacterDistribution은 charcter 위로 softmax 출력이있는 MLP이고 RNN은 2계층 LSTM이다.


매 time step마다, attention mechanism인 AttentionContext ci는 컨텍스트 벡터를 생성하고, 다음 문자를 생성하는데 필요한 음향 신호의 정보를 캡슐화한다. attention 모델은 내용 기반이며, 디코더 상태 si의 내용은 attention 벡터 ai를 생성하기 위해 h의 time step u를 나타내는 hu의 내용과 일치한다. 벡터 hu는 ai를 사용하여 linear하게 블렌딩되어 AttentionContext를 생성한다.


3) 이 모델의 학습은, 입력 음성에 대해 알맞는 sequence의 log probability를 maximize한다.  공식은 아래와 같다.


4) 디코딩 관련하여, test 시에 가장 근접한 character sequence를 주어진 음향에 대해 찾는다. 공식은 아래와 같다.



4. Experiments and results

 저자는 3백만개의 Google Voice Search utterances(2000시간의 데이터셋)를 이용했다. 거의 10시간의 발화들이 랜덤으로 선택되어 validation set으로 사용되었다. room simulator를 이용하여 Data Augmentation를 진행하였고, 이 때 기존 녹음된 것과 같은 reverberation과 noise를 추가했다.

 음성 데이터 input은 Mel-Spectrogram을 사용하여 number of mel을 40으로 주고 10ms마다 features들을 뽑았다 (40 dimensional log-mel filter bank). 

 Text Normalization은 모든 캐릭터들을 lower case English alphanumerics로 일반화 해주었다. 알파벳, 숫자, space, comma, period, apostrophe는 그대로 유지해주고 나머지들을 <unk> token으로 치환해주었다. 또한 맨 앞쪽에 언급한 것처럼, 모든 발화의 앞쪽에는 <sos>를, 끝쪽에는 <eos>를 패딩해주었다. 


screen shot 2017-12-07 at 1 49 20 pm


논문이 쓰여진 당시의 State-of-the-art의 CLDNN-HMM의 Clean WER는 8.0이고, Noisy WER는 8.9였다. 논문 실험 결과인 LAS는 그보다 미치진 못하였다.

저자는 Listen Function에서(Encoder part) 3개의 pBLSTM을 쓰기 때문에 시간을 2^3= 8times 만큼 줄여준다고 주장하고 있다. weights들은 uniform distribution (-0.1, 0.1)로 초기화 하였다. Gradient는 Asynchronous Stochastic Gradient Descent (ASGD)를 train 하는데에 사용했다. learning rate는 0.2로 시작하여 20 에폭마다 0.98씩 decay를 하였다. 모델 학습하는 데에 거의 2주간의 시간이 걸렸다고 한다. 마지막으로 모델은 N-best list decoding으로 decode하였다. 


아래의 그림은 paper에 실린 그림으로, 문자와 입력 음성간의 할당 (Alignment)를 보여준다.

screen shot 2017-12-07 at 1 49 34 pm


"how much would a woodchuck chuck" 라는 음성 input에 따른 character alignment를 보여주고 있다. Content based attention mechanism은 첫 번째 문자에 대한 오디오 시퀀스의 시작 위치를 올바르게 식별할 수 있었다고 한다. 생성 된 alignment(그림)은 일반적으로 위치 기반 prior가 없이도 단조로운걸 주장하고 있다. 

 Content based Attention Mechanism은 문자와 오디오 신호 사이의 명확한 정렬을 만들고 있다. 모든 문자의 output 시간 단계에서 audio 시퀀스에 attention distribution을 기록하여 attention mechanism을 visualization 할 수 있었다고 한다.


 이 논문에 쓰여진 2015년 8월 기준으로, 저자는 여러가지 end-to-end trained speech models이 폭발적으로 증가했다고 한다. 그러나 이 모델(

- A. Graves and N. Jaitly, “Towards End-to-End Speech Recognition with Recurrent Neural Networks,” in International Conference on Machine Learning, 2014. 

- Y. Miao, M. Gowayyed, and F. Metze, “EESEN: End-to-End Speech Recognition using Deep RNN Models and WFSTbased Decoding,” in Http://arxiv.org/abs/1507.08240, 2015.

- D. Bahdanau, J. Chorowski, D. Serdyuk, P. Brakel, and Y. Bengio, “End-to-end attention-based large vocabulary speech recognition,” in Http://arxiv.org/abs/1508.04395, 2015. 

- A. Hannun, C. Case, J. Casper, B. Catanzaro, G. Diamos, E. Elsen, R. Prenger, S. Satheesh, S. Sengupta, A. Coates, and A. Ng, “Deep Speech: Scaling up end-to-end speech recognition,” in Http://arxiv.org/abs/1412.5567, 2014. 

- A. Maas, Z. Xie, D. Jurafsky, and A. Ng, “Lexicon-free conversational speech recognition with neural networks,” in North American Chapter of the Association for Computational Linguistics, 2015. 

)들은 고유의 단점을 갖고 있고, 그 단점을 해결하기 위해 이 논문을 제안했다고 한다.


 논문에서 주장하는 이 단점이라 함은, 좋은 정확도를 얻기 위해서는 use of a strong language model during beam search decoding 이라고 표현되어 있따. 즉, 언어 모델 사용은 CTC 목적에 독립적으로 고정되어 훈련되기 때문이다.

 CTC는 또한 FST를 사용하여 음소 표적 및 n-gram 언어 모델을 사용하는 종단 간 교육에 적용되었지만, FST에서는 발음 사전과 언어 모델을 사용하기 때문에 LAS와는 다르다. 

- 여기에서 FST는 Finite-state Transducer 로서, 한국말로는 유한 상태 변환기이다.

- FST 관련 자료는 아래의 사이트에서 잘 나와있으니 참고해보면 될 듯.

1) https://m.blog.naver.com/PostView.nhn?blogId=taehun3718&logNo=140162190370&proxyReferer=https%3A%2F%2Fwww.google.com%2F

2) https://shleekr.github.io/2016/06/30/introducing-rouzeta/


 즉, CTC는 end-to-end 음성 인식에서 엄청난 가능성을 보여 주었지만, 1개의 frame의 output은 다른 frame의 출력에 영향을 미치지 않기 때문에 프레임 간 독립성의 가정에 의해 제한된다. 그리하여 CTC는 이 문제를 개선하기 위한 유일한 방법이 강력한 언어 모델을 사용 하는데, LAS의 저자는 이 점을 뽑아서 단점이라고 주장하고 있다.


 그렇다면 LAS는? 

 LAS는 시퀀스-시퀀스: Seq2Seq2 아키텍처를 기반으로하며 위의 단점을 겪지 않는다고 한다. LAS는 CTC의 단점을 해결하기 위해 첫 번째 문자에서 시작하여(sos) Chain Rule Decomposition을 사용하여 input sequence 가 주어진 경우 output sequence를 모델링 한다고 주장하고 있다. 또한 이 end-to-end LAS 모델은 음성 인식 시스템의 모든 측면 - 음향, 발음, 언어 모델 모두 해당 인코딩 - 을 포함한다고 주장한다. 따라서 저자는 LAS가 end-to-end 훈련 시스템이 아니라 end-to-end 모델이 될 수 있다고 주장한다. 굉장히 powerful 하다고 마지막에 주장하고 있다.


5. Conclusion

 저자는 Listen, Attend and Spell = LAS를 제안하고 있고, 음향 신호를 직접적으로 문자로 표현해줄 수 있는 모델인 LAS를 제안하고 있다. 이 모델에는 전통적인 음성인식 기법인 HMM(Hidden Markov Model), 언어 모델, 음향, 사전적인 구성 요소가 없이도 음성 인식이 가능한 것을 제안하고 있다. 이 LAS는 end-to-end trained system일 뿐만 아니라, 자체적으로 end-to-end 모델이라고 주장한다. LAS는 Seq2Seq framework를 사용하여 출력 sequence에 대한 조건부 독립 가정을 설정하지 않고 음성 인식이 가능하며, 이것은 CTC, DNN-HMM 및 end-to-end 훈련을 받을 수 있는 다른 모델과는 다르다고 주장한다.(조건 독립)



6. 간단 요약 및 느낀점

- Propose End-to-End Encoder-Decoder Model

- This model can End-to-End model (Not using HMMs, language model, etc)

- Transcribing Speech Utterances to Characters Task

- 14.1% WER w/o dictionary or language model, and 10.3% with language model. The Compare model is State-of-the-art CLDNN-HMM model achieves 8.0%


- 이 논문을 찾아보게 된 건 음성 인식 및 dialect 관련하여 자료를 찾다가 오래되었지만 LAS라는 모델을 기반으로 논문이 발행된 것이 있어서 찾게 되었다. 기존의 음성인식은 CTC에 언어모델을 접합하거나 GMM, HMM을 이용하여 하였지만, 이 논문 같은 경우 언어모델을 사용하지 않고도 어느정도의 WER를 뽑은 것을 확인할 수 있었다. 

- 다음에는 Dialect 인식 및 Attention Mechanism을 이용한 접근 법에 대해 찾아 볼 계획이다.



- 대학원생의 주관적인 생각이 들어있으므로 관련 논문에 대해 잘못된 부분이나 comment는 언제나 환영합니다.

728x90
728x90

바이두 Deep Voice Review

이 논문의 일부 아이디어는 매우 직관적이다.  Text to Speech Systems에 딥 러닝을 적용하는 Baidu의 Deep Voice를 다룬다.

Baidu’s Deep Voice

Arxiv Link: https://arxiv.org/abs/1702.07825

기관 : 바이두 리서치

최근 Andrew Ng의 Baidu AI 팀은 텍스트를 음성으로 변환하기위한 새로운 딥 러닝 기반 시스템에 관한 인상적인 논문을 발표했다. 


1. 분명히 Baidu의 결과는 MacOS의 프로덕션 TTS 시스템과 비교할 때 자연스럽게 들린다. 위의 내용은 한 가지 큰 경고로 볼 수있는데,  Baidu의 results 샘플들은 그 문장이 훨씬 더 인간이 말하는 것과 가까운 품질을 제공하고, 이 샘플들을 누군가는 또 Groundtruth의 training sample로 사용할 수 있다는 것이다. 또한 Baidu 샘플은 빈도 및 기간 데이터에도 액세스 할 수 있다.


그러나 출력의 품질을 넘어서 이 논문이 새로운 지평을 열었던 몇 가지 주요 방법은 바로 Deep Voice는 모든 TTS Pipeline에 Deep learning을 사용하였다는 것이다.

이전의 TTS 시스템은 파이프 라인의 여러 구성 요소에 딥 러닝을 사용했지만이 논문 이전에는 모든 주요 구성 요소를 신경망으로 대체하기 위한 연구는 없었다.


2. 딥 러닝을 사용하여 저자는 기존 파이프 라인에 비해 많은 기능 처리 및 엔지니어링을 피할 수 있었다. (이 말은 기존의 머신러닝의 HMM-State 등 복잡한 계산을 피하였다는 뜻으로 해석 됨) 이는 Deep Voice를 훨씬 더 일반적으로 만들어 다른 문제 영역에 적용 할 수 있다. 실제로 Deep Paper는 아래 논문의 저자가 설명한 것처럼 기존 시스템에서 (머신러닝, HMM-STATE, Kaldi 등) 몇 주 정도 걸리는 시간을 이 논문에서는 몇 시간 만에 다시 조정할 수 있었다고 한다.


기존의 TTS 시스템에서 [재교육]은 며칠에서 몇 주까지의 튜닝이 필요하지만 Deep Voice를 사용하면 몇 시간만에 모델 훈련을 끝내어 서비스가 가능하다.


3. 최신 기술에 비해 매우 빠르다.

이 논문의 저자는 인간이 말하는 것과 같은 오디오 합성에 관한 DeepMind의 주요 논문 인 WaveNet보다 400 배 빠른 속도를 달성한다고 주장하였다. 특히 그들은 다음과 밝혔는데,


프로덕션 준비 시스템을 만드는 데 중점을두기 때문에 evaluation을 위해 모델을 실시간으로 실행해야 했었다. Deep Voice는 1 초 단위로 오디오를 합성 할 수 있으며 합성 속도와 오디오 품질간에 조정 가능한 균형을 제공할 수 있다. 반대로 WaveNet의 이전 결과는 1 초의 오디오를 합성하는 데 몇 분의 런타임이 필요하다. (그러므로 우리 것이 훨씬 빠르다.)


먼저 Deep Voice가 어떻게 문장의 예를 들어 높은 수준에서 음성으로 변환하는지 살펴 보겠다. 이것을 추론 파이프 라인이라고 한다.


추론 파이프 라인 — 새로운 텍스트를 음성으로 변환

이제 Deep Voice에서 간단한 문장을 가져 와서들을 수있는 오디오로 변환하는 방법을 개략적으로 살펴 보겠다. 파이프 라인은 다음과 같이 아키텍처를 갖는다.

The inference pipeline of Deep Voice. Source: https://arxiv.org/pdf/1702.07825.pdf


이제이 파이프 라인을 단계별로 살펴보고이 조각들이 무엇인지, 어떻게 결합되는지 이해해본다. 특히, 다음 문구를 추적하여 Deep Voice가 어떻게 처리되는지 확인한다. 

It was early spring.

1 단계 : 그래 핀 (텍스트)을 음소로 변환

영어와 같은 언어는 음성이 아닌 점에서 독특하다. 예를 들어, 아래를 확인해보자.

1. though (like o in go)

2. through (like oo in too)

3. cough (like off in offer)

4. rough (like uff in suffer)


철자가 같은데도 발음이 어떻게 다른지 주목해야 된다. 바이두의 TTS 시스템이 철자를 주 입력으로 사용했다면,“though”와 “rough”가 같은 접미사를 갖지만 왜 그렇게 다르게 발음해야 하는지를 조정하려는 문제가 불가피하게 발생한다. 따라서 발음에 대한 자세한 정보를 나타내는 약간 다른 단어 표현을 사용해야한다. 

이것이 바로 음소 (phoneme)이다. 음소는 우리가 만드는 소리의 다른 단위이다. 그것들을 함께 사용하면 거의 모든 단어에 대한 발음을 재현 할 수 있다. 다음은 CMU의 음소 사전에서 수정 된 음소로 분리 된 단어의 몇 가지 예다.

  • White Room — [W, AY1, T, ., R, UW1, M, .]
  • Crossroads — [K, R, AO1, S, R, OW2, D, Z, .]


음소 옆에있는 1, 2 등의 숫자는 발음의 스트레스가 있어야하는 위치를 나타내며, 또한 마침표는 발음에서 빈 공간을 나타낸다. (Slience, End 부분)

따라서 Deep Voice의 첫 단계는 이와 같은 간단한 음소 사전을 사용하여 모든 문장을 음소 표현으로 간단히 변환하는 것이다. 즉 이러한 작업을, Grapheme to Phoneme (G2P) 라고 부른다.


예를 들어, 첫 번째 단계에서 Deep Voice에는 다음과 같은 입력 및 출력이 있다.

  • Input - “It was early spring”
  • Output - [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .]


Step 2, Part 1: Duration Prediction

음소가 생겼으니, 말하면서이 음소를 얼마나 오래 참 아야하는지 추정해야한다. 음소가 문맥에 따라 더 길고 짧게 유지되어야하기 때문에 이것은 다시 흥미로운 문제이다. 음소“AH N”을 둘러싼 다음 예제를 보자.

  • Unforgettable
  • Fun


명백히“AH N”은 첫 번째 경우보다 두 번째 경우보다 훨씬 길어야하며,이를 위해 시스템을 훈련시킬 수 있다. 특히, 바이두는 각각의 음소를 취하여 얼마나 오래 (초) 보유 할 것인지 예측한다. 이 단계에서 예제 문장은 다음과 같다.


  • Input - [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .]
  • Output - [IH1 (0.1s), T (0.05s), . (0.01s), … ]

Step 2, Part 2: Fundamental Frequency Prediction

The fundamental frequency (the blue line) is the lowest frequency the vocal cords produce during the voiced phoneme (think of it as the shape of the waveform). We’ll aim to predict this for each phoneme.

또한 각 음소의 톤과 억양을 예측하여 가능한 한 사람이 들리도록 만들려고 한다. 여러 가지면에서 이것은 동일한 사운드가 톤과 악센트에 따라 완전히 다른 의미를 가질 수 있는 만다린(중국)과 같은 언어에서 특히 중요하다. 각 음소의 기본 주파수를 예측할 수 있다면, 이 작업을 수행하는 데 도움이 된다. 주파수는 시스템이 음소가 발음 되어야 하는 대략적인 피치 또는 톤을 정확하게 알려주는 기능을 한다.

또한 일부 음소는 전혀 소리가 나지 않는데, 이것은 성대의 진동없이 발음 된다는 것을 의미한다. 예를 들어, 소리 "ssss"및 "zzzz"를 말하고 전자가 성대에서 진동을 일으키지 않는 경우 (음성 없음) 가 존재한다.

기본 주파수 예측은 이것을 고려하여 음소가 언제 울려야 하는지 그리고 그렇지 않아야 하는지를 예측한다.


이 단계에서 예제 문장은 다음과 같다.

  • Input - [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .]
  • Output - [IH1 (140hz), T (142hz), . (Not voiced), …]

Step 3: Audio Synthesis

In the final step, we’ll combine phonemes, durations, and the fundamental frequencies (fO profile) to create real audio.

음성을 만드는 마지막 단계는 음소, 지속 시간 및 주파수를 결합하여 사운드를 출력하는 것이다. Deep Voice는 수정 된 버전의 DeepMind WaveNet을 사용하여 이 단계를 수행하였다. WaveNet의 기본 아키텍처를 이해하려면 해당 논문을 찾아보자. Autoregressive한 vocoder의 역할을 맡고 있다.

The original WaveNet from DeepMind can have exponentially many different inputs contribute to a single input. Notice the exponential tree structure outlined above. Source: https://deepmind.com/blog/wavenet-generative-model-raw-audio/

높은 수준에서 WaveNet은 raw audio를 생성하여 다양한 악센트, 감정, 호흡 및 기타 인간의 말의 기본 부분을 포함한 모든 유형의 사운드를 생성 할 수 있다. 또한 WaveNet은 이 한 단계 더 나아가 음악을 생성 할 수도 있다.


이 논문에서, Baidu 팀은 특히 고주파 입력을 위해 구현을 최적화하여 WaveNet을 수정하였다. 따라서 WaveNet에서 새로운 오디오를 생성하는데 몇 분이 걸리는 경우 Baidu의 수정 된 WaveNet은 Deep Voice의 저자가 설명하는 것처럼 1 초도 채 걸리지 않을 수 있다고 주장한다.

Deep Voice는 1 초 단위로 오디오를 합성 할 수 있으며 합성 속도와 오디오 품질간에 조정 가능한 균형을 제공한다. (하지만 블랙박스겠지...) 반대로 WaveNet의 이전 결과는 1 초의 오디오를 합성하는 데 몇 분의 시간이 소요될 수 밖에 없다.


Summary

이 3 단계를 통해 Deep Voice가 간단한 텍스트를 가져 와서 오디오 표현을 발견하는 방법을 살펴보았다. 단계를 한 번 더 요약하면 다음과 같다.


  1. 텍스트를 음소로 변환 (G2P 이용) “It was early spring”
  • [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .]

2. 각 음소의 지속 시간과 빈도 예측

  • [IH1, T, ., W, AA1, Z, ., ER1, L, IY0, ., S, P, R, IH1, NG, .] -> [IH1 (140hz, 0.5s), T (142hz, 0.1s), . (Not voiced, 0.2s), W (140hz, 0.3s),…]

3. 음소, 지속 시간 및 주파수를 결합하여 텍스트를 나타내는 음파 출력

  • [IH1 (140hz, 0.5s), T (142hz, 0.1s), . (Not voiced, 0.2s), W (140hz, 0.3s),…] -> Audio



728x90

+ Recent posts