SRT, VTT 자막 파일에서 깨끗한 텍스트만 추출하는 방법
자막 파일에서 순수한 대화 내용만 뽑아내는 일이 간단해 보이지만, cue 번호와 타임스탬프, 줄 중간에 끊긴 문장을 만나면 생각보다 까다로워집니다. 제대로 하는 방법을 소개합니다.
자막 파일은 색인 번호, 타이밍 범위, 실제 텍스트 이렇게 세 가지가 서로 뒤섞여 저장되어 있습니다. 블로그 인용문이나 기사, 검색 색인, 혹은 다른 도구에 입력할 텍스트만 필요하다면, 타이밍과 번호는 그냥 걷어내야 할 잡음일 뿐입니다.
수동으로 처리할 때, 그리고 그 방법이 무너지는 지점
타임스탬프 줄(\d{2}:\d{2}:\d{2}[,.]\d{3}\s*-->\s*...)에 대한 간단한 정규식 찾기/바꾸기는 명확한 경우에는 통합니다. 하지만 다음과 같은 상황에서는 무너집니다.
- 텍스트처럼 보이는 cue 번호. 한 줄에
42만 덩그러니 있으면 cue 색인일 수도 있지만, 드물게는 실제 대화의 일부(인물이 숫자를 소리 내어 읽는 장면)일 수도 있습니다. 단순한 제거 방식으로는 대규모로 이 둘을 안정적으로 구분하기 어렵습니다. - cue 사이에 끊긴 문장. 자막은 문법 단위가 아니라 화면 가독성(대략 몇 초에 한 줄)을 기준으로 나뉩니다. 한 문장이 연속된 두세 개의 cue에 걸쳐 있는 경우가 흔합니다. 타이밍 줄만 제거하고 조각들을 다시 합치지 않으면, 자연스러운 문장이 아니라 끊기고 분리된 문장 조각들만 남게 됩니다.
- 인라인 서식 태그.
<i>,<b>, 그리고 VTT의 화자/색상 태그(<v Speaker>,<c.colorname>)도 제거해야 합니다. 그렇지 않으면 결과물에 꺾쇠괄호가 그대로 텍스트로 남게 됩니다. - 섞인 줄바꿈 문자. 서로 다른 도구나 운영체제에서 내보낸 파일은 종종
\r\n과\n이 섞여 있어, 한쪽만 가정한 정규식 패턴을 깨뜨릴 수 있습니다.
좋은 결과물의 모습
제대로 추출된 텍스트는 평범한 글처럼 읽힙니다. 완전한 문장, 자연스러운 쉼이 있는 곳에서의 단락 구분, 떠돌아다니는 숫자나 타임스탬프 조각 없음, 남은 마크업 없음. 목표는 마치 처음부터 누군가가 대화를 그대로 받아 적은 것처럼 보이는 문서를 만드는 것입니다. 원래 어떤 자막 형식에서 왔는지 흔적조차 남지 않도록요.
수동 정리 없이 처리하기
저희 SRT to TXT 변환기(그리고 짝을 이루는 VTT to TXT 변환기)는 이 모든 과정을 자동으로 처리합니다. cue 번호와 타임스탬프 제거, 태그 제거, cue 사이에 끊긴 문장을 자연스러운 단락으로 재조합까지 전부요. 브라우저 안에서 완전히 실행되므로 파일이 어디로도 전송되지 않습니다.