프롬프트
만든건 영상에서 자막뽑아서 번역까지 하기? subtitle edit 자동화 버전?
subtitle edit 으로 자막 만들어 보다가
근래에 gemini advanced 가입하고 gems 로 잘쓰고 있는게 생각이 나서 번역은 gemini 로 하는게 더 퀄이 좋아 보여서
api 를 쓰려고 하니 subtitle edit 은 한줄한줄 api 를 날리는거 같아서 무료 한도 15 RPM 에 걸려서 오류가남
그럼 좀 무더기로 보내면 되겠네 해서
gemini 2.5 pro 로 코딩 함 해보자 해서
로직이나 이런건 100% 제미니가 하고 이거 필요해 이거 해줘
그렇게만 코딩해서 한 6시간여(이상되는거 같은데...) 코딩하니 쓸만한 프로그램이 나옴
해보면서 느낀걸 생각나는 대로 적어보자면
완전히 코딩을 모르면 안됨
중간중간 찐빠 처럼 문제가 나는데
그냥 여기에서 오류가 나 이렇게 말해도 되는데
내가 알면서 이건 여기가 문제야, 너 로직 이상한데 이렇게 수정해줘 등
코딩에 대한 기본적인 것 보다 좀더 알고 있어야 쓸만한 수준으로 올릴수 있는듯함
그리고 기능을 자꾸 추가하다보면 이전걸로 돌아가기도 하고 그럼... 이건 한번만 있었음
AI가 고집이 좀 있음... 내가 이렇게 해달라고 하면, 아니야 그거 아닌거 같아, 안해줘 이럼.. ㅋ
주석 잘달아주네...
UI신경안쓰고 연구용이나 혼자서 쓸거면 할만한듯, 상업용은 아니야... UI는 직접해야해...
이렇게 까지 전적으로 ai써서 코딩을 해보는건 처음인데
처음엔 작은기능으로 시작해서 점점 살을 붙여 나가는 식으로 했는데
처음부터 전체 기능을 정의하고 딱 이렇게 해줘 이러면 다 해줄려나 궁금하네
ais api 에 본문을 json 으로 던졌는데 응답이 json 으로 올때 끝까지 안오는 경우가 자주 있음...
보통 의견을 구하는식으로 이렇게 해줘, 이건 어때? 이렇게 말하는데
말을 안들으면, 이건 꼭 반영해줘 이렇게 말하면 해주는 편임
그리고 논리를 들어 설득해야하는 편임... 내가 왜 ai 를 설득해야는지 웃기긴한데...
그냥 내 성향이 그런건가...
확실히 google 번역 api 보다 gemini 로 하는게 좀더 괜찮아 보임
생각해보면 별기능 아닌데 오래걸리네... 그런데 이 정도 퀄이라도 직접 하려고 했으면 더 걸릴수도 있겠다 싶네
몇가지 궁금한건...
이걸 공홈 웹에서 2.5 pro 로 canvas 적용해서 했는데 100만 토큰 안넘나? 6시간 넘게 계속 수정한거 같은데
공홈은 토큰 얼마 썼는지 안나와서...
ais 에서도 이렇게 되나 이게?
나는 다름 사람들이 어떻게 대화 하는지 궁금하던데... 전체 대화를 공유하는게 도움이 될까??
... 좋은 개발이었다. ㅋㅋ
====== 만든 기능 ======
이 애플리케이션은 사용자가 비디오 파일 또는 일본어 자막 파일(.srt, _ja.srt)의 경로를 입력하면, 해당 비디오에서 일본어 자막을 추출하거나 기존 자막을 읽어 일본어 내용을 한국어로 번역하고, 최종 번역된 자막 파일을 원본 파일과 같은 위치에 저장해주는 데스크톱 프로그램입니다.
상세 기능 목록입력 방식:
파일 경로 입력: GUI 창의 텍스트 필드 영역에 비디오 파일(mp4, mkv, avi, mov 등) 또는 SRT 파일(.srt, _ja.srt)의 전체 경로를 직접 입력하거나, 파일을 드래그 앤 드롭하여 경로를 자동으로 입력할 수 있습니다.
다중 파일 처리: "파일 추가" 버튼 또는 드래그 앤 드롭을 통해 여러 개의 비디오/SRT 파일을 목록(JList)에 등록할 수 있습니다.
목록 관리: "목록 지우기" 버튼으로 등록된 파일 목록을 초기화할 수 있습니다.
자막 생성 (비디오 파일 입력 시):
입력된 비디오 파일 경로를 사용하여 faster-whisper-xxl.exe (설정된 경로의 실행 파일)를 실행합니다.
Whisper 모델 (large-v3-turbo 설정)을 사용하여 비디오의 음성을 일본어(ja)로 인식하고 자막을 추출합니다.
생성된 일본어 자막은 원본 비디오 파일과 같은 폴더에 [원본 비디오 파일명]_ja.srt 형식으로 저장됩니다.
일본어 자막 처리:
파일 직접 입력: 파일명이 .srt 또는 _ja.srt로 끝나는 경우, 해당 파일을 직접 읽어옵니다.
언어 감지: 읽어온 SRT 파일의 각 자막 블록 텍스트에 대해 일본어 포함 비율을 확인하여 일본어일 가능성이 높은 블록만 번역 대상으로 선별합니다. (비디오에서 생성된 자막은 모두 번역 대상으로 간주)
번역 처리 (Gemini API):
번역 대상 일본어 자막 블록들을 JSON 형식으로 변환하여 Gemini API (gemini-2.0-flash 모델)에 번역을 요청합니다.
배치 처리: 번역 요청은 효율성을 위해 200개 블록 단위의 배치로 나누어 처리됩니다.
동시 처리: 최대 3개의 번역 배치 요청을 동시에 처리하여 속도를 향상시킵니다.
API 속도 제한 (Rate Limiting): 분당 API 요청 횟수가 15회를 넘지 않도록 자동으로 대기 시간을 조절합니다.
오류 처리 및 재시도:
API 응답 오류(예: RECITATION, SAFETY 등 내용 문제) 또는 JSON 파싱 오류 발생 시 해당 블록(또는 배치)은 실패로 기록됩니다.
내용 문제가 아닌 다른 이유(네트워크 오류, 파싱 오류 등)로 실패한 블록들은 자동으로 수집됩니다.
수집된 실패 블록들에 대해 배치 크기를 절반으로 줄여 (최소 1개까지) 번역을 재시도합니다. (최대 5회 재시도)
재시도 후에도 실패한 블록은 원본 일본어 텍스트를 유지합니다.
결과 저장:
최종적으로 번역된 내용(번역 성공 시 한국어, 실패 시 원본 일본어)을 조합합니다.
결과 자막 파일은 원본 비디오/SRT 파일과 같은 폴더에 [원본 파일명].srt 형식으로 저장됩니다. (기존 파일이 있다면 덮어씁니다.)
GUI:
Java Swing 기반의 데스크톱 인터페이스를 제공합니다.
파일 목록, 처리 로그, 진행률 표시줄을 통해 작업 상태를 시각적으로 보여줍니다.
"취소" 버튼을 통해 현재 진행 중인 파일의 처리를 중단할 수 있습니다. (Whisper 프로세스 강제 종료 및 번역 작업 인터럽트 시도)
기타:
윈도우 환경에서 콘솔 출력 시 발생할 수 있는 문자 깨짐 현상을 방지하기 위해 UTF-8 인코딩을 명시적으로 사용합니다.
공유해주시나요?
대화요?
자막 프로그램
남이 쓰게 만들려면 아직 손볼게 많아요... ㄷㄷ... - dc App
java로도 데스크톱 앱 프로그래밍을 하긴 하는구나
데탑앱은 주로 뭘로해? - dc App
하긴하지
팟플레이어가 아직은 대세임