CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·MaClien ·방탄소년당 ·일본산당 ·자전거당 ·안드로메당 ·개발한당 ·이륜차당 ·소셜게임한당 ·AI당 ·나스당 ·소시당 ·디아블로당 ·골프당 ·가상화폐당 ·육아당 ·야구당 ·젬워한당 ·위스키당 ·오른당 ·노젓는당 ·걸그룹당 ·클다방 ·IoT당 ·키보드당 ·PC튜닝한당 ·달린당 ·찰칵찍당 ·맛있겠당 ·패셔니앙 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·사과시계당 ·배드민턴당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·콘솔한당 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·갖고다닌당 ·이브한당 ·물고기당 ·도시어부당 ·FM한당 ·포뮬러당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·바다건너당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·여행을떠난당 ·터치패드당 ·트윗당 ·창업한당 ·VR당 ·시계찬당 ·WebOs당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

자료실

PC자료 자막 추출(Whisper)과 DeepL API 번역을 한번에 하는 파이썬 스크립트 11

23
2023-08-18 01:22:40 수정일 : 2023-08-28 10:19:56 58.♡.207.150
무재칠시

Whisper(stable-ts)를 사용하여 좋은 NVIDIA CUDA 지원 카드를 가진 로컬 PC에서 자막을 추출하고, 우리 나라에도 정식 서비스가 되기 시작한 DeepL API를 써서 번역할 수 있는 파이썬 스크립트를 소개합니다. 


Whisper가 가끔 유령 자막, 반복되는 자막, 무의미한 짧은 자막(예: - ) 등의 문제가 있고,  DeepL PC용 앱 클립보드 무료 번역 시 자막의 시각 정보가 깨지는 문제 등이 있어서 만들기 시작했었습니다. AWS CodeWhisperer/Bard/Bing Chat/ChatGPT의 도움을 받았습니다. 


개인적으로는 대부분 stable-ts를 썼고 GTX-1070Ti(8GB)라서 medium 모델을 사용했습니다. large-v2 모델은  whisper-ctranslate2로 8GB 내에서도 작동했습니다. 


(추가 2023-08-27) faster-whisper를 사용하면 추론 작업 시 float32나 float16이 아닌 int8로 작업하여 더 빠르고 더 적은 메모리로도 이용 가능하고, 해당 기능도 추가했습니다. 예를 들면, Notebook PC의 MX150 2GB VRAM + 4GB GPU 공유메모리인 상태에서도 medium 모델을 2~3배속 정도로 작동 시킬 수 있습니다.


104216.png i7-8550U / MX150 에서 faster-whisper로 medium모델을 이용할 때 GPU 메모리 현황



stable-ts는 demucs, vad, mel_first등 추가 옵션도 제공하는데 demucs는 긴 비디오의 경우 8GB를 초과합니다. 


[기능] 

  • stable-ts 혹은 whisper를 사용하여 영상/오디오에서 음성 추출 자막 생성(.SRT 포맷)
  • (추가 2023-08-27) faster_whisper도 이용 가능합니다(CTranslate2기반으로 int8 양자화 사용으로 노트북과 같이 적은 VRAM 메모리에서도 medium을 이용하거나, 8GB에서 large-v2 이용이 가능: cuDNN 및 cuBLAS 필요). 
  • 자막 중에 짧은 자막(예: 1글자)이나 중복되는 자막을 자동 삭제
  • 시각 정보는 제외하고 자막 텍스트만 API 번역(구글 클라우드, 네이버 파파고, DeepL API, DeepL-Rapidapi)하기
  • 타겟 언어(예:한글) 자막 생성 후 원어 자막도 따로 저장(.SRT 포맷)  
  • DeepL API 번역 사용량 표시(예: 300000 / 500000)  


[한계] 

  • stable-ts이 전반적으로 whisper보다 나은 편이지만, 그래도 누락되는 자막이 있습니다. 경우에 따라서는 whisper가 낫기도 합니다. 
  • 완벽한 것은 아니므로 업무적인 목적 등에 사용하려면 충분한 사전 검토가 필요해 보입니다. 


[설치 방법 및 소스, 사용법] 

  • CUDA, 파이썬, 파이토치 등의 설치가 필요합니다. 첨부의  README.md 혹은 아래 링크를 참조해 주세요. 
  • 첨부 파일 참조 혹은 https://github.com/sevengivings/subtitle-xtranslator
  • (venv) PS D:\python\subtitle-xtranslator > python .\subtitle-xtranslator --audio_language en --subtitle_language ko --translator deepl-api 'D:\video\sample video.mp4' 


[사용하는 모습의 동영상] 


[팁]

  • 비디오/오디오명과 같은 파일명을 가진 자막(.SRT)이 있는 경우 음성 추출 작업은 생략됩니다(덮어쓰지 않음). 원하는 다른 프로그램에서 자막만 추출한 후 (불필요한 시각정보를 제거하여 번역 텍스트 용량 줄이는 용도의) API 번역기로만도 이용도 가능할 것 같아요. 
  • whisper와 stable-ts 명령어 라인을 참고하여 비슷하지만 다른 부분(예: --language는 --audio_language로 변경)도 있습니다. 제공하지 않는 옵션은 whisper와 stable-ts를 호출하는 코드에서 직접 추가 가능합니다. 
  • 여러 개의 MP4를 나열하면 배치로 작동시킬 수 있습니다. GTX-1070Ti에서는 보통 8배속 정도라서 오래 기다려야 합니다. 
  • https://github.com/sevengivings/subtitle-extractor 는 DeepL API의 국내 서비스가 없을 때 만들었던 스크립트인데, stable-ts와 whisper, faster-whisper로 자막 추출 하고 .docx로 자막을 저장하여, 사용자가 직접 수동으로 .docx를 DeepL 앱을 이용하여 번역하면 자막을 만들 수 있습니다. 
  • 무료 이용 가능한 번역 용량은 DeepL API(개발자)는 월 50만자, DeepL-Rapidapi는 월 30만자 /100회 호출입니다. 네이버 파파고는 하루 1만자 정도였던 것 같습니다.    
  • 조절할 수 있는 옵션이 많아서 일일이 다 확인하기는 어려움이 있습니다.  그래도 condition_on_previous_text는 whisper의 자막이 이상하게 나올 때 써 볼 만하다고 합니다(stable-ts에서는 기본이 True인데, False로 설정).  
  • stable-ts는 버전 별로 추출되는 자막이 조금 다른 것 같습니다. 참고로 저는 주로 2.6.x 혹은 2.7.x을 이용했었습니다. stable-ts · PyPI  참조.  


[활용한 오픈소스]

  • https://github.com/openai/whisper 오리지널 Whisper
  • https://github.com/jianfch/stable-ts 주로 이용해 온 stable-ts, Whisper 기반 자막 생성 부분 개선  
  • https://github.com/DeepLcom/deepl-python DeepL 공식 파이썬 라이브러리


[기타 참조]

  • https://github.com/jhj0517/Whisper-WebUI Whisper를 웹UI로 제공(편리한 반면 한동안 2023.03 Whisper의 개선판으로 갱신을 안 해줘서 자막 품질에도 문제가 있었습니다. 아마 지금은 괜찮겠죠?)
  • https://github.com/guillaumekln/faster-whisper  8GB VRAM에서 large-v2 모델 가동(fp16이나 int8 precision, cuDNN - NVIDIA 개발자계정필요  및 cuBLAS 필요 - pip install nvidia-cublas-cu12) 자막 파일 제공 기능은 없는 듯 => (추가 2023-08-27)  subtitle-xtranslator.py에 자막 생성 기능도 구현 완료 
  • Softcatala/whisper-ctranslate2: Whisper command line client compatible with original OpenAI client based on CTranslate2. (github.com) 8GB VRAM large-v2 모델 작동되면서 명령어 구조가 whisper와 같아서 이용이 편리, 마이크로 입력 받은 소리로부터 실시간 자막 생성 하는 기능도 테스트 가능  
  • Subs AI - OpenAI Whisper로 동영상의 자막 자동 생성하기 | GeekNews (hada.io)
첨부파일 : subtitle-xtranslator-2023-08-18.zip
첨부파일 : subtitle-xtranslator-2023-08-27.zip
무재칠시 님의 게시글 댓글
SIGNATURE
황상(제자) 曰 "저는 머리도 나쁘고 앞뒤가 꽉 막히고 분별력도 모자랍니다."
다산 曰 "하지만, 넌 공부하는 자들이 갖고 있는 세가지 결점을 하나도 갖고 있지 않구나."

學子有大病三(학자유대병삼) : 배우는 자에게는 세가지 큰 병이 있을 수 있다. 

一敏於記誦(일민어기송)  : 첫째는 기억력이 뛰어난 결점 - 한번보면 척척 외우는 아이들은 그 뜻을 깊이 음미할 줄을 모른다.
二銳於述作(이예어술작) : 둘째는 글 짓는 재주가 좋은 결점 - 제목만 주면 글을 지어내지만 저도 모르게 경박하고 들뜨게 된다. 
三捷於悟解(삼첩어오해) : 세째는 이해가 빠른 결점 - 한마디만 말귀를 던져주면 금새 말귀를 알아듣지만 곱씹지 않으므로 깊이가 없다. 

둔하지만 공부에 파고드는 사람은 식견이 넓어지고 꽉 막혔지만 그것이 한번 뚫리면 거칠것이 없으며  답답하지만 꾸준히 연마하는 사람은 그 빛이 더욱 반짝인다.

저의 개인 블로그(소소한 리뷰) - http://imky.tistory.com
서명 더 보기 서명 가리기
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [11]
준파
IP 116.♡.13.129
08-18 2023-08-18 08:42:57
·
Whisper는 마침 관심갖고 이것저것 해보는 중인데 유용한 정보를 많이 공유해주셨네요👍
무재칠시
IP 49.♡.120.41
08-18 2023-08-18 09:16:20
·
@준파님 댓글 감사드립니다. 비디오를 MP3로 바꿔서 웹에 올린 후 코랩 등을 쓰는 경험담이 자주 들리는데 품질이 들쑥날쑥(뒷부분 자막 미생성 등)하다는 이야기가 많이 들렸습니다. stable-ts로 로컬 PC에서 작업하면 일정한 품질로 만들 수 있지 않을까 합니다.
감아차기
IP 123.♡.9.154
08-18 2023-08-18 09:53:39
·
일단 스크랩합니다. 감사합니다.
무재칠시
IP 49.♡.120.41
08-18 2023-08-18 21:46:00
·
@감아차기님 댓글 감사합니다~
BigNavel
IP 182.♡.197.155
08-18 2023-08-18 21:23:47
·
잘 됩니다. 감사합니다. 능력자시네요.
무재칠시
IP 49.♡.120.41
08-18 2023-08-18 21:47:19
·
@BigNavel님 다행입니다~ CodeWhisperer가 많이 안 쓰던 프로그래밍 언어 쓸 때 더 좋은 것 같습니다.
간실장
IP 1.♡.173.35
08-25 2023-08-25 14:26:30
·
cuda에 관심이 생기기 시작했는데.. 이런 것도 가능하군요..
잘 봐 보겠습니다.. 감사합니다.. ㅎㅎ
무재칠시
IP 58.♡.207.150
08-25 2023-08-25 22:25:47 / 수정일: 2023-08-25 22:25:59
·
@간실장님 댓글 감사합니다. 페이스북에서도 speech to text가 나왔다고 하는데 성능을 기대해 봐야겠습니다(https://github.com/facebookresearch/SONAR ).
무재칠시
IP 58.♡.207.150
08-27 2023-08-27 10:20:02
·
생각을 못했는데 노트북 NVIDIA MX150 2GB VRAM에서도 medium모델이 돌아가네요... 미디엄모델이면 충분히 쓸만합니다.

whisper-ctranslate2 --device cuda --model medium --compute_type int8 --output_format srt --language ko --output_dir d:\video d:\video\20220902_131203.mp4 식으로 하면 됩니다. GPU 전용메모리(2GB)는 거의 100%가까이 사용하고 GPU 공유메모리(4GB)도 아주 조금은 이용하는군요. 다만, 속도는 좀 느려서 2~3배속 가량으로 나옵니다(i7-8550U).
무재칠시
IP 58.♡.207.150
08-27 2023-08-27 15:05:40 / 수정일: 2023-08-27 15:06:21
·
https://github.com/sevengivings/subtitle-xtranslator 에서도 faster-whisper 를 이용할 수 있게 기능 추가 했습니다. 혹은 추가로 첨부한 8월27일차 소스 파일을 이용하여도 됩니다.
무재칠시
IP 49.♡.120.41
11-17 2023-11-17 13:08:42
·
간단한 WebUI도 추가했습니다. 윈도우11, WSL Ubuntu 및 Colab에서 테스트해 보았는데요, venv 환경을 갖춘 후에 python app.py를 실행하면 웹주소가 나와서 이후 브라우저에서 작업이 가능합니다. python subtitle-xtranslator.py 명령어 라인에 익숙하면 사실 별 필요는 없지만요... 참고로 Whisper WebUI도 faster-whisper도 지원하는 등 좋아졌더군요. stable-ts도 최신 버전을 적용해서 써보고 있습니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.