아카이브 / 개발
video-converter — AI 비디오 자막·번역 도구
목차 — 프로젝트 요약 · 담당 범위 · 문제와 구현 접근 · 이 작업에서 한 일 · 결과물과 원문 · 구현 상세
프로젝트 요약
OpenAI Whisper·GPT-4·EasyOCR을 결합해 음성 자막 생성과 화면 텍스트 인식·번역을 자동화한 개인 프로젝트.
담당 범위
기획·설계·개발을 맡은 개인 프로젝트다. 공개 저장소에서 코드와 사용 방법을 확인할 수 있다.
문제와 구현 접근
OpenAI Whisper로 음성을 인식해 자막을 생성하고 GPT-4로 자연스러운 한국어 번역을 붙인다. EasyOCR로 화면 내 텍스트를 감지해 실시간 번역 오버레이까지 제공하는 개인 프로젝트다.
이 작업에서 한 일
아이디어를 실제로 작동하는 코드로 만들고, 다른 사람이 설치하고 사용할 수 있도록 설명서를 함께 작성했다.
결과물과 원문
관련 등록공보·논문·저장소는 아래 링크에서 볼 수 있다.
구현 상세
README공개 저장소의 구조·기능·실행 문서
Video Converter
AI 기반 비디오 자막 생성 및 화면 텍스트 번역 도구입니다. OpenAI Whisper를 사용한 음성 인식과 GPT-4를 활용한 자막 번역, 그리고 EasyOCR을 사용한 화면 텍스트 인식 및 번역 기능을 제공합니다.
🎯 주요 기능
- 음성 자막 생성: OpenAI Whisper를 사용한 고품질 음성 인식
- 자막 번역: GPT-4를 활용한 자연스러운 한국어 번역
- 화면 텍스트 인식: EasyOCR을 사용한 화면 내 텍스트 감지
- 화면 텍스트 번역: 감지된 텍스트의 실시간 번역 오버레이
🛠 설치
1. 저장소 클론
git clone https://github.com/seokmogu/video-converter.git
cd video-converter
2. 가상환경 생성
python -m venv venv
source venv/bin/activate # Linux/Mac
# 또는
venv\\Scripts\\activate # Windows
3. 의존성 설치
pip install -r requirements.txt
4. FFmpeg 설치
- Mac:
brew install ffmpeg - Ubuntu:
sudo apt install ffmpeg - Windows: FFmpeg 공식 사이트에서 다운로드
5. 환경 변수 설정
# .env.example을 복사해서 .env 파일 생성
cp .env.example .env
# .env 파일을 열어서 설정값들을 수정
.env 파일 설정 예시:
# OpenAI API 키
OPENAI_API_KEY=your_actual_api_key_here
# 소스 언어 (비디오의 원본 언어)
SOURCE_LANGUAGE=ja
# 타겟 언어 (번역할 언어)
TARGET_LANGUAGE=Korean
# OCR 언어 설정 (쉼표로 구분)
OCR_LANGUAGES=ja,en
# 파일 경로 설정
INPUT_VIDEO_PATH=./input_video.mp4
OUTPUT_DIR=./output
TEMP_DIR=./temp
DEFAULT_OUTPUT_FORMAT=mp4
SUPPORTED_INPUT_FORMATS=mp4,mov,avi,mkv,wmv,flv,webm,m4v
OUTPUT_FILENAME_PATTERN={stem}_{task}.{ext}
🌐 지원 언어
소스 언어 (SOURCE_LANGUAGE)
Whisper가 지원하는 언어 코드를 사용합니다:
ja: 일본어en: 영어ko: 한국어zh: 중국어fr: 프랑스어de: 독일어es: 스페인어ru: 러시아어pt: 포르투갈어it: 이탈리아어
타겟 언어 (TARGET_LANGUAGE)
GPT가 이해할 수 있는 언어명을 사용합니다:
Korean: 한국어English: 영어Japanese: 일본어Chinese: 중국어French: 프랑스어German: 독일어Spanish: 스페인어Russian: 러시아어Portuguese: 포르투갈어Italian: 이탈리아어
OCR 언어 (OCR_LANGUAGES)
EasyOCR이 지원하는 언어 코드를 쉼표로 구분:
en: 영어ja: 일본어ko: 한국어zh: 중국어 (간체/번체)fr: 프랑스어de: 독일어es: 스페인어ru: 러시아어pt: 포르투갈어it: 이탈리아어
예시:
# 일본어 비디오를 한국어로 번역
SOURCE_LANGUAGE=ja
TARGET_LANGUAGE=Korean
OCR_LANGUAGES=ja,en
# 영어 비디오를 일본어로 번역
SOURCE_LANGUAGE=en
TARGET_LANGUAGE=Japanese
OCR_LANGUAGES=en
# 중국어 비디오를 영어로 번역
SOURCE_LANGUAGE=zh
TARGET_LANGUAGE=English
OCR_LANGUAGES=zh,en
📁 파일 경로 설정
환경변수 설정
.env 파일의 파일 경로 관련 설정:
# 기본 입력 비디오 파일 경로
INPUT_VIDEO_PATH=./input_video.mp4
# 출력 디렉토리 (결과 파일들이 저장될 위치)
OUTPUT_DIR=./output
# 임시 파일 디렉토리
TEMP_DIR=./temp
# 기본 출력 비디오 확장자
DEFAULT_OUTPUT_FORMAT=mp4
# 지원하는 입력 비디오 확장자 (쉼표로 구분)
SUPPORTED_INPUT_FORMATS=mp4,mov,avi,mkv,wmv,flv,webm,m4v
# 출력 파일명 패턴
OUTPUT_FILENAME_PATTERN={stem}_{task}.{ext}
파일명 패턴 변수
OUTPUT_FILENAME_PATTERN에서 사용할 수 있는 변수들:
{stem}: 원본 파일명 (확장자 제외){task}: 작업명 (subtitles, screen_translation 등){ext}: 출력 파일 확장자{timestamp}: 타임스탬프 (YYYYMMDD_HHMMSS)
예시:
# 기본 패턴
OUTPUT_FILENAME_PATTERN={stem}_{task}.{ext}
# 결과: video_subtitles.mp4
# 타임스탬프 포함 패턴
OUTPUT_FILENAME_PATTERN={stem}_{task}_{timestamp}.{ext}
# 결과: video_subtitles_20241201_143022.mp4
명령행 사용법
환경변수 대신 명령행에서 직접 비디오 파일을 지정할 수 있습니다:
# 특정 비디오 파일로 자막 생성
python improved_subtitle_generator.py /path/to/your/video.mp4
# 특정 비디오 파일로 화면 번역
python improved_screen_translator.py /path/to/your/video.mp4
# 환경변수에 설정된 기본 파일 사용
python improved_subtitle_generator.py
디렉토리 구조 예시
your-project/
├── input_video.mp4 # 입력 비디오
├── output/ # 출력 디렉토리
│ ├── video_subtitles.mp4
│ ├── video_subtitles.srt
│ └── video_screen_translation.mp4
├── temp/ # 임시 파일 디렉토리
│ └── audio_segment_*.wav
└── .env # 환경변수 설정
🚀 사용법
기본 자막 생성기
음성을 인식하여 자막을 생성하고 번역합니다.
python subtitle_generator.py
개선된 자막 생성기
더 나은 번역 품질과 자막 분할 기능을 제공합니다.
python improved_subtitle_generator.py
화면 텍스트 번역기
화면에 나타나는 텍스트를 감지하고 번역합니다.
python screen_text_translator.py
개선된 화면 텍스트 번역기
향상된 OCR 정확도와 더 나은 텍스트 감지 기능을 제공합니다.
python improved_screen_translator.py
전체 비디오 처리
음성 자막 생성과 화면 텍스트 번역을 순차적으로 실행합니다.
python process_full_video.py
통합 테스트
개선된 시스템의 통합 테스트를 실행합니다.
python test_improved_system.py
📁 파일 구조
video-converter/
├── README.md # 이 파일
├── requirements.txt # Python 의존성
├── .env.example # 환경변수 예제
├── .gitignore # Git 제외 파일 목록
├── subtitle_generator.py # 기본 자막 생성기
├── improved_subtitle_generator.py # 개선된 자막 생성기
├── screen_text_translator.py # 기본 화면 텍스트 번역기
├── improved_screen_translator.py # 개선된 화면 텍스트 번역기
├── process_full_video.py # 전체 비디오 처리
├── test_improved_system.py # 통합 테스트
├── test_screen_translation.py # 화면 번역 테스트
└── convert_video.py # 비디오 변환 유틸리티
⚙️ 설정
OpenAI API 키
- OpenAI 플랫폼에서 API 키를 생성합니다.
.env파일에 키를 설정합니다:
OPENAI_API_KEY=your_actual_api_key_here
비디오 파일 준비
지원하는 비디오 형식: .mp4, .mov, .avi, .mkv 등
코드에서 video_path 변수를 수정하여 처리할 비디오 파일 경로를 지정합니다.
🔧 주요 클래스
SubtitleGenerator
기본 자막 생성 기능을 제공합니다.
from subtitle_generator import SubtitleGenerator
generator = SubtitleGenerator(api_key="your-openai-api-key")
result = generator.generate_subtitles("video.mp4")
ImprovedSubtitleGenerator
향상된 자막 생성 및 번역 기능을 제공합니다.
from improved_subtitle_generator import ImprovedSubtitleGenerator
# 환경변수 사용 (권장)
generator = ImprovedSubtitleGenerator(api_key="your-openai-api-key")
# 또는 직접 언어 지정
generator = ImprovedSubtitleGenerator(
api_key="your-openai-api-key",
source_language="en", # 영어 음성
target_language="Korean" # 한국어로 번역
)
result = generator.process_video_segment("video.mp4", start_time=0, end_time=60)
ScreenTextTranslator
화면 텍스트 감지 및 번역 기능을 제공합니다.
from screen_text_translator import ScreenTextTranslator
# 환경변수 사용 (권장)
translator = ScreenTextTranslator(api_key="your-openai-api-key")
# 또는 직접 언어 지정
translator = ScreenTextTranslator(
api_key="your-openai-api-key",
source_language="zh", # 중국어 텍스트 감지
target_language="English", # 영어로 번역
ocr_languages="zh,en" # 중국어와 영어 OCR
)
result = translator.process_video_with_translation("input.mp4", "output.mp4")
ImprovedScreenTextTranslator
향상된 화면 텍스트 처리 기능을 제공합니다.
from improved_screen_translator import ImprovedScreenTextTranslator
# 환경변수 사용 (권장)
translator = ImprovedScreenTextTranslator(api_key="your-openai-api-key")
# 또는 직접 언어 지정
translator = ImprovedScreenTextTranslator(
api_key="your-openai-api-key",
source_language="fr", # 프랑스어 텍스트 감지
target_language="Korean", # 한국어로 번역
ocr_languages="fr,en" # 프랑스어와 영어 OCR
)
result = translator.process_video_segment_improved("input.mp4", "output.mp4")
🎥 처리 과정
- 음성 자막 생성
- OpenAI Whisper로 음성 인식
- GPT-4로 한국어 번역
- SRT 파일 생성
- 비디오에 자막 합성
- 화면 텍스트 번역
- 지정된 간격으로 프레임 추출
- EasyOCR로 텍스트 감지
- GPT-4로 텍스트 번역
- 번역된 텍스트를 비디오에 오버레이
⚠️ 주의사항
- OpenAI API 사용료가 발생할 수 있습니다.
- 긴 비디오 처리 시 상당한 시간이 소요될 수 있습니다.
- 화면 텍스트 인식 정확도는 비디오 품질에 따라 달라집니다.
- FFmpeg가 시스템에 설치되어 있어야 합니다.
🐛 문제 해결
FFmpeg 오류
# Mac
brew install ffmpeg
# Ubuntu
sudo apt update
sudo apt install ffmpeg
OpenAI API 오류
- API 키가 올바르게 설정되어 있는지 확인
- OpenAI 계정에 충분한 크레딧이 있는지 확인
메모리 부족
긴 비디오의 경우 구간별로 나누어 처리하세요:
# 30분씩 구간 나누어 처리
generator.process_video_segment("video.mp4", start_time=0, end_time=1800)
generator.process_video_segment("video.mp4", start_time=1800, end_time=3600)
📝 라이선스
MIT License
🤝 기여하기
버그 리포트나 기능 요청은 GitHub Issues를 사용해주세요.