본 포스팅은 아래의 한국어 음성 인식 관련 Langcon 2021 발표 영상 을 학습 목적으로 정리한 글입니다.
음성 인식 : STT
기능대화 음성인식: 사용자가 어느 질문/발화를 할 지 예측하여 이 범위에서 시나리오, 모델을 만듦.
따라서 일반 음성인식에서의 기술적 난이도는 시나리오를 예측할 수 없고, 노이즈에 대한 무한한 경우의 수.
딥러닝 붐 이전의 음성 인식 방법은 다음과 같다.
딥러닝 이후의 음성인식 방법. = End-to-End
파이프라인은 다음과 같다.
실제 Decoding 과정을 보자.
CTG 알고리즘을 사용한 에로는 DeepSpeech2가 있고, Decoder 가 따로 필요없다는 장점.
Attention 이 하는 역할은 시크널과 텍스트의 alignment 를 잡아주는 것이다.
CTC 방식과 LAS 방식을 합친 방식이다. "Joint CTC-Attention" 논문에서 소개되었다. 아래 그림을 보면 알겠지만 인코더에 CTC, CE loss 을 모두 사용하여 오류를 줄였으며
Character Error Rate (CER) 이라는 것을 사용한다.
전체적인 과정은 음성 신호가 들어오면 => Feature 로 변환하여 모델로 전송 => 모델은 피처를 high level 로 묶고 Decoding => Transcript 하는 순서로 이루어진다.
데이터
Feature Extraction
모델
한국어 음성 인식 개발을 직접 진행하였다!
이때 학습하신 자료를 공유해주셨다. 자료
피처: Spectogram, Mel-Spectogram, MFCC, Filter-Bank
모델: Las, Transformer, DeepSpeech2, Jasper, Conformer
전처리/학습: Characte / Subword / Grapheme 에 대해 지원.
$ python3 ./openspeech_cli/hydra_train.py \
dataset=librispeech \
dataset.dataset_download=True \
dataset.dataset_path=$DATASET_PATH \
dataset.manifest_file_path=$MANIFEST_FILE_PATH \
tokenizer=libri_subword \
model=conformer_lstm \
audio=fbank \
lr_scheduler=warmup_reduce_lr_on_plateau \
trainer=gpu \
criterion=cross_entropy
2가지만 설정해주면 모델이 포함하고 있는 하위 configuration 은 자동으로 로드. (따로 지정해주면 그 configuration 으로 로드)
다른 Dataset 에 OpenSpeech 를 이용하여 학습하려면 어떻게?