OpenAI Whisper를 활용한 영상 요약
프로젝트 목적
비디오 요약 시스템
•
비디오 파일에서 Whisper 모델로 음성 추출
•
OpenAI 제공 STT 엔진 활용
•
MP3, WAV 음성 파일뿐만 아니라 비디오도 처리 가능
•
음성만 추출하여 텍스트로 변환
실제 활용 사례
•
강의 자료 제작에 사용하는 코드
•
촬영 → 비디오 파일 생성 → Whisper 실행 → 개요 작성 → 강의 자료 활용
•
현재 제공되는 강의 자료도 이 방식으로 제작
구현 방법
LangChain을 사용하지 않는 Whisper 처리 방식
•
Whisper 용량 제한(5MB 또는 50MB) 때문에 헬퍼 함수 구현
•
큰 파일을 작은 사이즈로 나누어 whipser를 여러번 호출해야함
Whisper Parser 지원 형식
•
다양한 확장자 지원
•
오디오 파일 및 mp4, mpeg 비디오 파일 지원
•
Azur OpenAIWhisperParser와 OpenAIWhisperParser 존재
OpenAI vs AzureOpenAI 선택
•
OpenAIWhisperParser 사용 결정
•
OpenAI: Tier 1에서 분당 요청 500회 증가
•
Azure OpenAI: 요청 증가를 위한 별도 승인 필요 (1주 이상 소요)
•
OpenAI: 5달러 결제로 Tier 1 획득 가능
워크플로우 vs 에이전트 선택
워크플로우 선택 이유
•
순서가 명확한 경우 워크플로우 적합
•
예측이 어려운 경우 에이전트 적합
•
현재 작업: 비디오 → Whisper → LLM 순서가 명확
•
따라서 워크플로우가 더 적합
코드 구현
상태 정의
•
file_path: 비디오 파일 경로
•
transcript: Whisper로 추출한 텍스트
•
outline: LLM으로 요약한 내용
클래스 선언
•
LLM 클래스 선언
•
OpenAI API 키를 .env에 저장하여 별도 전달 불필요
•
Whisper 클래스도 OpenAI 모델이므로 동일한 환경 변수 사용
노드 생성
•
공식 문서에 따라 오디오 blob 생성 후 OpenAI 파일로 전달
•
Documents는 리스트가 아닌 이터레이터(제너레이터)
•
transcript 저장 방식으로 처리
개요 생성 노드
•
기본 메시지 대신 LCEL 문법 사용
•
스트링 파서 추가로 LLM 실행 결과를 문자열로 변환
•
invoke를 통해 transcript가 outline prompt에 입력
테스트 및 결과
테스트 비디오
•
이전 강의의 네이버 뉴스 스크래핑 워크플로우 비디오 사용
•
파서 제공 기능으로 분할 및 텍스트 추출
•
Vrew 편집기 사용으로 인한 1, 2, 3 편집 포인트 표시
결과 확인
•
Transcript에서 음성 인식 결과 확인
•
영어로 개요 생성 (프롬프트 변경으로 한국어 가능)
Notion 연동
Notion 설정
•
페이지 생성 후 API 키 발급
•
Connections에서 API 권한 확인
•
데이터베이스 생성 및 연결
•
프로퍼티명을 Title로 변경
API 구현
•
Notion API는 POST 요청으로 데이터베이스 입력
•
데이터베이스 ID 사용
•
상태에 데이터베이스 ID와 타이틀 추가
•
Notion 업로드 노드 생성
실행 결과
•
음성 인식 완료 후 한국어 개요 생성 성공
•
Notion에 성공적으로 업로드
•
프롬프트 변경으로 한국어 개요 작성 확인
개선 필요사항
마크다운 포맷팅 문제
•
현재 마크다운 문법으로 출력
•
Notion에서 볼드체, 불릿 포인트 등 제대로 표시되지 않음
•
함수로 로직 구현보다는 MCP 사용이 더 효율적
•
다음 강의에서 MCP 활용 예정