STT 제거 — 스크립트 기반 자막으로 전환
subtitle-worker에서 STT 의존성을 완전히 걷어냈다.
기존 방식은 Python 환경과 faster-whisper를 Dockerfile에 설치해서 오디오를 실시간으로 전사하는 구조였다. 이게 Docker 이미지 크기를 크게 불려놓고, 빌드 시간도 길었다.
근데 더 근본적인 문제가 있었다. 이 파이프라인에서 STT가 필요한 상황 자체가 없었다. 이미 script.json에 문장 데이터가 있으니까.
방향을 바꿨다. ffprobe로 오디오 파일의 총 길이를 측정하고, script.json의 문장들을 길이에 비례해서 시간 구간을 나눠 SRT를 직접 생성하는 방식으로 교체했다. processor.ts에 그 로직을 전부 담았다.
// ffprobe로 오디오 길이 측정 후 문장별 시간 배분
const duration = await getAudioDuration(audioPath);
const segments = distributeSegments(script.sentences, duration);
Dockerfile에서는 Python 관련 레이어를 전부 제거하고 ffmpeg만 남겼다. 이미지가 눈에 띄게 가벼워졌다.
추가로 숫자가 포함된 텍스트에 #FFE135 색상 하이라이트를 자막에 내장하는 기능도 이번에 같이 넣었다. SRT 태그로 처리했고, package.json에 "type": "module"도 추가해서 ESM 방식으로 맞췄다.
STT가 필요 없는 상황에서 STT를 끌고 다닐 이유가 없다. 의존성은 줄일수록 좋다.