프로젝트 목록으로
AI씨엠병원 · 2026.05 ~

Voice Server — AI 회의록 전사 파이프라인

화자분리 → STT → 요약 → 그룹웨어 전송 4단계 AI 파이프라인

담당 — 파이프라인 설계·구현 및 아키텍처 진화 주도

음성 파일 업로드부터 화자분리, STT, LLM 요약, 그룹웨어 전송까지 수행하는 회의록 전사 서버입니다. GPU 처리를 원격 API(WhisperX·Claude 래퍼)로 위임하는 thin orchestrator로 아키텍처를 진화시켰고, 그 과정을 ADR 6건으로 추적했습니다.

회의록 본문은 사용자 패스워드 기반 PBKDF2 → AES-256-GCM으로 암호화되어 서버조차 복호화할 수 없는 zero-knowledge에 가까운 설계입니다.

접속 안내

병원 내부망 전용 시스템이라 외부 접속은 불가합니다. 위 스크린샷은 실제 운영 화면입니다.

스크린샷

실제 운영/실행 화면을 직접 캡처했습니다.

업로드 — 회의록 보호 패스워드(암호화)와 WhisperX 원격 설정 패널1 / 5
업로드 — 회의록 보호 패스워드(암호화)와 WhisperX 원격 설정 패널

배경과 문제

매주 1~2시간짜리 부서장 회의의 회의록을 수기로 작성하는 부담이 컸습니다. 음성 파일만 올리면 화자분리 → STT → 요약 → 그룹웨어 전송까지 자동으로 처리하는 파이프라인을 구축했습니다.

GPU(12GB VRAM) 1대라는 제약 속에서 시작해, 처리 단계를 원격 API로 위임하는 방향으로 아키텍처를 진화시켰고 그 과정을 ADR 6건으로 추적했습니다.

핵심 성과

  • queued → converting → diarizing → asr → summarizing → sending 상태머신
  • 단방향 outbound HTTPS Push + Bearer/HMAC 서명, 지수백오프 재시도
  • PII 보호 — 음성 파일 즉시 삭제, 발화 텍스트 로그 미기록
  • torch·CUDA 제거로 의존성 수 GB → 수백 MB 경량화

아키텍처 & 설계 포인트

  • queued → converting → diarizing → asr → summarizing → sending → done 상태머신 — 단계별 처리 시각을 DB에 기록해 병목 추적
  • 아키텍처 진화: 로컬 pyannote/faster-whisper GPU 처리 → 원격 WhisperX API 위임(ADR-0004) → 요약도 원격 Claude 래퍼 API 위임(ADR-0005) → torch·CUDA 의존성 제거로 수 GB → 수백 MB의 thin orchestrator로 경량화
  • 회의록 본문 암호화(ADR-0006) — 업로드 시 입력한 패스워드로 PBKDF2 → AES-256-GCM 암호화. 패스워드는 어디에도 저장하지 않아 서버조차 본문을 복호화할 수 없는 zero-knowledge에 가까운 설계
  • 그룹웨어와 단방향 outbound HTTPS Push만 사용(NAT 뒤에서도 동작) — Bearer 토큰 + HMAC-SHA256 서명, 실패 시 지수백오프 5회 재시도
  • PII 보호 — 음성 파일은 잡 종료 즉시 삭제, 발화 텍스트는 로그에 기록하지 않음(job_id까지만)
  • asyncio.Queue 단일 워커 직렬 처리로 공유 GPU 자원 보호, 그룹웨어와 DB·자격증명 분리(ADR-0002)

AI(Claude Code) 활용

  • cm_groupware의 Harness Engineering 패턴 이식 — hooks 3종(env-guard·git-add-guard·ruff 자동 포맷), 슬래시 커맨드 3종(/review-pipeline·/review-security·/deploy-check)
  • "로컬 전량 처리 → 원격 위임 → thin orchestrator"로의 리팩터링 전 과정을 ADR로 기록 — 폐기한 대안과 트레이드오프까지 추적 가능

기술 스택

PythonFastAPIWhisperXpyannote.audioSQLAlchemyMySQLAES-256-GCMHMAC-SHA256