GoP-Kaldi 파이프라인 구현 막힘: 어터런스 단위와 디코더 가정의 불일치

Source

  • Field Notes/ReturnZero/Daily Notes/Day 279. 2022-04-05.md

Summary

이 노트는 GoP-Kaldi 코딩 과정에서 발생한 파이프라인 이해의 혼선을 기록한다. 핵심 문제는 Kaldi의 기존 디코더가 ‘싱글 어터런스’를 가정하는 반면, 현재 구현은 문장을 세그먼트(utt) 단위로 처리하려는 시도에서 발생하는 입력/출력 구조의 불일치이다. 저자는 spk2utt, feats.scp, 그리고 각 단계(Feature 추출, Ivector, Log-likelihood)의 JOB/UTT 단위 처리 방식을 분석하며, 최종적으로 디코딩 시 어터런스 ID와 FST를 명시적으로 입력받아 처리해야 한다는 결론(유레카)에 도달한다.

Key Points

  • Kaldi 파이프라인(Step 3-5)은 JOB(문장) 단위와 UTT(세그먼트) 단위가 혼재되어 있으며, 결과물은 Map 형태로 저장되어야 함을 확인.
  • 기존 TCP 디코더는 ‘싱글 어터런스’를 가정하므로, 다중 세그먼트 처리 시 입력 구조 재설계 필요.
  • Wake-word 디코딩 로직 분석을 통해 Traceback, Lattice 생성, 그리고 Word ID 매핑 과정의 복잡성 인지.
  • Step 8(FST 생성)의 독립성과 Step 9, 11, 12의 의존성 분석을 통해, 디코더 입력에 어터런스 ID와 해당 FST를 명시적으로 전달해야 함을 결론지음.