차원이 다른 AI 번역: 더 똑똑해진 한글 자막 생성기를 소개합니다
영상 콘텐츠의 급증과 함께 자막의 중요성도 크게 증가하고 있습니다. 특히 영어에서 한국어로 번역할 때, 자막의 정확성과 자연스러움은 시청 경험에 결정적인 영향을 미칩니다. 이를 해결하기 위해, 제가 직접 만들어 사용하고 있는 더 똑똑해진 AI 한글 자막 생성기를 소개합니다. 이 도구는 기존 번역기의 한계를 넘어서, 더 자연스럽고 오류 없는 고품질의 한글 자막을 제공합니다.
지난 9월 초 Josh Long의 Spring Boot 이 한국을 방문해 밋업을 진행했었는데요. 영상의 한글 자막을 만드는데도 해당 자막 생성기를 사용했습니다. 처음에는 일반 AI 번역으로 시도를 했다가 프롬프트 엔지니어링을 적용해서 다시 자막을 생성했습니다.
아래 스크린샷에서 위쪽은 일반 AI 번역, 아래는 프롬프트 엔지니어링이 적용된 자막입니다.
1️⃣ AI 한글 자막 생성기의 특징
1. 문맥 이해를 통한 자연스러운 번역
AI는 영어 자막을 단순히 단어 대 단어로 번역하지 않고, 문맥을 철저히 분석해 자연스러운 한국어로 변환합니다. 또한, 시청자들이 편안하게 이해할 수 있도록 적절한 높임말과 상황에 맞는 표현을 사용하여 번역된 자막을 제공합니다.
2. 자막 길이 조절과 가독성 향상
한글 자막을 생성할 때, 자막의 길이를 40자 이내로 조정해 가독성을 높여 보았습니다. 자막이 너무 길 경우에는 적절히 나누어 타이밍에 맞게 조정해 주어, 시청자의 집중을 방해하지 않고 자연스럽게 자막을 읽을 수 있게끔 했습니다. 또한, 한 문장에서 여러 개의 자막으로 나뉘는 경우에도 문장 흐름이 끊기지 않도록 신경을 썼습니다.
3. 자연스러운 한국어 표현 사용
단순한 직역에서 벗어나, 시청자에게 익숙하고 자연스러운 표현을 사용하도록 번역해 보았습니다. 영어 특유의 표현이 한국어에서 어색하게 느껴지지 않도록, 한국어 문맥에 맞춘 번역을 통해 보다 쉽게 내용을 이해할 수 있게끔 했습니다.
4. 전문 용어 및 문화적 차이를 고려한 번역
브랜드명, 기술 용어와 같은 특수한 단어들은 원어 그대로 유지하고, 필요한 경우 간단한 한국어 설명을 덧붙였습니다. 또한, 문화적 차이로 인해 발생할 수 있는 오해를 최소화하기 위해 영어 표현을 한국어로 적절하게 변환해 주었습니다. 이는 글로벌 콘텐츠를 시청할 때 번역된 자막이 문화적으로도 자연스럽게 느껴질 수 있도록 돕습니다.
5. 실제 경험에 기반한 AI 프롬프트
이 AI 자막 생성기는 철저히 검증된 프롬프트를 사용해 자막 번역을 진행합니다. 프롬프트는 문맥, 자막 길이, 문화적 차이 등 다양한 요소를 고려하여 최적화되어 있으며, 영어 자막을 자연스럽고 이해하기 쉽게 한국어로 번역하도록 설계되었습니다. 자막 파일을 업로드한 후, AI가 자동으로 고품질의 번역을 제공하므로 번역 시간도 절약할 수 있습니다.
2️⃣ AI 한글 자막 생성기 프롬프트
YouTube 동영상을 위해 영어 자막을 한국어로 번역하는 임무를 맡았습니다. 목표는 자연스럽고 오류가 없으며 형식이 적절한 고품질 한국어 번역을 만드는 것입니다. 자막은 SRT 형식으로 제공됩니다. 쉽게 읽을 수 있도록 자막 길이를 적절히 유지하세요.
번역에 필요한 영어 자막은 다음과 같습니다:
<english_subtitles>
{{ENGLISH_SUBTITLES}}
</english_subtitles>
다음 지침에 따라 번역을 완료합니다:
1. 각 자막을 영어에서 한국어로 번역하여 한국어 번역이 자연스럽고 원어민이 쉽게 이해할 수 있도록 합니다.
2. 자막 길이를 적절히 유지합니다. 각 자막당 40자 이하를 목표로 합니다. 자막이 너무 길어지면 두 개 이상의 자막으로 나누고 그에 따라 타이밍을 조정합니다.
3. 동영상의 맥락에 따라 적절한 존댓말과 형식적 수준을 사용합니다.
4. 문화적으로 특정한 언급이나 관용구가 있다면 같은 의미를 전달하는 한국어에 맞게 조정하세요.
5. 영어로 더 나은 용어(예: 브랜드 이름, 전문 용어)는 원래의 영어 용어를 사용한 다음 필요한 경우 괄호 안에 간단한 한국어 설명을 붙입니다.
6. 줄 바꿈을 사용하여 내용의 의미에 따라 자막을 더 쉽게 읽을 수 있도록 합니다.
다음 형식으로 번역을 제공합니다:
<korean_subtitles>
1
[start time] --> [end time]
[Korean translation]
2
[start time] --> [end time]
[Korean translation]
...
</korean_subtitles>
좋은 번역의 예는 다음과 같습니다:
<example>
English:
1
00:00:00,560 --> 00:00:01,570
That's a good idea.
2
00:00:02,630 --> 00:00:03,582
Let's implement it right away.
3
00:00:16,550 --> 00:00:52,826
And basically mark Thomas is, there's no such thing as a lead with Apache open source projects, but he's certainly one of the most continuous and valuable committers to the project and he works on the spring team, but he's also one of the most important people in the Apache Tomcat project and he has been for more than a decade, almost 20 years, and he wrote a blog last year looking at what that means, what virtual threads mean for something like Tomcat, the conclusion is kind of interesting.
Korean:
1
00:00:00,560 --> 00:00:01,570
좋은 생각이네요.
2
00:00:02,630 --> 00:00:03,582
바로 실행해 봅시다.
3
00:00:16,550 --> 00:00:21,326
기본적으로 마크 토마스는, Apache 오픈 소스 프로젝트에는 리더라는 것이 없지만,
4
00:00:21,550 --> 00:00:25,426
그는 확실히 프로젝트에 가장 지속적이고 가치 있는 컨트리뷰터 중 한 명입니다.
5
00:00:25,527 --> 00:00:30,625
그는 스프링 팀에서 일하지만,
6
00:00:30,727 --> 00:00:33,125
또한 Apache Tomcat 프로젝트에서 가장 중요한 인물 중 한 명이며,
7
00:00:33,727 --> 00:00:36,125
10년 이상, 거의 20년 동안 그래왔습니다.
</example>
문제나 특별한 사례가 발생하면 다음과 같이 처리하세요:
- 번역할 수 없는 고유명사나 전문 용어의 경우 영어로 보관하고 필요한 경우 괄호 안에 간단한 한국어 설명을 추가합니다.
- 자막에 여러 문장이 포함된 경우 가능한 한 문장 이하로 유지합니다. 결과 자막이 너무 긴 경우에 문장을 분할합니다.
- 구나 문장의 의미가 확실하지 않다면 문맥에 따라 가능한 최상의 번역을 제공하세요.
최종 결과물을 제출하기 전에 번역본의 정확성, 자연스러움, 적절한 형식을 검토하는 것을 잊지 마세요. 한국어 번역본이 원래 의미를 유지하면서도 한국 시청자들이 쉽게 읽을 수 있고 자연스럽게 들을 수 있도록 하세요.
3️⃣ 비교 분석
전문용어의 경우에 다르게 표현이 되었는데요. 아래 스크린샷과 같이 Lyceum 이 '라이시움'과 '리케이온' 으로 각각 번역이 되었는데, 찾아보니 둘 다 쓰이는 표현으로 확인이 됩니다.
자막이 적용된 전체 영상은 아래와 같습니다. (원본 링크)
* 한글 자막을 활성화 하면 비교가 가능합니다.
4️⃣ AI 자막 생성기가 개발되기까지
$ assemblyai transcribe '.\original.MP3' --srt
또한 Claude 의 경우 Context Window (Input) 가 20만 Token 까지 지원을 하지만 Output Token은 8,192 Token 까지 생성을 할 수 있기에 전체 자막을 전부 생성하기 위해서는 분할 처리 작업이 필요합니다.
5️⃣ 결과 공유
https://github.com/revfactory/subtitle-translator