GitHub - kunchenguid/autopreso: Realtime speech to presentation. Let the whiteboard whiteboard itself.
Service

GitHub - kunchenguid/autopreso: Realtime speech to presentation. Let the whiteboard whiteboard itself.

kunchenguid
2026.05.11
·GitHub·by 임근석/부산/NLP
#Agent#Excalidraw#LLM#OpenAI#Speech-to-Text

핵심 포인트

  • 1autopreso는 발표자의 음성을 실시간으로 텍스트화하고 이를 AI agent가 Excalidraw 캔버스에 시각적으로 표현하며 조작하는 핸즈프리 프리젠테이션 웹 애플리케이션입니다.
  • 2이 시스템은 마이크 입력을 Speech-to-Text 모델(Moonshine, OpenAI Realtime)로 전사한 후, 이를 해석한 agent 모델(OpenAI, Codex, Ollama)이 Excalidraw 장면을 실시간으로 그리고 편집하도록 지시합니다.
  • 3autopreso는 로컬 서버로 구동되며 Moonshine과 Ollama를 사용하여 완전 오프라인 환경에서도 실행 가능하며, 설정이 로컬에 저장되는 무료 오픈 소스 도구입니다.

autopreso는 사용자의 음성을 통해 Excalidraw 캔버스에 실시간으로 드로잉, 레이블링 및 요소 재배치를 수행하는 로컬 웹 애플리케이션입니다. 이 도구는 발표자가 말하는 내용에 따라 에이전트가 Excalidraw 씬을 편집하여 핸즈프리 프레젠테이션을 가능하게 하는 것을 목표로 합니다.

핵심 방법론 및 아키텍처:

autopreso의 핵심은 마이크 입력, 음성-텍스트 변환(STT), 그리고 Excalidraw 캔버스를 조작하는 에이전트 간의 실시간 상호작용에 있습니다. 그 아키텍처는 다음과 같은 흐름으로 구성됩니다:

  1. 오디오 입력 (mic): 사용자의 음성 오디오(24kHz)는 웹 브라우저의 마이크를 통해 캡처됩니다.
  2. 음성-텍스트 변환 (STT): 캡처된 오디오는 Moonshine (로컬 솔루션) 또는 OpenAI Realtime (클라우드 기반)을 통해 텍스트 청크로 변환됩니다. Moonshine은 darwin-arm64 및 darwin-x64 플랫폼용 선택적 네이티브 사이드카로 제공됩니다.
  3. 화이트보드 에이전트 (agent): 변환된 텍스트 청크는 OpenAI (GPT 모델), Codex 또는 Ollama와 같은 언어 모델 기반 에이전트에게 스트리밍됩니다. 이 에이전트는 Vercel AI SDK를 활용하여 Excalidraw 씬을 조작하기 위한 '툴 호출(tool calls)'을 생성합니다.
  4. Excalidraw 씬 (Excalidraw scene): 에이전트의 툴 호출은 Excalidraw 캔버스에 적용되어 실시간으로 드로잉, 레이블 변경, 요소 배치 변경 등의 작업을 수행합니다. Excalidraw는 화이트보드 캔버스, 씬 모델 및 렌더링을 담당합니다.

작동 모드:

  • "staging" 모드: 사용자가 클라이언트 측에서 초기 콘텐츠(예: 제목, 의제)를 스케치하는 준비 단계입니다. 이 콘텐츠는 에이전트에게 초기 컨텍스트로 제공됩니다.
  • "live" 모드: 캔버스 제어권이 에이전트에게 넘어가고, OpenAI Realtime 전사는 스테이징 텍스트 및 레이블에 편향되어 실시간으로 전사 스트림이 시작됩니다.

주요 기능 및 특징:

  • 핸즈프리 작동: 사용자의 음성만으로 Excalidraw 씬을 편집하므로 수동 클릭이 필요 없습니다.
  • 모델 유연성: 사용자는 OpenAI API key, Codex 구독 또는 Ollama를 사용하여 선호하는 에이전트 모델을 선택할 수 있습니다.
  • 완전 로컬 실행 가능: Moonshine (STT)과 Ollama (에이전트)를 함께 사용하면 인터넷 연결 없이도 모든 기능을 로컬에서 실행할 수 있습니다.
  • 보안: Express 및 WebSocket 서버는 127.0.0.1에 바인딩되어 로컬 머신 외부로 노출되지 않습니다.
  • 설정 영속성: 모델, API 키, STT 엔진 선택 및 에이전트 지침은 ~/.config/autopreso/settings.json에 저장되어 재시작 후에도 유지됩니다.
  • 웜업 루프: 프레젠테이션 시작 시 에이전트가 스테이징 콘텐츠와 에이전트 지침을 미리 학습하여 첫 문장부터 원활하게 작동합니다.
  • 비용 추정: live Session cost card는 OpenAI 기반 모델의 토큰 및 오디오 비용을 추정합니다.
  • 자동 감지: 첫 실행 시 환경 변수(OPENAI_API_KEY, CODEX_CLI, OLLAMA_MODEL)를 기반으로 기본 에이전트 및 STT 제공자를 자동으로 설정합니다. Codex CLI auth가 OLLAMA_MODEL보다, OLLAMA_MODEL이 OPENAI_API_KEY보다 우선순위를 가집니다.

설치 및 사용법:

autopreso는 npx를 통해 즉시 실행하거나, npm을 통해 전역으로 설치하거나, 소스 코드에서 직접 실행할 수 있습니다.

  • $ npx autopreso
  • $ npm install -g autopreso
  • $ git clone https://github.com/kunchenguid/autopreso.git && cd autopreso && npm install && npm start

로컬 서버는 기본적으로 http://127.0.0.1:3210에서 실행됩니다. 사용자는 웹 인터페이스에서 마이크, STT 모델, 에이전트 모델 및 에이전트 지침을 설정한 후 "Start Preso" 버튼을 눌러 프레젠테이션을 시작합니다.