STT 배치 모드 연동 — 녹음 파일 전사

AI Hub 음성을 파일 단위로 전사하는 경로를 붙인다. 실시간 스트리밍은 3주차다.

전제는 이미 끝났다 — 결제 계정·키·할당량(w1-stt-billing-quota), 연결 확인, scripts/test_stt.py.

왜 배치가 먼저인가

반복 실험을 스트리밍으로 돌리면 할당량(600초/일)을 금방 태운다. 배치 모드로 전사해 결과를 저장해두면 같은 오디오를 몇 번이고 다시 쓸 수 있다(리스크 비용 항목).

할 것

완료 조건

같은 명령으로 재실행하면 이미 전사된 파일은 건너뛰고, 사용량이 로그에 남는다.

2026-08-26 — 스크립트 작성 완료, 실행 검증은 남음

scripts/transcribe_batch.py.

할당량을 태우지 않는 것이 이 티켓의 핵심이라 두 장치를 넣었다.

발화 종료 시각이 골든셋 스펙에 필요해 enable_word_time_offsets 를 켜고 단어별 start_ms/end_ms 를 저장한다.

검증한 것 (합성 wav 로): 대상 없음 → exit 1, --dry-run 초 계산, 900초 파일이 일 한도 600초에 걸려 건너뛰어지고 5초 파일은 계속 처리됨, 캐시된 파일 재전사 안 함.

검증하지 못한 것 — 실제 API 호출 경로. 이 머신에 data/raw/ 오디오도 google-cloud-speech 도 없다. 오디오가 있는 머신에서 --dry-run 으로 먼저 확인한 뒤 소량(5~10건)으로 실행해야 한다.

출력은 data/processed/stt/ (gitignore 대상). 전사 원문에는 개인정보가 그대로 들어 있으므로 커밋하지 않는다 — 마스킹(C-5)은 별도 모듈의 책임이다.

2026-08-28 — 결함 3건 수정. 실행 검증은 아직 못 했다

류준 님이 「다산콜DB 6,614건 전사」를 요청하면서 이 티켓의 실행 검증을 겸하자고 했다. 전사 범위는 미결로 넘겼고, 여기서는 스크립트 쪽만 정리한다.

고친 것 (합성 wav 84개로 --dry-run 검증)

여전히 검증하지 못한 것 — 실제 API 경로. 이 머신에 data/raw/ 오디오도 .venv 도 없다. 오디오가 있는 머신에서 --dry-run 으로 헤더·초를 확인한 뒤 소량(5~10건)으로 실행해야 한다. 그때까지 이 티켓은 in-progress 로 둔다.

전량 전사는 이 티켓의 완료 조건이 아니다. 완료 조건은 “재실행 시 캐시가 먹고 사용량이 로그에 남는다”이고, 그건 5~10건으로 확인된다.