
SpeakNote – 실시간 강의 AI 주석 시스템 고도화 개발 기록
Speak-Note
Transformer는 Google Brain에서 제안한 딥러닝 아키텍처로, Attention 메커니즘을 사용하여 시퀀스 데이터를 처리합니다.
speaknote.site
이 글은 SpeakNote라는 서비스를 기획하고, 구현하고, 실제로 운영 가능한 구조로 만들기까지의
개발·인프라·운영 기록을 모아두기 위한 프로젝트 로그입니다.완성된 결과를 설명하기보다는,
왜 이런 구조를 선택했는지, 어디서 막혔는지, 어떤 시행착오를 거쳤는지를 중심으로 기록합니다.
SpeakNote는 어떤 서비스인가
SpeakNote는 강의 음성을 실시간으로 인식(STT) 하고,
이를 AI가 문맥에 맞게 정제·요약한 뒤,
강의 슬라이드(PDF) 위에 즉시 주석으로 배치해주는 웹 기반 시스템
단순히 “음성을 텍스트로 바꾸는 도구”가 아니라,
- 강의 자료(PDF)
- 실시간 발화(STT)
- AI 요약 및 문맥 보존
- 시각적 주석 배치
를 하나의 화면, 하나의 흐름으로 통합하는 것을 목표로 합니다.
이 프로젝트를 시작하게 된 이유
기존의 STT 기반 학습 도구들은 대부분 다음과 같은 한계를 가집니다.
- STT 결과가 정제되지 않은 생(raw) 텍스트 형태로 제공됨
- 강의 자료와 분리되어 있어 사용자가 직접 옮겨 적어야 함
- 실시간 강의 환경에서는 정보가 빠르게 휘발됨
- 다중 사용자 환경이나 실제 서비스 운영은 거의 고려되지 않음
SpeakNote는 이 문제를 단순 기능 추가가 아니라,
“실시간 강의 환경 자체를 다시 설계한다” 는 관점에서 접근했습니다.
핵심 아이디어 한 줄 요약
강의 음성과 문서를 분리해서 처리하지 말고,
실시간으로 결합해 ‘주석’이라는 형태로 고정시키자.
이 한 문장이 SpeakNote 전체 설계의 출발점이었습니다!
서비스 구조 개요 (간단 버전)
SpeakNote는 3개의 독립된 서버로 구성된 구조를 가집니다.
- Frontend (Next.js)
강의 자료 렌더링, 주석 UI, 드래그앤드롭, 실시간 표시 - Application Server (Spring Boot)
WebSocket 기반 실시간 통신, 세션 관리, Google STT 연동 - AI Server (FastAPI)
문서 전처리, RAG 기반 주석 생성, 비동기·병렬 작업 처리
이 구조는 단순히 기술 분리를 위한 것이 아니라, 지연 최소화, 장애 격리, 향후 확장을 전제로 설계하려 합니다.
이 티스토리 시리즈의 목적
이 블로그에서는 SpeakNote를 만들면서 겪은 과정들과 고도화 과정에서의 개발 기록들을
다음과 같은 관점으로 기록할 예정입니다.
- “이 기능은 왜 이렇게 만들었을까?”
- “이 구조는 실제 운영에서 문제가 없을까?”
- “무료/저비용 인프라로 어디까지 가능한가?”
- “팀 프로젝트를 실서비스 수준으로 끌어올리려면 무엇이 필요한가?”
SpeakNote 개발 기록 모음 (계속 업데이트)
아래는 SpeakNote 고도화 과정과 초기 개발 과정에서 작성한 개별 기술 기록들
각 글은 하나의 문제 또는 선택을 중심으로 작성했습니다.
인프라 / 배포 / 운영
실시간 처리 / 아키텍처
주석 시스템 / 데이터 설계
각 링크는 글이 추가되는 대로 업데이트하려 합니다.
팀 프로젝트로서의 SpeakNote
SpeakNote는 개인 프로젝트가 아니라,
팀 단위로 실제 서비스를 만들겠다는 목표 아래 진행된 프로젝트였습니다.
각 팀원은 단순 역할 분담을 넘어서,
- 구조 설계
- 기술 선택
- 문제 해결 과정
에 직접 참여했습니다. 팀 프로젝트의 speaknote 는 완성이 되었으며,
이제는 마음이 맞는 친구들끼리 사업화를 생각하며 Poc 단계에서 부터의 "고도화" 개발 기록을 남기려 합니다.
마치며
SpeakNote는 아직 “완성된 서비스”라기보다는
계속 진화 중인 시스템입니다.
이 글은 그 과정의 시작점이며,
앞으로의 모든 기술 기록은 이 페이지를 기준으로 연결하려 합니다!
'Project > speak-note' 카테고리의 다른 글
| [Project : SpeakNote] 실시간 강의 음성 기반 AI 주석 시스템 (0) | 2025.12.04 |
|---|