← 글 모음

STT (ASR) & Translator of subtitles from JP to KR

일본어 영상에서 "자막을 추출" -> "한국어로 번역" 하는 파이프라이닝 구축 (claude, gemini, chatgpt를 이용)

  1. 자막을 추출
    1. 영상에서 wav 파일 추출
    2. 음성 전처리 htdemucs 로 음성 추출 (배경음 등 노이즈가 섞였을 경우 음성을 인지 못하는 경우가 빈번함, 파라메터 변경도 한계가 있어 음성을 추출함)
    3. faster-whisper (large-v3 모델) 자막 추출
    4. 언어 감지 (일반적으로 ja)
    5. 메타 데이터 저장 (json 으로 추출된 음성 이외에 정보를 채울 형태로 저장)
    6. 화자 분리, 성별 추출 (pyannote + F0 + NLP), 음성을 통해 성별을 추출한 뒤 구분이 어려우면 사용하는 단어를 통해 재검증.
    7. 위 저장한 메타 데이터에 갱신
  2. 한국어로 번역
    1. aya-expanse-abliterated:32b gguf 모델을 썼음 (이것저것 다 써봤지만 저게 체감상 최고)
    2. 성별 데이터를 참고하여, 한국어의 표현에 맞게 번역하기 (예, 언니/오빠/누나/형 등)
01:26:19 [INFO] ============================================================
01:26:19 [INFO] 일본어 영상 자막 추출 파이프라인 시작
01:26:19 [INFO]   입력: /mnt/d/input.mp4
01:26:19 [INFO]   출력: /code/subs/output
01:26:19 [INFO] ============================================================
01:26:19 [INFO] [Step 1] 음성 추출 시작: /mnt/d/input.mp4
01:26:19 [INFO] [Step 1] 기존 WAV 파일 발견, 추출 건너뜀: /code/subs/output/input.wav (221.4 MB)
01:26:19 [INFO] [Step 1.5] 음성 전처리 시작: /code/subs/output/input.wav
01:26:22 [INFO]   demucs pretrained 보컬 분리 시작 (htdemucs)...
100%|████████████████████████████████████████████████| 7259.849999999999/7259.849999999999 [17:52<00:00,  6.77seconds/s]
01:47:01 [INFO]   demucs pretrained 보컬 분리 완료: /code/subs/output/input_preprocessed.wav
01:47:01 [INFO] [Step 1.5] 전처리 완료 (demucs): /code/subs/output/input_preprocessed.wav (221.4 MB)
01:47:01 [INFO] [Step 2] 자막 추출 시작 (엔진: faster-whisper, 모델: large-v3)
01:47:18 [INFO] Processing audio with duration 02:00:55.850
01:47:32 [INFO] VAD filter removed 01:45:21.770 of audio
01:47:32 [INFO]   감지된 언어: ja (확률: 100.00%)
01:51:08 [INFO] [Step 2] 자막 추출 완료: 440개 구간
01:51:09 [INFO] 메타데이터 저장 완료: /code/subs/output/input_metadata.json
01:51:09 [INFO]   [중간 저장] 자막 메타데이터 → /code/subs/output/input_metadata.json
01:51:09 [INFO] [Step 3] 화자 분리 + 성별 추출 시작 (pyannote + F0 + NLP)

(취소 후 재시작)

02:19:08 [INFO] [Resume] 기존 메타데이터 발견 → Step 3부터 재개: /code/subs/output/input_metadata.json
02:19:08 [INFO] [Step 3] 화자 분리 + 성별 추출 시작 (pyannote + F0 + NLP)
02:30:47 [INFO]   [3-1] 화자 분리 완료: 6명
02:30:47 [INFO]   [3-2] 자막 구간 매칭 및 화자별 텍스트 수집 중...
02:30:47 [INFO]   [3-3] F0 및 텍스트 기반 성별 판별 중...
02:31:13 [INFO]     SPEAKER_02: F0(344.2Hz) 명확함 → female
02:31:31 [INFO]     SPEAKER_04: F0(211.9Hz) 명확함 → female
02:31:35 [INFO]     SPEAKER_00: F0(223.2Hz) 명확함 → female
02:31:43 [INFO]     SPEAKER_05: F0(142.2Hz) 애매함 → NLP 적용 (male)
02:31:47 [INFO]     SPEAKER_03: F0(291.1Hz) 명확함 → female
02:31:49 [INFO]     SPEAKER_01: F0(210.1Hz) 명확함 → female
02:37:24 [INFO] 메타데이터 저장 완료: /code/subs/output/input_metadata.json
02:37:24 [INFO]   [갱신 저장] 성별 포함 메타데이터 → /code/subs/output/input_metadata.json
02:37:24 [INFO] [Step 4] SRT 파일 생성 시작: /code/subs/output/input.srt
02:37:24 [INFO] [Step 4] SRT 파일 생성 완료: 119개 자막
02:37:24 [INFO] ============================================================
02:37:24 [INFO] 파이프라인 완료!
02:37:24 [INFO]   오디오:     /code/subs/output/input.wav
02:37:24 [INFO]   메타데이터: /code/subs/output/input_metadata.json
02:37:24 [INFO]   자막 (SRT): /code/subs/output/input.srt
02:37:24 [INFO] ============================================================

퀄리티는 꽤 우수한편, 하지만 시간이 오래 걸린다

성능 좋은 디바이스가 있으면 좋겠다... 💵 💰

마지막 수정