다듬이 올인: 문장 처리 파이프라인 및 말풍선 병합 로직 설계

Source

  • Field Notes/ReturnZero/Daily Notes/Day 637. 2023-03-30.md

Summary

이 노트는 ‘다듬이’ 시스템의 텍스트 처리 파이프라인(문장화, 간투어/욕설 제거, ITN, 말풍선 생성)을 재설계하는 과정의 기록이다. 특히 말풍선 생성 시 문장을 그룹핑하여 병합(merge)하거나 분할(divide)하는 로직을 상세히 기술하고 있다. 병합 기준으로는 화자 ID 일치, 시간 간격(threshold), 그리고 utter_range(min/max_len)를 고려하며, ARS 등 특정 화자에 대한 배율 적용도 논의한다. 또한 기존 코드에서 work 처리 방식과 프로세서 생성 방식의 비효율성(매 run마다 옵션 변경 등)을 지적하고, 큐 기반 work 관리와 프로세서 재사용 방안을 모색한다. 마지막으로 얼라인먼트 과정에서 간투어 제거로 인한 중복 발화 제거 시 발생하는 문제를 언급한다.

Key Points

  • 처리 순서 고정: sentence화 → difluency_remove → ITN → 말풍선 생성
  • 말풍선 병합(merge_sentence) 로직: 화자 ID 동일 여부, 시간 간격(threshold), 길이 제한(min_len, max_len)을 기준으로 a와 b 문장을 합칠지 결정
  • 말풍선 분할(divide_sentence) 로직: max_len을 초과하는 긴 문장은 단어 단위로 큐에 넣고 조건에 맞춰 분할
  • utter_range 설정: min_len, max_len 및 ARS 등 특정 화자를 위한 배율(utter_range_multiple_for_ars) 적용
  • 코드 구조 개선: run() 시마다 옵션이 바뀌는 문제 해결을 위해 processor 미리 생성 및 cfg 기반 옵션 변경 방식 도입
  • Work 관리: 큐 기반 처리 및 process(sentences, cfg) 함수 표준화
  • 알림: 얼라인먼트 시 간투어 제거로 인한 첫 번째 중복 발화 제거 시 발생하는 얼라인 문제 존재