>>> 1. decode.sh 에서 #### Decoding #### 부분에
--do-endpointing, --frames-per-chunk, --extra-left-context-initial, --online, --config,
--verbose, --min-active, --max-active, --beam, --lattice-beam, --acoustic-scale,
--word-symbol-table 과 같이 여러 옵션들을 주고 있는데, 해당 옵션들이 각각 어떤 의미인지 궁금합니다..!
그리고 decode.sh를 실행 시에 stt 결과값만 받아보고 싶은데, 표준출력, 표준에러 리다이렉션을 해도 계속 log가 같이 저장이 됩니다. 혹시 stt 결과값만 보여주는 옵션이 존재할까요?
각 옵션들은 kaldi 소스 코드를 살펴보시면 어느 정도 설명이 되어 있습니다.
--frames-pre-chunk, --extra-left-context-initial, --acoustic-scale 옵션은 아래 링크를 참고하시면 됩니다.
--beam, --min-active, --max-active, --lattice-beam 옵션은 아래 링크를 참고하시면 됩니다.
--verbose 옵션은 아래 링크들을 참고하시면 됩니다. 디코더와 직접적으로 연관된 옵션은 아니고 Logging과 관련된 옵션입니다.
--conf 옵션은 config 파일을 지정하는 옵션입니다. 기본 레시피에서는 conf/online.conf 파일을 지정합니다.
이 파일에는 --feature-type, --mfcc-config, --ivector-extraction-config, --endpoint.silence-phones 옵션이 적혀져 있습니다.
--feature-type, --mfcc-config, --ivector-extraction-config 옵션은 아래 링크를 참고하시면 됩니다.
--endpoint.silence-phones 옵션은 아래 링크를 참고하십쇼
STT 결과만 뽑아내는 옵션은 제가 아는 한에서는 없는 것 같습니다.
또 결과만 뽑아내도록 하는 것도 kaldi 소스 코드를 건드려야 해서 번거롭고요.
가장 편한 방법은 Log 결과에서 STT 부분만 뽑아내도록 후처리를 하는 것이라 생각됩니다.
>>> 2. "백만스물하나" 를 녹음한 파일을 디코딩하였을때
rescore 이전에는 백만 [20] [1]
rescore 이후에는 백만 스물 [1]
과 같은 결과를 받아볼 수 있었습니다.
data/local/lm/zeroth_lexicon을 보면
스물 - s eu m u l2
[20] - s eu m u l2
하나 - h a n a
[1] - h a n a
둘 다 동일한 값을 볼 수 있는데 [20]은 rescore 이후 스물이 되고
[1]은 rescore 이후에도 [1]입니다.
rescore가 조금 더 큰 언어모델을 사용하여 바뀐다고만 알고 있는지라..
혹시 [20]과 [1]이 무슨 차이로 인해 바뀌었는지 알려주실 수 있을까요?
kaldi-zeroth에서는 기본적으로 decoding 시에 3-gram 언어 모델을 사용하고 rescore 시에 4-gram 언어 모델을 사용합니다.
rescore 할 때 더 많은 범위를 고려하여 결과를 도출합니다.
제가 보기에는 언어 모델의 확률 문제라서
큰 이유가 있어서 바뀌었다고 보기는 어렵습니다.
언어 모델의 확률과 관련된 값들은 data/local/lm/zeroth.lm.*.arpa.gz 의 gz 압축을 풀고 vim과 같은 텍스트 편집기로 열면 확인할 수 있습니다.
2021년 9월 20일 월요일 오후 1시 24분 6초 UTC+9에 AronGs님이 작성: