AI/AI 도구

차원이 다른 AI 번역: 더 똑똑해진 한글 자막 생성기를 소개합니다

RevFactory 2024. 9. 14. 18:03

영상 콘텐츠의 급증과 함께 자막의 중요성도 크게 증가하고 있습니다. 특히 영어에서 한국어로 번역할 때, 자막의 정확성과 자연스러움은 시청 경험에 결정적인 영향을 미칩니다. 이를 해결하기 위해, 제가 직접 만들어 사용하고 있는 더 똑똑해진 AI 한글 자막 생성기를 소개합니다. 이 도구는 기존 번역기의 한계를 넘어서, 더 자연스럽고 오류 없는 고품질의 한글 자막을 제공합니다.

지난 9월 초 Josh Long의 Spring Boot 이 한국을 방문해 밋업을 진행했었는데요. 영상의 한글 자막을 만드는데도 해당 자막 생성기를 사용했습니다. 처음에는 일반 AI 번역으로 시도를 했다가 프롬프트 엔지니어링을 적용해서 다시 자막을 생성했습니다.

 

아래 스크린샷에서 위쪽은 일반 AI 번역, 아래는 프롬프트 엔지니어링이 적용된 자막입니다.

 

 

1️⃣ AI 한글 자막 생성기의 특징

이 AI 한글 자막 생성기는 단순한 번역을 넘어서 영상의 문맥을 이해하고, 자연스러운 한국어 자막을 제공하는 데 중점을 두고 있습니다. 제가 직접 프롬프트를 설계해 번역 방식의 세부적인 부분까지 조정해 사용하고 있으며, 그 결과 놀라운 성능을 경험하고 있습니다. 자막 생성 과정에서 중점적으로 고려한 내용들을 설명드리겠습니다.

 

1. 문맥 이해를 통한 자연스러운 번역
   AI는 영어 자막을 단순히 단어 대 단어로 번역하지 않고, 문맥을 철저히 분석해 자연스러운 한국어로 변환합니다. 또한, 시청자들이 편안하게 이해할 수 있도록 적절한 높임말과 상황에 맞는 표현을 사용하여 번역된 자막을 제공합니다.

2. 자막 길이 조절과 가독성 향상
   한글 자막을 생성할 때, 자막의 길이를 40자 이내로 조정해 가독성을 높여 보았습니다. 자막이 너무 길 경우에는 적절히 나누어 타이밍에 맞게 조정해 주어, 시청자의 집중을 방해하지 않고 자연스럽게 자막을 읽을 수 있게끔 했습니다. 또한, 한 문장에서 여러 개의 자막으로 나뉘는 경우에도 문장 흐름이 끊기지 않도록 신경을 썼습니다.

3. 자연스러운 한국어 표현 사용
   단순한 직역에서 벗어나, 시청자에게 익숙하고 자연스러운 표현을 사용하도록 번역해 보았습니다. 영어 특유의 표현이 한국어에서 어색하게 느껴지지 않도록, 한국어 문맥에 맞춘 번역을 통해 보다 쉽게 내용을 이해할 수 있게끔 했습니다.

4. 전문 용어 및 문화적 차이를 고려한 번역
   브랜드명, 기술 용어와 같은 특수한 단어들은 원어 그대로 유지하고, 필요한 경우 간단한 한국어 설명을 덧붙였습니다. 또한, 문화적 차이로 인해 발생할 수 있는 오해를 최소화하기 위해 영어 표현을 한국어로 적절하게 변환해 주었습니다. 이는 글로벌 콘텐츠를 시청할 때 번역된 자막이 문화적으로도 자연스럽게 느껴질 수 있도록 돕습니다.

5. 실제 경험에 기반한 AI 프롬프트
   이 AI 자막 생성기는 철저히 검증된 프롬프트를 사용해 자막 번역을 진행합니다. 프롬프트는 문맥, 자막 길이, 문화적 차이 등 다양한 요소를 고려하여 최적화되어 있으며, 영어 자막을 자연스럽고 이해하기 쉽게 한국어로 번역하도록 설계되었습니다. 자막 파일을 업로드한 후, AI가 자동으로 고품질의 번역을 제공하므로 번역 시간도 절약할 수 있습니다.

 

 

2️⃣ AI 한글 자막 생성기 프롬프트

아래는 현재 적용되어 있는 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️⃣ 비교 분석

저희 팀원 분이 기존 유튜브의 자동 번역 자막과 비교를 해주셨는데요.
아래와 같은 결과를 보입니다. 왼쪽은 기존 영문자막, 가운데는 유튜브 자동 번역, 오른쪽은 AI 자막 생성기로 생성된 자막입니다.

 

 

마침 조코딩 채널에 구글 연구원 2명과 인터뷰 하는 영상이 눈에 띄었는데요. (원본 링크)

 

해당 영상에는 이미 한글 번역으로 처리된 자막이 영상에 들어가 있었습니다. 이는 아마도 전문 번역가를 통해 생성한 것처럼 보입니다. 이 영상으로 비교를 해보았습니다.

 

아래 스크린샷에서 하얀색 배경의 위 자막은 사람의 작업을 거친 번역이고, 아래는 AI 자막 생성기로 자동 생성된 자막입니다.

 

 

 

전문용어의 경우에 다르게 표현이 되었는데요. 아래 스크린샷과 같이 Lyceum 이 '라이시움'과 '리케이온' 으로 각각 번역이 되었는데, 찾아보니 둘 다 쓰이는 표현으로 확인이 됩니다.

 

 

 

자막이 적용된 전체 영상은 아래와 같습니다. (원본 링크)

* 한글 자막을 활성화 하면 비교가 가능합니다.

 

 

4️⃣ AI 자막 생성기가 개발되기까지

1. 원본 영어 자막 구하기
영어 자막 파일(SRT)이 있는 경우는 그것을 그대로 써도 되고, 만약 영어 자막 파일이 없다면, 영상에서 영어 자막을 추출하기 위해 Assembly AI 의 API를 이용해서 수행했습니다. Assembly AI 에서 제공하는 SDK를 이용하여 아래와 같이 영어 자막 추출이 가능합니다. mp4 도 지원하지만 업로드 속도를 고려해 mp3 로 음성만 업로드하고 있습니다.
$ assemblyai transcribe '.\original.MP3' --srt

 

2. DeepL 을 이용해서 한글로 번역하기
DeepL 출시 이후 올해 초까지 제가 사용했던 방법으로, 영어 자막을 한글로 번역 번역 시, 자막 포멧 (SRT) 을 잘 유지해주는데요. 한가지 문제가 있습니다. 가독성을 위해 자막이 나뉘어 있는 경우, 그 맥락을 제대로 표현하지 못합니다. 이는 유튜브의 자동 자막 번역도 동일한 문제를 갖고 있습니다. 그리고 두 번째 문제점은 영어 자막이 길게 나온 경우, 짧게 분할하기가 어렵습니다.

 

작년 "Google I/O 2023 기조연설 요약 + 한글 번역 영상 공유" 글을 사내에 공유하면서 영상 자막도 이 방법을 사용했었는데요. 결국 수 작업으로 한글 자막 처리를 해야 했습니다. 그 외에도 Honeypot 채널의 쿠버네티스 다큐멘터리 영상 이나 React 다큐멘터리 영상의 한글 자막을 작업을 할때에도 시간이 엄청나게 걸렸습니다. 이를테면 20분 영상 작업에 1~2시간은 족히 걸렸죠.
 
3. 프롬프트 생성기로 프롬프트 초안 만들기
Claude 의 Prompt Generator 출시 이후 저는 이 생성기를 매우 잘 활용하고 있는데요. 프롬프트의 정석대로 초기 프롬프트를 생성해주고, 제가 놓칠 수 있는 부분까지도 지침에 포함시켜주어서 이를 활용했을 때 결과가 매우 좋았습니다. 이번 AI 자막 생성기에서도 Prompt Generator 를 적극 활용했습니다. 테스트를 위한 데이터도 자동으로 생성해주고, 프롬프트 변경 이력도 관리할 수 있습니다.
 
4. AI 로 작성하는 파이썬 스크립트
잘 동작하는 프롬프트까지 준비가 되었다면, 이제 코딩을 해서 자동화를 해야 하는데요. 자막 데이터는 매우 크기 때문에 분할해서 하나씩 만들고 최종 자막으로 합쳐야 합니다.

 

 

또한 Claude 의 경우 Context Window (Input) 가 20만 Token 까지 지원을 하지만 Output Token은 8,192 Token 까지 생성을 할 수 있기에 전체 자막을 전부 생성하기 위해서는 분할 처리 작업이 필요합니다.

 

 

5️⃣ 결과 공유

AI 자막 생성기를 써보고 싶으시다구요?
전체 코드는 README 까지 AI로 작성해서 GitHub에 MIT라이선스로 올려두었습니다.

 

https://github.com/revfactory/subtitle-translator

 

Colab 도 공유드립니다.
 
쓰다보니 글이 길어졌는데요.
후기와 함께 공유드린 AI 자막 생성기가 도움이 되셨으면 좋겠습니다. 😎