-
[5월 3주차-5/20(2)]🎙️ Whisper + GPT-4로 회의록 자동 생성 시스템 만들기 (요약부터 교정, 워드 저장까지)Why Not SW CAMP 5기/수업 기록 2025. 5. 20. 15:19
회의 내용을 자동으로 요약하고, STT 오류를 교정한 뒤, 마크다운/워드 문서로 저장해주는 자동화 파이프라인을 Python + OpenAI API로 구현해보았습니다.
🧩 프로젝트 개요
회의록을 작성하다 보면 시간이 오래 걸리고, 말이 빠르거나 누가 말했는지 혼동되는 경우가 많습니다. 그래서 다음과 같은 전체 플로우를 자동화해봤습니다:
STT 기반 회의록 → 요약 → 발언별 교정 → 마크다운 및 워드 저장
🧪 사용 기술
- Python
- pandas, json, python-docx
- OpenAI GPT-4o API
- Whisper STT (사전 생성된 CSV 사용)
- dotenv (API 키 관리용)
🧱 전체 구조
flowchart TD A[CSV 기반 회의 STT 파일 로딩] --> B[화자 이름 매핑] B --> C[요약용 JSON 포맷 생성] C --> D[GPT-4o로 요약 요청] D --> E[요약 결과 저장 (Markdown)] E --> F[발언별 오류 교정 (GPT-4o)] F --> G[교정 결과 JSON 저장] G --> H[Markdown 변환] G --> I[Word 문서 생성]
1. 회의록 불러오기 및 화자 매핑
import pandas as pd df_rttm = pd.read_csv("audio/싼기타_비싼기타_final.csv", sep='|') name_dict = { "SPEAKER_00": "AI", "SPEAKER_01": "홍길동", } df_rttm["name"] = df_rttm["speaker_id"].apply(lambda x: name_dict[x])
Whisper STT 결과에서 "SPEAKER_00"과 같이 표기된 부분을 사람이 읽기 쉬운 이름으로 바꿉니다.
2. 요약용 포맷 구성 & GPT 요청
meeting_note_txt = df_rttm[['start', 'end', 'name', 'text']].to_json(orient='records', force_ascii=False) system_prompt = f''' 너는 회의 내용을 요약하는 봇이다. 아래 회의록을 읽고 주요 내용을 요약하라. # 회의 제목 ## 주요 내용 ## 참석자별 입장 ## 결정 사항 =============== 이하 회의록 =============== { meeting_note_txt } '''
이 프롬프트를 OpenAI GPT-4o에 보냅니다.
response = client.chat.completions.create( model='gpt-4o', messages=[{"role": "system", "content": system_prompt}] ) summary = response.choices[0].message.content.strip()
3. 요약 결과 저장
with open('audio/guitar_summary.md', 'w', encoding='utf-8') as f: f.write(summary)
📂 결과물: guitar_summary.md
4. 녹취 교정: 문장 하나씩 GPT에게 요청
for row in meeting_note_dict: correction_prompt = f''' 너는 STT 오류를 교정하는 봇이다. 회의 요약문: {summary} 원본: {row['text']} ''' response = client.chat.completions.create(...) row['corrected_text'] = response.choices[0].message.content.strip()
💡 왜 요약문을 함께 제공하나요?
화자가 바뀌었거나, 문맥이 이상한 경우도 GPT가 더 잘 파악할 수 있도록 도와주기 위해서입니다.
5. 다양한 포맷으로 저장
✔ JSON
with open('audio/guitar_meeting_note_corrected.json', 'w', encoding='utf-8') as f: json.dump(meeting_note_dict, f, ensure_ascii=False, indent=4)
✔ 마크다운
for row in meeting_note_dict: md_template += f"- **{row['name']}** : {row['corrected_text']}\n"
✔ Word 문서 (python-docx)
document = Document() document.add_heading('회의록', level=1) ... document.save('audio/guitar_meeting_note_corrected.docx')
📌 정리
단계 설명
1. CSV 로딩 STT 결과 불러오기 2. 화자 이름 매핑 SPEAKER → 사람 이름 3. GPT 요약 요청 전체 회의 내용을 요약 4. 발언 교정 각 문장별 오류 수정 5. 결과 저장 JSON, Markdown, Word 형식
✨ 마무리하며
단순한 STT 텍스트를 넘어서, 회의 문서화 전과정을 자동화하는 데 성공했습니다. GPT-4의 문맥 파악 능력과 Whisper의 STT 출력, Python의 편리한 처리 능력이 만나 강력한 워크플로우를 구축할 수 있었어요.
'Why Not SW CAMP 5기 > 수업 기록' 카테고리의 다른 글
[5월 3주차-5/22]🧠 LangChain과 GPT-4o를 활용한 대화형 AI 시스템 구축 실습 (2) 2025.05.22 [5월 3주차-5/21]📈 GPT + Streamlit + yfinance로 주식 정보 챗봇 만들기 (2) 2025.05.21 [5월 3주차-5/20(1)]AI 기반 문서 요약 및 회의록 자동화 시스템 (1) 2025.05.20 [5월 1주차-5/9]🌍 Streamlit으로 만드는 CO2 배출량 대시보드 (2) 2025.05.09 [5월 1주차-5/8]🎈 Python으로 웹 대시보드 만들기- Streamlit (1) 2025.05.08