Search

25. OpenAI Whisper를 활용한 영상 요약

섹션
8. Workflow + Agent: 영상 요약 에이전트

OpenAI Whisper를 활용한 영상 요약

프로젝트 목적

비디오 요약 시스템

비디오 파일에서 Whisper 모델로 음성 추출
OpenAI 제공 STT 엔진 활용
MP3, WAV 음성 파일뿐만 아니라 비디오도 처리 가능
음성만 추출하여 텍스트로 변환

실제 활용 사례

강의 자료 제작에 사용하는 코드
촬영 → 비디오 파일 생성 → Whisper 실행 → 개요 작성 → 강의 자료 활용
현재 제공되는 강의 자료도 이 방식으로 제작

구현 방법

LangChain을 사용하지 않는 Whisper 처리 방식

Whisper 용량 제한(5MB 또는 50MB) 때문에 헬퍼 함수 구현
큰 파일을 작은 사이즈로 나누어 whipser를 여러번 호출해야함

Whisper Parser 지원 형식

다양한 확장자 지원
오디오 파일 및 mp4, mpeg 비디오 파일 지원
Azur OpenAIWhisperParserOpenAIWhisperParser 존재

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 활용 예정