
완전한 문장만이 번역되어야 한다 — 하지만 단 하나의 카운터가 그 설계를 배신했다
요약
실시간 영상 번역 도구인 LiveTR의 문장 세그멘테이션 및 번역 오류 원인을 분석합니다. 5초 단위의 오디오 분할 과정에서 발생하는 불완전한 문장 문제를 해결하기 위한 설계와, 이를 방해한 카운터 로직 오류를 다룹니다.
핵심 포인트
- 실시간 처리를 위한 5초 단위 오디오 세그멘테이션의 한계
- 완전한 문장 구성을 위한 파편(fragment) 보류 및 연결 메커니즘
- 차단(cutoff) 메커니즘의 카운터 로직 오류로 인한 자막 혼동 발생
LiveTR로 영어 영상을 시청할 때, 자막 번역이 가끔 뒤섞이는 현상이 발생하곤 했습니다.
서로 다른 사람의 대사가 하나의 문장으로 합쳐지기도 했습니다. 침묵 이후의 첫 발화는 앞부분이 누락된 채 번역되었습니다. 때로는 의미를 알 수 없는 일본어가 나타나기도 했습니다.

어두운 책상, 영어 영상 자막 오버레이가 실시간으로 일본어로 변환되는 분위기 있는 장면
번역을 위해서는 완전한 문장이 필요합니다
번역기에 불완전한 문장을 입력하면, 불완전한 번역 결과가 나옵니다. 이는 명백한 사실입니다.
여기서 관건은 오디오가 어떻게 캡처되느냐 하는 점입니다. 실시간 처리를 위해, LiveTR은 들어오는 오디오를 기계적으로 5초마다 분할하여 음성 인식 (Speech Recognition) 단계로 전달합니다. 이 5초 단위의 세그멘테이션 (Segmentation)은 사람들이 실제로 말을 멈추는 지점을 자연스럽게 무시합니다. 문장의 중간을 무자비하게 잘라버리는 것이죠.
따라서 음성 인식 결과로 나오는 영어 문장들은 빈번하게 잘려 나갑니다. "I think that we should…"와 같은 파편들은 5초라는 벽에 의해 끊어집니다. 이러한 파편들을 번역기에 직접 던져 넣으면, 뚝뚝 끊기는 번역 결과만을 얻게 될 것입니다.
그래서 LiveTR은 이러한 파편들을 번역 단계로 직접 전달하지 않습니다. 대신, 그것들을 붙잡아 두고 있다가, 다음 5초 안에 내용이 이어지면 이를 연결하여 완전한 문장을 만든 후 번역합니다. 오직 완전한 문장만이 번역을 위해 전송됩니다. 이것이 번역 정확도의 핵심이며, 저는 LiveTR을 소개하는 이전 기사에서 그 중요성에 대해 기술한 바 있습니다.
문제는 후속 내용이 영원히 오지 않을 때 발생합니다. 대화가 잠시 멈추거나 주제가 바뀔 수 있으며, 보류된 파편(fragment)은 영원히 이어지는 문장을 얻지 못할 수도 있습니다. 이 경우, 시스템은 "더 기다리는 것은 무의미하다"라고 판단하고 해당 파편을 단독 문장으로 전송합니다. 그 차단(cutoff) 메커니즘 자체는 제대로 구현되어 있었습니다.
그 차단 메커니즘이 잘못된 방향을 가리키고 있었다
자막 혼동이 발생한 이유는 이 차단 메커니즘이 작동하지 않았기 때문입니다.
대기 시간을 측정하는 단 하나의 카운터—"더 이상 기다리지 않고 전송"을 결정하는 카운터—가 반대로 연결되어 있었습니다. 기다릴 필요가 없을 때 트리거되었고, 차단해야 할 시점에는 트리거되지 않았습니다. 그래서 보류된 파편은 미결 상태로 남아 있다가, 다음 5초 이내에 다른 사람이 말을 시작하면 그 사람의 발화 시작 부분에 붙어버렸습니다.
예를 들어, 5초짜리 세그먼트가 "we really need to" 중간에서 끝납니다. 그 후 대화가 다른 방향으로 흐르고, 다음 5초 이내에 누군가 "Yeah anyway the budget is fine."라고 말합니다. 정상적이라면 이전 파편이 단독으로 전송되어야 하지만, 대신 그것이 붙어서 "we really need to anyway the budget is fine."라는, 실제로 아무도 말하지 않은 문장을 형성하게 됩니다. 이것이 충실하게 번역되기 때문에, 자막은 "We really need to anyway, the budget is fine."와 같이 두 화자의 대화가 섞인 문장이 됩니다.
차단 카운터가 반대로 설정되었을 때(위), 이전 파편이 다음 화자에게 붙습니다. 올바른 방향일 때(아래), 각각 별개의 발화로 확정됩니다.
제가 수정한 것은 단 하나, 바로 이 차단의 방향이었습니다. 설계 자체는 올바랐습니다.
번역 엔진은 처음부터 훌륭했다
LiveTR은 번역을 클라우드 엔진(DeepL / Google / Azure / Amazon, 설정에서 선택 가능)으로 전송합니다. 이 엔진들은 전달받은 영문 텍스트가 무엇이든 충실하게 번역합니다. 만약 조각난 텍스트(patchwork)를 입력하면, 조각난 상태 그대로 번역합니다. 엔진 입장에서는 자신들이 받은 영어가 두 사람의 대사가 뒤섞인 콜라주라는 사실을 알 방법이 없습니다.
제가 차단 방향을 수정한 후에는 완전한 문장들이 엔진에 도달하기 시작했습니다. 실제 기기에서 영어 오디오를 재생했을 때, 번역 결과는 완전히 달라졌습니다. 저는 번역 엔진의 코드를 단 한 줄도 건드리지 않았습니다.
완전한 문장을 입력하기만 하면, 동일한 엔진이 훌륭한 번역을 내놓습니다. 문제는 그토록 간단했습니다.
다운로드 (Download)
LiveTR은 BOOTH에서 구매할 수 있습니다. Windows + NVIDIA GPU 환경에서 영어 영상 및 스트리밍을 실시간으로 일본어화할 수 있습니다. 자막 오버레이(subtitle overlays)와 화자의 목소리 품질을 반영하는 일본어 음성 합성(text-to-speech) 기능이 포함되어 있습니다.
- LiveTR — An App That Converts English Audio from Videos into Japanese in Real Time — 앱 자체에 대한 소개입니다. 음성 인식(speech recognition), 번역, 자막, 그리고 음성 합성(text-to-speech)에 대한 개요를 다룹니다.
이 블로그, "Getting Started with Claude Code"는 Claude MAX 사용자들이 실제 개발 과정에서 배우는 내용을 기록하는 사이트입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기