# 매일 쌓이는 회의 녹음을 옵시디언에 자동 저장하기

- 작성자: [모래](https://community.clauders.ai/member/imported-member-ogiFLBxbXp)
- 공간: [Claude Code MVP 공장](https://community.clauders.ai/cto)
- 게시: 2026-05-24
- 연재: [Claude Code MVP 공장 시즌 8](https://community.clauders.ai/series/cto-season-8) 2/3편
- 태그: #CTO #OT과제
- 주소: https://community.clauders.ai/cto/post/%EB%A7%A4%EC%9D%BC-%EC%8C%93%EC%9D%B4%EB%8A%94-%ED%9A%8C%EC%9D%98-%EB%85%B9%EC%9D%8C%EC%9D%84-%EC%98%B5%EC%8B%9C%EB%94%94%EC%96%B8%EC%97%90-%EC%9E%90%EB%8F%99-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0-d95cd1db-194f-8aee-880d-5e5b2fc0477f

---

## 소개

클로바노트로 회의녹음을 했는데 무료 계정에 한계가 있어 무료로 만들어봐야겠다는 생각을 했습니다. 그리고 인터뷰, 회의, 강의 등 매일 쌓이는 음성 녹음 파일을 빠르게 텍스트로 정리하고 옵시디언에 자동 저장하는 워크플로우를 만들어 나만의 WIKI로 만들면 좋겠다는 생각이 들었습니다. 처음에는 단순히 "화자 구분된 전사"가 목표였지만, 진행하면서 **음성 → 전사 → 요약 → 마인드맵 → 저장 → 아카이빙**까지 한 줄 명령으로 자동화하는 개인용 음성 에이전트(voice-agent)로 발전했습니다.

매일 1~3개씩 쌓이는 m4a 파일을 일일이 수동 정리하기엔 시간이 너무 걸렸고, 외장하드에 그냥 쌓아두면 영영 다시 안 보게 되더라고요. "녹음만 해두면 알아서 정리되는 시스템"이 필요했습니다.

## 진행 방법

**사용 도구:** Claude Code(메인), MLX Whisper(로컬 전사), Google Gemini 2.5 Flash(병렬 전사), Anthropic Claude API(요약·마인드맵), ffmpeg(오디오 처리), Obsidian(저장소), Markmap(마인드맵 렌더링)

1단계 — 화자 분리 시도와 좌절 (Day 1)

처음에는 pyannote-audio로 화자 분리(diarization)부터 시도했습니다.

```
이 인터뷰 파일 변환 요청하려 하는데 목소리 구분해서 분석해줄 수 있어?
```

HuggingFace 토큰 발급, 모델 카드 동의까지 했는데 1시간짜리 파일에서 계속 실패했습니다.

```
얼마나 걸려?
8분 넘었어
아직도 안끝났어?
화자분리가 안되는 이유가 뭐야?
```

3명 화자 지정, WAV 변환, diarize-only 모드, CPU-only 모드까지 다 해봤지만 결국 **exit code 137 (메모리 부족, OOM)** 으로 5시간 사투 끝에 포기. 맥북 메모리로는 1시간 분량 화자 분리가 불가능하다는 결론에 도달했습니다.

대신 Whisper 단독 전사로 우회했습니다.

```
그냥 화자 구분하지 말고 전사해줘
```

2단계 — 병렬 전사로 속도 개선

MLX Whisper로 1시간 분량을 합리적 시간에 전사할 수 있게 됐지만, 여러 파일이 쌓이면 느렸습니다. 그래서 Gemini API로 청크 병렬 전사를 추가했습니다.

```
이거 병렬로 작업 가능해?
```

ffmpeg로 5분 단위 분할 → 모든 청크를 동시에 Gemini API 호출하니 **1시간 분량이 20~30초**로 단축됐습니다.

3단계 — 마인드맵 자동화

요약본만으로는 전체 구조가 한눈에 안 들어와서 마인드맵을 붙였습니다.

```
마인드맵으로도 만들 수 있어?
마인드 크게 보고싶어
```

처음엔 Mermaid mindmap을 썼는데 옵시디언에서 확대가 안 돼서 Markmap으로 갈아탔습니다. Markmap 플러그인 자동 설치, 노드 기본 펼침(expand all) 옵션 자동 주입까지 Claude Code가 알아서 처리해줬습니다.

4단계 — 환각 대참사와 안전장치 통합 (가장 큰 교훈)

1시간 55분짜리 라이브 영상을 전사했는데 "그럴듯한 강의 내용"이 나왔습니다. 그런데...

```
1시간 55분인데 왜 클로드코드 이야기는 없지?
```

확인해보니 **원본 파일이 사실상 무음**이었는데(비트레이트 < 8 kbps, mean_volume < -50 dB) Gemini가 통째로 가짜 내용을 환각으로 만들어낸 것이었습니다. 옵시디언에 가짜 정보가 저장되는 끔찍한 상황이었죠.

```
파일에 음성이 없네 ㅠㅠ
안전장치 통합해줘
```

이 사건 이후 `audio_quality.py` 모듈을 메인 파이프라인 2단계로 통합했습니다.

python

```
# 검증 기준 (첫 60초만 분석해서 빠른 사전 검증)
- 비트레이트 < 8 kbps → 에러 (사용자 확인 후 진행)
- 비트레이트 < 16 kbps → 경고
- mean_volume < -50 dB → 에러 (무음)
- mean_volume < -35 dB → 경고  
- max_volume < -30 dB → 에러 (마이크 캡처 실패 의심)
```

이후 동일 사고는 0건이었습니다.

최종 워크플로 (한 줄 명령)

bash

```
voice 파일.m4a
```

위 명령어 한 줄로 다음 7단계가 자동 실행됩니다.

1. 해시 계산 (중복 검사)
2. **음성 품질 검증** (환각 방지 안전장치)
3. 전사 (MLX 로컬 또는 `--fast` Gemini 병렬)
4. Claude API 요약 (강의/회의/메모 템플릿 자동 선택)
5. 마인드맵 자동 생성 (Markmap)
6. Obsidian Vault 저장
7. 외장하드 완료 폴더로 자동 아카이빙

### 결과와 배운 점

**성과:** 하루 만에 강의 6편 + 미팅 1편 = 총 7개 파일을 백그라운드 병렬 처리로 완주한 적도 있습니다. 녹음만 해두면 정말로 알아서 정리되는 시스템이 됐습니다.

**시행착오에서 배운 점:**

첫째, **"되는 것 같은데 안 되는 것"이 제일 무섭다**는 것. 화자 분리는 5시간을 날렸지만 그래도 "안 된다"는 결론을 빨리 줬습니다. 진짜 위험했던 건 환각 대참사였습니다. 무음 파일에서 그럴듯한 1시간 55분짜리 가짜 강의록이 나왔는데, 제목이 그럴듯해서 하마터면 그대로 옵시디언에 영구 저장될 뻔했습니다. **AI 결과물은 입력 단계에서 sanity check가 들어가야 한다**는 교훈을 비싸게 배웠습니다.

둘째, **로컬 vs 클라우드 이중 엔진의 가치**. MLX Whisper 로컬은 느리지만 환각이 적고, Gemini 청크 병렬은 빠르지만 환각 위험이 있습니다. 상황에 따라 골라 쓸 수 있게 둘 다 유지한 게 결과적으로 좋은 선택이었습니다.

셋째, **세션 간 컨텍스트 공유의 어려움**. "이전에 어떻게 작업했는지 몰라?"라는 질문을 여러 번 했습니다. 결국 표준 워크플로를 README와 시스템 메시지에 명문화하니 일관성이 생겼습니다. AI 에이전트와 일할 때는 **인간이 매번 설명하지 않아도 되도록 워크플로를 문서화하는 것이 핵심**이라는 걸 체감했습니다.

**나만의 꿀팁:**

- 긴 음성 파일은 무조건 청크 병렬 처리. 1시간 → 30초는 정말 게임 체인저.
- 마인드맵은 요약본을 다시 LLM에 입력해서 생성하면 구조가 깔끔하게 나옵니다.
- 옵시디언에 저장할 때는 파일명 컨벤션(`YYMMDD_제목.md`)을 정해두면 나중에 검색·통합 분석이 쉬워집니다.
- 외장하드 자동 아카이빙은 미연결 시 해당 단계만 스킵하도록 설계해야 다른 곳에서도 워크플로가 깨지지 않습니다.

**앞으로의 계획:**

지금은 CLI 파이프라인이지만 진짜 "에이전트"로 키우려면 자율 판단이 필요합니다. 음성 파일 폴더 자동 감시(watcher), 사용자 의도에 따른 템플릿 자동 선택, 과거 노트 검색 후 관련 컨텍스트 자동 첨부 같은 방향을 고민 중입니다. 특히 **여러 대화록을 시계열로 묶어서 "이 주제에 대한 내 생각은 어떻게 변해왔는가"를 자동 분석**해주는 기능을 붙이고 싶습니다.

**도움이 필요한 부분:**

- 화자 분리를 로컬에서 가볍게 돌리는 방법 (클라우드 API 외 옵션). 추천 모델이나 경량화 노하우가 있으시면 공유 부탁드립니다.
- 옵시디언 마인드맵을 더 인터랙티브하게 만드는 플러그인 추천도 환영합니다.
