브루에서 아쉬웠던 자막 작업을 직접 개선했습니다
영상과 오디오를 넣으면 STT 초안을 만들고, 실제 소리를 듣는 LLM 교정과 강제 정렬, 의미 단위 줄바꿈을 거쳐 자막을 출력하는 도구를 만들었습니다. 전문용어를 다시 고치고, 수정한 문장을 음성에 맞추고, 긴 자막을 나누는 작업을 하나의 흐름으로 연결했습니다.
브루와 연계하는 플러그인을 만든 것이 아닙니다. 기존 자막 편집에서 아쉬웠던 부분을 개선하기 위해 RTX 5090 서버에 자체 자막 서비스를 구성했습니다. 비교의 중심은 모든 영상에서 어느 제품이 더 정확한지가 아니라, 제 작업에 필요했던 교정·타이밍·분할 과정을 어떻게 제어했는지입니다.
STT·음성 교정·정렬·분할을 연결했습니다
- STT 초안: 음성에서 발화와 초기 시간 정보를 추출합니다.
- 음성을 듣는 LLM 교정과 용어집: 오디오·전사 초안·전문용어와 고유명사의 표기를 함께 보내 내용을 확인합니다.
- Forced Alignment: 교정한 텍스트를 실제 오디오에 다시 맞춰 단어별 시간을 얻습니다.
- 의미 단위 분할: 별도 LLM 단계에서 자막 경계를 정하고 시간 정보와 결합합니다.
- 01STT 초안
- 02오디오·용어집 교정
- 03Forced Alignment
- 04의미 단위 자막
최종 결과에는 SRT, VTT, TXT와 구간별 자막 데이터가 있습니다. 원고가 있는 작업에는 원고와 음성을 바로 정렬하는 경로도 따로 두었습니다.
LLM은 텍스트만 보고 교정하지 않습니다
일반적인 후처리는 STT 결과를 LLM에 넘겨 맞춤법이나 문맥을 고치는 방식입니다. 하지만 소리를 확인하지 않으면 그럴듯한 다른 문장으로 바꿀 수 있습니다.
이 구현에서는 오디오 파일 자체와 STT 초안을 Gemini에 함께 전달합니다. 초안은 힌트이고 판단의 기준은 실제 발화입니다. 말하지 않은 내용을 만들지 않도록 지시하고, 표현을 다듬은 구간에는 원래 발화와 구분할 수 있는 정보를 요청합니다.
LLM이 타임스탬프까지 추측하게 하지는 않습니다. 내용 판단과 시간 정렬을 분리했습니다.
키워드 부스팅은 어디에 적용되나요?
전문 강의에서는 고유명사나 영문 용어의 표기를 미리 알려주는 것이 유용합니다. 사용자가 입력한 키워드는 기본 용어집에 추가돼 LLM 교정 단계로 전달됩니다.
예를 들어 설명용 용어집에 “강제 정렬, Forced Alignment, 고유수용감각”을 넣으면, 오디오가 그 발화를 뒷받침할 때 해당 표기로 교정하도록 돕습니다. 들리지 않은 단어를 억지로 삽입하도록 하지는 않습니다.
정확히 말하면 이 기능은 ASR 디코더의 확률을 직접 바꾸는 부스팅이 아니라, 음성 기반 LLM 교정에 용어 정보를 추가하는 방식입니다. 전문용어를 한꺼번에 찾아바꾸는 치환 사전과도 다릅니다.
교정한 뒤 왜 Forced Alignment를 다시 하나요?
텍스트를 고쳤는데 STT의 기존 시간표를 그대로 쓰면 수정된 단어와 타이밍이 어긋날 수 있습니다. 그래서 교정문을 오디오와 다시 정렬합니다.
Forced Alignment는 주어진 문장이 음성의 어느 구간에 대응하는지 찾는 작업입니다. 새로 받아쓰는 역할은 STT가, 내용을 확인하는 역할은 LLM이, 시간 위치를 찾는 역할은 정렬기가 맡습니다.
원고가 이미 있는 TTS 영상은 원고와 음성을 바로 정렬할 수 있습니다. 다만 원고를 그대로 보존한다는 것과 음성이 원고를 빠짐없이 읽었다는 것은 다른 문제여서 누락 여부도 확인해야 합니다.
줄바꿈은 별도 LLM 단계로 처리했습니다
내용 교정 이후에는 교정문만 받는 의미 단위 분할 단계를 둡니다. 이 단계는 문장을 다시 쓰는 대신 자막을 나눌 위치에 경계 표시를 넣습니다.
코드에서는 원문과 분할 결과를 대응시켜 내용이 바뀌지 않도록 처리합니다. 분할 결과를 적용하지 못하면 규칙 기반 분할로 돌아갑니다. 이 단계는 의미 단위 자막 구간을 정하는 작업이며, 모든 편집 앱에서 동일한 두 줄 모양을 보장하는 기능은 아닙니다.
분할할 때는 글자 수뿐 아니라 문장 끝, 절의 경계와 짧게 남는 어절을 함께 고려하도록 구성했습니다. 정렬된 단어 시간을 분할 결과와 결합해 자막 시작·종료 시간을 구성합니다.
긴 오디오에서 내용이 사라지는 문제도 다뤘습니다
긴 오디오는 구간으로 나눠 처리합니다. LLM 교정이 짧은 발화를 빠뜨리거나 정렬기가 뒤쪽에서 멈추면 자막이 비는 구간이 생길 수 있습니다.
이를 찾기 위해 STT 초안과 교정문 사이에서 사라진 내용, 발화가 있는데 자막이 없는 시간 구간을 확인하는 처리를 넣었습니다. 의심 구간은 재시도하거나 더 짧게 나눠 처리하고, 복구 후에도 문제가 남으면 결과에 경고를 남깁니다.
자동 교정이 만들어낸 누락을 다시 검사하는 과정까지 포함해야 긴 강의에 사용할 수 있다고 봤습니다.
브루보다 나아지도록 집중한 부분은 무엇인가요?
제가 개선하려고 한 지점은 세 가지였습니다. 전문용어를 교정할 맥락을 제공하는 것, 교정문을 소리에 다시 맞추는 것, 자막을 의미 단위로 나누는 것입니다.
이 구조에서는 각 단계를 따로 확인하고 조정할 수 있습니다. 특정 용어가 틀렸는지, 정렬이 어긋났는지, 분할이 읽기 불편한지 구분해서 개선할 수 있다는 점이 중요했습니다.
브루와의 정확도 수치 비교는 같은 녹음과 같은 기준으로 해야 합니다. 여기서는 제품 전반의 우열을 수치로 주장하기보다 실제 만든 처리 과정과 편집상 개선점을 보여드립니다.
자주 묻는 질문
원고가 없어도 자막을 만들 수 있나요?
음성에서 STT 초안을 만든 뒤 교정·정렬하는 경로가 있습니다. 원고가 있다면 기존 텍스트를 정렬하는 별도 경로를 사용할 수 있습니다.
키워드를 넣으면 반드시 그 단어로 바뀌나요?
오디오가 해당 단어를 뒷받침할 때만 표기를 교정하도록 지시합니다. 키워드를 넣었다고 모든 인식 오류가 해결되는 것은 아닙니다.
어떤 파일로 받을 수 있나요?
파이프라인은 SRT, VTT, TXT와 구간 데이터를 생성합니다. 브루 전용 프로젝트 파일로 내보내는 기능을 뜻하지는 않습니다.
노이즈 제거도 같은 기능인가요?
Denoise는 잡음을 줄이는 도구이고, 이 자막 서비스는 발화와 시간·분할을 다룹니다. 전체 제작 흐름은 YouTube 자동화 파이프라인에서 이어집니다.
제작 도구 구축 상담에서는 실제 녹음과 자주 틀리는 용어, 원하는 자막 형태부터 확인할 수 있습니다.