음성봇을 스텁부터 만든 이유 — 테스트로 설계를 먼저 굳히다

시리즈 · 음성봇 직접 만들기 — 실시간 음성봇의 뼈대를 바닥부터 만든 8편 기록입니다. 1. 끼어들기(barge-in) — 재생 중인 TTS를 실시간으로 끊는 법 2. "말이 끝났다"는 판단 — VAD 엔드포인터 3. 엔진을 코드 수정 없이 바꾸는 인터페이스 설계 4. 로컬 LLM 대화 두뇌와 도구 호출 루프 5. 매 턴 지연시간을 재는 이유 6. 브라우저 마이크에서 서버까지 — 오디오 프로토콜 7. 로컬 Whisper STT 연결하기 8. 스텁부터 만든 이유 — 테스트 우선 설계 (완결) — 지금 보는 글 돌아보며 시작하는 마지막 편 이 시리즈를 시작할 때부터 정해 둔 규칙이 하나 있었습니다. 진짜 음성 인식 모델과 진짜 합성 모델이 준비되기 전까지는, 그 둘을 흉내만 내는 가짜 엔진으로 전체 구조를 먼저 돌려본다는 규칙입니다. 여덟 편을 거치며 끼어들기 처리, 상태 흐름, 프로토콜, 엔진 인터페이스를 하나씩 다뤘는데, 그 모든 것이 사실 이 가짜 엔진 위에서 검증됐습니다. 지금 코드를 다시 열어 보면 그때는 별생각 없이 세운 규칙이 결과적으로 시리즈 전체의 진행 속도를 결정했다는 게 눈에 들어옵니다. 이번 편에서는 왜 굳이 가짜부터 만들었는지, 그리고 그 선택이 시리즈 전체에 어떤 영향을 남겼는지 정리하면서 이 시리즈를 마무리하려 합니다. 실제 모델을 기다리지 않기로 한 이유 음성봇의 핵심 로직은 사실 음성 인식이나 음성 합성 자체가 아닙니다. 사용자가 말을 시작했는지 끝냈는지 판단하는 상태머신, 합성 중에 끼어들기가 들어왔을 때 스트림을 멈추는 동시성 처리, 이벤트가 순서대로 오가는 흐름 제어 같은 것들이 훨씬 까다롭습니다. 반면 실제 인식·합성 모델은 무겁고 설치가 까다롭고 실행 속도도 느립니다. 이 두 가지를 한꺼번에 붙잡고 있으면 어려운 동시성 버그를 실제 모델의 로딩 시간과 뒤섞어 디버깅하게 됩니다. 모델이 느려서 반응이 늦은 건지, 상태머신이 잘못 짜여서 늦은 건지 구분이 안 되는 상황을 미...

About

AI 코더 랩 — Claude Code와 AI로 만드는 개인 자동화 도구

AI 코더 랩은 Claude Code와 AI 도구로 실제 작동하는 개인 자동화 봇·도구를 직접 만드는 과정을, 코드·스크린샷·터미널 로그까지 처음부터 끝까지 기록하는 블로그입니다. macOS·CLI·에이전트 환경에서 1년 이상 직접 사용하며 만든 결과물만 다룹니다.

왜 이 블로그를 운영하나요?

한국 개발자와 1인 메이커가 참고할 최신 AI 도구 자료는 영어 원문, GitHub Issue, Discord 로그에 파편화되어 있습니다. "디스코드 봇으로 카톡 캡처를 일정으로 등록한다", "음성 메모를 노션에 자동 저장한다" 같은 실전 워크플로우는 따라 만들 수 있는 한국어 가이드가 거의 없습니다.

직접 만들고 실행해 본 1차 정보를, 다음 사람이 검색 한 번에 그대로 따라 만들 수 있게 정리하는 것이 목표입니다.

운영 원칙

  • 1차 정보 우선 — 직접 만들고 실행하고 실패·재시도한 결과물만 글로 정리합니다.
  • 따라 만들 수 있는 빌드 가이드 — 목표 · 준비물 · 단계별 구현 · 실제 코드 · 실행 결과 순서로 작성합니다.
  • 스크린샷·터미널 로그 첨부 — 단순 설명이 아니라 실제 환경에서 동작한 증거를 함께 싣습니다.
  • 최신 상태 유지 — 글마다 작성일 · 최종 갱신일 · 사용한 도구 버전을 표시합니다.
  • 한국어 검색어 우선 — 정식 영문 명칭과 실제 한국어 검색어를 교차 배치합니다.

주로 다루는 영역

  • 메신저 연동 봇 : Discord · Telegram으로 URL·캡처·메모를 받아 자동 처리하는 봇
  • 지식관리 자동화 : Notion · Obsidian 자동 저장, 유튜브·문서 RAG 분석
  • macOS 도구 : 메뉴바 상태 모니터링 앱, launchd 백그라운드 실행, Apple Shortcuts
  • AI 워크플로우 : Claude Code, 로컬 LLM(Ollama), n8n 영상 자동화, 음성→텍스트 PWA
  • 업무 자동화 : Gmail 자동 분류, AI 뉴스레터, 회의록 자동 정리
  • 한국 특화 트러블슈팅 : 한글 IME 충돌 · 인코딩 · iCloud 동기화 · 국내 SaaS 연동

운영자 소개

1인 사이드 프로젝트로 운영합니다. 본업이 따로 있어 모든 글은 퇴근 후·주말에 정리됩니다. 본업 정보·자료는 일체 사용하지 않으며, 본 블로그의 모든 콘텐츠는 운영자의 개인 환경(macOS, Claude Code, Cursor, Obsidian 등)에서 직접 사용·실험·구현한 경험만을 기반으로 합니다.

콘텐츠 제작 방식

모든 글은 운영자가 직접 만들고 실행해 본 결과물입니다. AI 보조 도구(Claude, Google Gemini 등)는 초안 정리와 문장 다듬기 보조로만 사용하며, 최종적으로 운영자가 직접 검토·편집·검증하고 본인의 실제 사용 경험과 스크린샷·터미널 로그를 더해 발행합니다.

광고 안내

본 블로그는 Google AdSense를 통해 광고를 게재합니다. 추천하는 도구는 모두 운영자가 직접 사용·검증한 것이며, 별도의 제휴 수수료를 받지 않습니다. 향후 특정 도구의 제휴 프로그램에 참여하게 될 경우, 해당 본문 및 본 페이지에 명확히 고지하겠습니다.

최초 작성: 2026년 5월 · 최종 갱신: 2026년 6월

댓글

이 블로그의 인기 게시물

디스코드 구글캘린더 연동 봇 만들기: 카톡 캡처 OCR 자동 등록 시스템 구축

클로드 코드 비용 줄이는 법 — ollama 로컬 LLM 연동 (M3 맥북)

유튜브 노션 자동 저장 봇 만들기 — Claude CLI MCP + Discord 233일 운영기