quest_PoC

실적발표 음성 → AI 브리핑 PoC

AI Business Briefing & Intelligence Publisher의 확장 PoC입니다. 기존 프로젝트는 PDF/Excel/뉴스 URL만 다뤘는데, 이 PoC는 실적발표(컨퍼런스콜) 음성을 새로운 입력 채널로 추가해 STT(Whisper) → 리스크 브리핑까지 이어지는 흐름을 검증합니다.

실행 방법 (Google Colab 권장)

  1. 이 저장소를 GitHub에 올린 뒤, notebooks/earnings_call_briefing_poc.ipynb를 Colab에서 엽니다.
    • Colab 주소창에 직접 열기: https://colab.research.google.com/github/rubilisa08/quest_PoC/blob/main/notebooks/earnings_call_briefing_poc.ipynb
  2. 위에서부터 순서대로 셀을 실행합니다. GPU가 필요 없습니다 (Whisper small 모델은 CPU 런타임에서도 충분히 빠릅니다).
  3. 5번 셀(ANTHROPIC_API_KEY 입력)에서:
    • Colab 좌측 “🔑 Secrets”에 ANTHROPIC_API_KEY를 등록해두면 자동으로 사용됩니다.
    • 키가 없으면 그냥 Enter를 누르세요 — 기존 프로젝트의 MOCK_LLM 방식과 동일하게 결정론적 목업 로직으로 자동 전환되어, 키 없이도 전체 파이프라인이 끝까지 실행됩니다.
  4. 로컬(Jupyter)에서 돌리고 싶다면 pip install openai-whisper gTTS anthropic jiwer pydub jupyter nbconvert와 ffmpeg 설치가 필요합니다. (이 저장소와 무관한 새 폴더에 클론해 처음부터 따라 해보고 확인한 목록입니다 — jupyter/nbconvert가 빠지면 노트북 자체를 실행할 방법이 없어서 추가했습니다.)
  5. 로컬 실행 명령: jupyter nbconvert --to notebook --execute --inplace notebooks/earnings_call_briefing_poc.ipynb
  6. 8번 셀(모델 크기 비교)은 medium 모델(~1.5GB, CPU에서 5~8분 소요)을 추가로 돌립니다. 빠르게 훑어보고 싶다면 이 셀은 건너뛰어도 나머지 파이프라인엔 영향이 없습니다.

무엇을 검증하는가

  1. AI 모델 선정 및 실행: OpenAI Whisper(STT)를 실제로 실행해 한국어 음성을 텍스트로 변환 (선정 이유는 노트북 3번 섹션, 실측 비교는 8번 섹션 참고)
  2. PoC 흐름: 대본(텍스트) → gTTS(음성 합성) → Whisper(STT) → Claude(리스크 추출, 기존 프로젝트와 동일한 “원문 인용 기반” 설계 + 코드 레벨 grounding/스키마 검증) → 타임스탬프 근거가 붙은 브리핑
  3. 개선 효과 검증:
    • 정량: STT 문자 유사도·WER, 처리 시간 대 수작업 청취 예상 시간 비교, Whisper 모델 크기별 정확도-속도 트레이드오프
    • 정성: 기존 프로젝트가 Excel 경로로 찾아낸 리스크를 음성 경로로도 동일하게 찾아내는지, 그리고 재무 프로필이 다른 시나리오에서 오탐 없이 동작하는지(9번 섹션)
  4. 확장 기능 (10~12번 섹션): 리스크별 근거 오디오 재생(Human-in-the-loop 검증), 발표/Q&A 구간 분리, 음성-재무제표 수치 십자 검증 — 세 가지 모두 실제로 구현하고 실행 결과로 검증했습니다.

실행 결과 (실측, 2026-09-27 로컬 CPU 실행 — grounding 버그 수정 + 확장 기능 반영 후)

실행 결과 스크린샷

지표 결과
STT 문자 유사도 89.1% (WER 57.1%, 한국어 어절 분리 특성상 참고치 — 자세한 설명은 VALIDATION_RESULTS.md)
핵심 재무 숫자 인식 5개 중 5개 (이전엔 4/5 — 공백-무관 매칭으로 완전 해결)
Excel 경로 vs 음성 경로 리스크 탐지 일치 ✅ 동일 (단기 유동성 부족, 높은 부채비율)
리스크 근거 타임스탬프 정확도 버그 발견 후 수정 완료 — 이전엔 “부채총계”(37초) 등 엉뚱한 발언을 근거로 잘못 표시하고 있었음, 지금은 실제 “부채비율은 233%” 발언(1분 8초)을 정확히 가리킴
처리 시간 절감률 64.5~83.8% (실행마다 CPU 부하 차이로 변동 — 범위로 정직하게 기록)
Whisper 모델 비교 small(29.3~64.0초, 89.1%) vs medium(305~486초, 91.0%)
다중 시나리오 검증 3개 시나리오 전체 통과
전문용어 인식 개선 “손익”·”총계” 오인식 해결 / “질의응답”·”매출채권” 등은 아직 남음 (정직하게 기록)

리스크별 근거 오디오를 실제로 재생하는 기능을 만들다가(10번 섹션), 근거 타임스탬프 자체가 잘못된 발언을 가리키던 버그를 발견해 고쳤습니다 — 자세한 전/후 비교와 전체 세그먼트 원본 데이터는 VALIDATION_RESULTS.md의 0-1번·6번 섹션에 그대로 실었습니다. 실행된 노트북 원본(모든 셀 출력 포함)은 notebooks/earnings_call_briefing_poc.ipynb에서 그대로 볼 수 있습니다.

정확도·보안을 위해 넣은 코드 레벨 가드

확장 기능 (10~12번 섹션)

세 기능 모두 실행 결과로 검증했고, 이 중 첫 번째 기능을 만드는 과정에서 위 grounding 버그를 발견했습니다. 이번에 구현하지 않은 나머지 확장 아이디어(실시간 스트리밍, 진짜 화자 분리, 도메인 파인튜닝, 톤/감정 분석, GTM, 엔터프라이즈 연동)는 ROADMAP.md에 분석으로 정리했습니다.

실제 기업 공개 데이터로도 검증함 (13번 섹션)

지금까지는 가상 대본으로만 검증했는데, SK하이닉스 2026년 2분기 실적발표 보도자료를 발췌해 같은 파이프라인에 실제로 넣어봤습니다. STT 문자 유사도 88.8%로 가상 대본과 거의 동일했고, 목업 리스크 로직은 예상대로 아무 리스크도 찾지 못했습니다(이 보도자료엔 부채비율/유동비율 언급이 아예 없음 — 목업 로직이 좁게 설계된 것이지 버그가 아닙니다). 자세한 내용과 실제 데이터에서 새로 관찰된 오인식 패턴은 VALIDATION_RESULTS.md의 0-2번 섹션에 있습니다.

왜 AI-project_MVP와 같은 재무 숫자를 쓰는가

sample_data/financial_sample.xlsx(부채비율 233%, 유동비율 88.9%)와 동일한 숫자로 가상 실적발표 대본을 작성했습니다. 이렇게 하면 “같은 재무 데이터를 텍스트 경로(Excel)로 넣었을 때와 음성 경로(STT)로 넣었을 때 같은 리스크가 나오는가”를 직접 비교할 수 있어, 이번 확장이 기존 파이프라인과 일관된 결과를 내는지 검증하기 좋습니다.

한계