프로젝트

[KT AIVLE SCHOOL] 3차 미니 프로젝트 회고

수진97 2025. 11. 15. 21:07

안녕하세요~!

이번 3차 미니 프로젝트에서는 AI 강사 Agent 시스템을 구축 하였는데요.

오늘도 회고 포스팅을 진행해 보도록 하겠습니다~!

 

1. 미니 프로젝트 상세

1 ~ 3일 차 : AI 강사 Agent 시스템 구축

1) 비즈니스 문제 정의 및 목표

- 기업 내에서 다양한 형태의 자료가 지속적으로 생산되고 있는 가운데, 자료의 대부분은 정적 자료 형태 즉, ppt나 pdf인 경우가 많아 활용성이 제한되는 경우가 많음. 디지털 전환 시대로, 빠르게 공유할 수 있는 교육 영상이 필요.

 

- 그러나 자료는 풍부하지만, 교육 영상 제작은 번거롭다는 단점이 있음. 시간 지연, 비용 부담, 일관성 부족(발표자마다 톤과 스타일이 달라 전달력이 떨어짐) 등의 비즈니스 제약 사항을 해결하기 위해 AI 강사 Agent 시스템을 구축함으로써 PPT를 영상으로 바로 자동 제작하여 업무 효율을 높임.

 

 

 

2) 핵심 기술

- 멀티모달  LLM(OpenAI / GPT-4o-mini) 기반 ppt  내용(텍스트, 이미지, 표, 그래프 등) 분석 및 요약, 발표용 스크립트 생성

- 멀티모달 TTS(OpenAI / GPT-4o-mini-tts)로 음성 변환하여 자연스러운 내레이션 생성 후 슬라이드 + 음성을 결합해 mp4 영상 생성

- LangGraph 활용 AI Agent 구축

 

 

3) 목표 

* 미션 1) AI 강사 Agent v1.0 

=> 1 page의 ppt 파일 인식 후 텍스트, 표, 이미지를 각각 저장

=> 텍스트, 표, 그림 등의 정보로부터 LLM을 활용해 내용 요약 및 정리(정리한 내용을 기반으로 설명문 생성)

=> 설명문을 TTS를 통해 음성으로 변환

=> 음성과 슬라이드 스냅샷 이미지를 합성해 영상 제작

=> 전체를 Agent 그래프로 엮기

 

 

* 미션2) AI강사 Agent v2.0

모듈 고도화 1

- 톤 보정 고도화 작업 : 강의 목소리, 톤 조절, 강의 스타일 등 지침 추가

- 정보 분해 작업 : 여러 슬라이드를 저장하고 관리, 불필요한 정보 제거 및 제목 추출

- 페이지별 내용 생성 작업 : 슬라이드 내 정보뿐만 아니라 부연 설명 위한 검색 기능 추가

- 강의 스크립트 생성 작업 : 전체 강의 내용을 참조하여 강의 흐름 구상, 현재 페이지 강의 스크립트 작성

 

 

모듈 고도화 2

- 음성 변환 : 강의 목소리, 톤 조절 프롬프트 기반 음성 변환

- 영상 제작 : 각 슬라이드 강의를 전체 슬라이드 강의 영상으로 합치기

 

=> 마지막에 전체 Agent 그래프 구축 후 엮고, gradio 인터페이스를 활용해 웹 화면에 연결하여 보여주는 것까지 제작

 

 

 

* 공통 미션 제외 팀 내 자체적으로 수행한 고도화 3

- 다국어 지원 : 강의 영상에서 영어, 일본어, 중국어 등 다양한 언어로도 지원할 수 있도록 제작

- 톤 일관성 유지 : 슬라이드마다 미묘하게 달라지는 음색, 억양 등 해결하기 위해 톤 보정 고도화 추가작업 수행 

- 강의 내용 요약 리포트와 강의 PDF 파일 출력 기능 추가 : 사용자가 원하는 형식의 강의 PDF 파일 다양하게 선택할 수 있도록 제작

 

 

 

* 전체 구조

 

 

 

 

4) 기술 상세

- 정보 분해  

아래와 같이 슬라이드별 정보 분해를 SlideData에 업데이트 후 State에도 반영

기존 슬라이드 정보 state를 SlideData 클래스로 개별 저장

 

 

 

- 페이지별 내용 생성

외부 정보 검색(SerpAPI) & LLM 기반 설명문 생성

=> 순서 : [슬라이드 텍스트] -> 제목 추출 ->  Google(SerpAPI) 검색 -> LLM 모델 요약 -> 설명문 생성

 

 

 

- 강의 스크립트 생성

앞뒤 슬라이드 간 문맥 연결성 유지(prev_context 변수 활용)

슬라이드 타입별 세분화 처리 및 불완전 문장 보정

기타 LLM이 응답이 없거나 실패 시 Exception 처리와 결과 구조화(슬라이드 별 스크립트 파일 저장 후 state에 누적)

구분 세부 내용
첫 슬라이드 조건 :  idx = 0
  -. 안내 멘트 & 소개 멘트 추가 예시) “안녕하세요. 오늘은 ~”
중간 슬라이드 앞뒤 슬라이드를 고려하여 맥락 연결
  -. 각 슬라이드 별 주제에 맞게 멘트 생성
마지막 슬라이드 조건 : idx = len() - 1
  - “이상으로 강의를 마치겠습니다. 감사합니다.” 마무리 멘트 추가

 

 

 

 

- 음성 변환

TTS_MODEL을 사용해 슬라이드 스크립트를 실시간으로 음성파일(.mp3)로 변환 후 저장

생성된 음성 파일 경로를 현재 슬라이드 데이터(state["slides"])에 저장하고, 다음 단계에서 활용할 수 있도록 state 갱신

 

 

 

- 톤 보정 고도화 작업(목소리 일관성 유지)

저음의 목소리로 영상 음성이 출력되다가 다음 슬라이드에서 갑자기 하이톤의 목소리가 튀어나오는 등의 문제를 해결하기 위해 톤 보정 고도화 작업 수행

모델(TTS_MODEL)과 음성(voice)을 고정시켜 슬라이드 별 호출마다 동일한 합성 파라미터를 사용하도록 함.

이를 통해 모델이 매번 새로운 억양이나 발화 스타일 생성 방지하고, 전체 영상에서 톤의 일관성 유지 확보에 성공

 

 

 

- 강의 영상 다국어 지원

별도의 번역 API를 사용하는 대신, 기존에 사용하던 LLM 프롬프트를 수정하여 다국어 번역 기능을 구현

한국어로 생성된 스크립트를 목표 언어(lang_code)로 번역하는 translate_text() 메서드 구현

 

 

 

- 영상 제작

현재 상태에서 슬라이드와 선택된 인덱스에 해당하는 슬라이드 이미지 & 오디오 경로 추출

Render_mp4 를 활용하여 생성된 tts와 이미지를 하나의 mp4파일로 제작하여 출력

 

 

 

 

- 강의 내용 요약 및 강의 PDF 출력

전체 스크립트로부터 핵심 요약본을 생성 후, 요약 스크립트로부터 음성을 생성하고, 이 음성을 바탕으로 마무리 요약 영상 제작

사용자가 요약된 강의 영상을 빠르게 파악하기 위해 PDF 문서로 활용할 수 있도록 기능 추가

강의 리포트와 요약 리포트 2가지로 PDF 파일 출력

 

 

 

 

 

- 실행 결과 with Gradio

 

 

 

5) 기대 효과

- 즉시성 : 안내 자료를 당일에 바로 교육 영상으로 제작해 활용 가능.

- 효율성 : 사내 보고 및 발표 준비 시간 대폭 단축

- 표준화 : 발표 톤과 길이를 자동으로 조절하여 전달 품질을 균일화 함.

 

 

 

 

2. 느낀 점 

이번 프로젝트는 조원 모두가 고도화에 많은 공을 들이며 완성도를 끌어올린 정말 의미 있는 프로젝트였습니다.

지금까지 미니 프로젝트를 진행해 오면서 다른 팀원들과의 팀워크도 물론 나쁘지 않았지만, 이번 프로젝트는 특히나 팀원 모두가 적극적으로 참여해 최적의 결과물을 만들기 위해 노력했던 것 같아 더더욱 보람 있고 즐겁게 임할 수 있었습니다.

 

프로젝트 초반에는 고도화에 들어가기에 앞서 각자 기본적인 AI 강사 Agent v1.0을 직접 구축해 보는 시간을 가졌고, 이후 코드 리뷰 시간을 통해 서로의 구현 내용을 공유했습니다. 이 과정에서 제 코드가 팀원들에게 이슈없이 깔끔하게 결과물을 도출한 코드로 인정받을 수 있었던 점이 개인적으로 매우 뿌듯했습니다. 

 

고도화 단계에서는 팀원들이 역할을 분담해 하나씩 기능을 책임지고 진행하였는데,

그중 저는 팀 회의에서 '톤 보정 아이디어'를 제안했고, 해당 의견이 채택되어 제가 톤 보정 고도화를 도맡아 진행하게 되었습니다. 그 결과 다음 슬라이드로 넘어갈 때 갑자기 목소리 톤이 바뀌는 문제를 해결했고, 전체 강의 영상이 일관된 톤으로 자연스럽게 이어지도록 만드는데 큰 기여를 할 수 있었습니다. 

 

또한 제가 담당한 또 다른 고도화는 슬라이드 간의 앞뒤 맥락을 고려해 자연스러운 흐름의 강의 스크립트를 구성하는 고도화 작업이었는데, 이 부분 역시 성공적으로 구현하여 최종 결과물에 반영할 수 있었습니다.

 

이번 프로젝트는 기능 고도화를 진행하며 제 기술적 역량에도 한층 향상할 수 있는 계기가 되었을 뿐만 아니라, 팀원 간의 협업을 통해 팀워크의 시너지가 좋은 결과물을 도출하는데 이렇게 큰 역할을 한다는 점도 깨달을 수 있었습니다.