작성자: 16기 천원준
https://github.com/facebookresearch/fairseq/tree/main/examples/wav2vec/unsupervised
GitHub - facebookresearch/fairseq: Facebook AI Research Sequence-to-Sequence Toolkit written in Python.
Facebook AI Research Sequence-to-Sequence Toolkit written in Python. - GitHub - facebookresearch/fairseq: Facebook AI Research Sequence-to-Sequence Toolkit written in Python.
github.com
Wav2vec Unsupervised는 Facebook AI Research에서 발표한 Wav2vec 2.0의 후속 논문으로 self supervised learning을 사용했던 전작과 다르게 unsupervised learning을 사용한 모델이다.
Introduction
음성 인식은 음성 데이터를 텍스트로 변환해 주는 것을 말합니다.
하지만 기존에 존재 하는 음성 인식 모델은 transcribed speech data가 필요하지만 대다수의 언어에서는 찾기 어렵습니다.
이러한 문제를 해결하기 위해서 기계 번역에서 좋은 성능을 보였던 비지도 학습을 사용하여 모델을 구축하였습니다.
Wav2vec-U의 두 가지 핵심 컨셉은 다음과 같습니다.
- Speech audio를 phonemic units으로 segmentation 진행
- Audio representation과 phoneme을 adversarial learning을 통해 mapping
기본적인 모델은 다음과 같습니다
Wav2vec-u model
Wav2vec-U는 Wav2vec 2.0 모델의 self supervised representation을 사용하여 트레이닝을 진행합니다.
Wav2vec 2.0을 사용하여 스피치 오디오를 임베딩 하고 오디오를 k means clustering/mean pooling/PCA 를 통해서 세그멘테이션을 진행합니다.
이러한 과정을 통해 얻어진 오디오 레프리젠테이션을 adversarial training을 통해 오디오 세그먼트와 포님의 맵핑을 진행합니다.
Wav2vec-U 의 특징은 침묵에 대한 세그멘테이션도 진행하였고 하나의 CNN 레이어와 약 9만 개 정도의 파라 미터를 사용하기 때문에 가볍다는 장점이 있다.
Speech and Text Representations
Preprocessing audio representation
- rVAD를 사용하여 침묵 제거
- Wav2vec 2.0을 사용한 speech representation 추출
- Transformer network를 통해 나온 context representation 추출
- Context network는 24개의 Transformer block으로 구성되고 평균적인 phoneme의 길이보다 짧은 25ms의 오디오를 인풋으로 받음
- 가장 결과가 좋은 15 레이어의 representation 사용
Segmenting the audio signal
- Speech representations을 k-means clustering 하여 segmentation을 진행
- 각 representation에 대해 cluster ID가 변하면 segment boundaries를 부여
- Speech representations에 512 dimensional PCA를 진행한 후 mean pool
- Noisy 한 segment boundaries에 robustness를 증가
Preprocessing Text Data
- Unlabeled text data에 TIMIT에서 제공하는 phonetic transcription과 G2P phonemizer를 사용하여 phonemization을 진행
- 또한 오디오 전처리에서 rVAD를 사용하여 침묵을 지웠지만 모 든 침묵이 지워진 것이 아니기 때문에 phonemized unlabeled text data에 silence token을 추가
Unsupervised Learning
- Audio representation과 unlabeled phonemized text data를 mapping 하기 위해 GAN 아키텍처를 사용
- Generator는 segment representation을 인풋으로 받음
- Generator는 phoneme set에서 가장 확률이 높은 phoneme을 아웃풋으로 내고 만약 연속된 세그먼트가 같은 phoneme을 아웃풋으로 제출한다면 그중 하나만 샘플링
- Generator는 약 9만개의 파라미터를 가진 단일 레이어 CNN구조이고 w2v 2.0 피쳐들을 얼려서 그대로 사용
- Discriminator는 3 layer CNN이며 인풋으로 phonemized 된 원핫벡터나 Generator의 아웃풋을 받음
- 인풋이 실제 데이터분포에서 나왔을 확률을 리턴합니다.
Objective
GAN objective
- Wav2vec-U 에서는 오리지널 GAN objective를 Gradient penalty, segment smoothness penalty와 phoneme diversity penalty와 함께 사용
- 첫 번째 항에선 실제 transcription에 높은 확률값을 부여하도록 학습시키고 두 번째 항에선 generator에서 생성된 아웃풋에 낮은 확률을 부여하도록 학습
Gradient penalty
Gradient penalty는 GAN모델의 Loss function
Smoothness penalty
Segment smoothness penalty는 speech audio 데이터의 특성상 더 잘게 세그먼트 되어 있기 때문에 제너레이터가 이웃한 세그먼트에서 비슷한 아웃풋을 내도록 유도하는 항
Phoneme diversity
Phoneme diversity loss는 Generator가 최대한 다양한 Phoneme이 사용되도록 유도
Unsupervised Cross-validation Metric
모델이 잘 작동하는지 확인하기 위해 3가지의 metric을 비교
- Fluency (LM Negative log-likelihood)
- language model score를 transcription과 비교
- Phoneme variety
- 모델에서 사용한 phoneme의 퍼센트를 구하여 확인
- Acoustic similarity
- Language model로 디코딩된 transcript의 PER값으로 확인
얼리 스탑을 위한 체크 포인트 설렉션에선 fluency와 phone variety를 사용
랭귀지 모델 디코딩 파라미터 설정에는 fluency와 acoustic similarity를 사용
이러한 평가 기준으로 supervised model과 비 교하였을때 PER 결과의 차이가 크지 않을 것을 확인할 수 있음
PER 비교
Results
Wav2vev-U와 다른 모델들과의 데이터 비교
- 셀프 트레이닝을 추가한 모델같은 경우 clean은 3.4, 3.8/ other는 6.0, 6.5로 WER이 나옴
- 몇몇 supervised model보다는 좋은 결과를 보여주었고 다른 비 교 모델같은 경우 960시간이라는 트레이닝 시간과 프리셋이 필요하다는 점에서 w2v-u모델이 label data가 없고 적은 시간으로 좋은 결과를 냈다는 것을 알 수 있음
다른 unsupervised 모델과의 비교
- Matched up setting은 텍스트 데이터와 오디오 데이터가 같은 경우, unmatched setup은 텍스 트 데이터와 오디오 데이터가 다른 경우
- 두 케이스에서 모두 기존에 존재하던 unsupervised model과 비교했을땐 압도적으로 좋은 결과를 보여줌
de: German, nl: Dutch, fr: French, es: Spanish, it: Italian, pt: Portuguese
- 다양한 유럽 언어들에도 wav2vec-u모델을 적용
- 이때 다른 supervised model에 비해서는 아쉬운 결과를 보여줬지만 필요한 리소스가 적다는 점을 보았을 때 그래도 쓸만한 결과를 보여줌
Tatar, Kyrgyz, Swahili에 적용
- 절대적인 자료가 부족한 언어들에서도 스와힐리, 키르기 ,타타르 언어에서도 쓸만한 결과를 보임
Conclusion
장점:
- Self supervised speech representation이 text와 잘 맞음
- 더 많은 리소스를 사용한 Supervised learning과 흡사한 결과를 보임
- 다양한 언어에 적용할 수 있음
단점:
- Text Phonemization을 위해선 phonemizer가 필요함
- 아직까지 Supervised learning에 비해선 아쉬운 성능
댓글 영역