GoP 레시피 분석 및 CPU 온라인 디코더 아키텍처 검토

Source

  • Field Notes/ReturnZero/Daily Notes/Day 266. 2022-03-23.md

Summary

이 노트는 GoP(Gaze-on-Phone) 레시피 실행 중 발생한 Kaldi 의존성 문제를 해결하기 위해, 오프라인 디코더(vito-kaldi) 대신 실시간성이 중요한 온라인 디코더(b2b-online-decoder)를 CPU 환경에서 구현하는 방안을 검토한다. GRPC 스트림을 통한 오디오 입력 처리, CpuDecoder의 초기화 및 디코딩 루프, 그리고 Feature Pipeline을 통한 LPP/LPR 피처 벡터 추출 과정 등 핵심 로직 흐름을 분석하고, Django 백엔드와의 통합 방향(워커 형태)을 고민한다.

Key Points

  • GoP 레시피 실행 시 kaldi_io 패키징 문제로 Docker 환경 전환 고려
  • 실시간성 요구로 인해 vito-kaldi(오프라인) 대신 b2b-online-decoder(온라인) 참조 결정
  • CPU 기반 디코딩 파이프라인 설계: GRPC 서버 -> OnlineDecoderService -> CpuDecoder
  • CpuDecoder 내부 로직: silence_weighting, feature_pipeline(OnlineNnet2FeaturePipeline), SingleUtteranceNnet3Decoder 연동
  • 부분 결과(Partial Result) 처리 및 디토크나이징을 통한 스트리밍 응답 구조
  • 최종 목표: 입력 텍스트와 오디오를 기반으로 Force Alignment 후 LPP/LPR 피처 벡터 추출