31장. 멀티모달, 비전·음성 모델
이 장의 목표 텍스트 외에 이미지·음성을 다루는 로컬 모델을 어떤 게 있고 어떻게 시작하는지 정리합니다.
스크린샷 분석·차트 해석·받아쓰기까지.
31.1 큰 그림
| 종류 | 입력 → 출력 | 대표 모델 |
|---|---|---|
| VL / Vision | 이미지 + 텍스트 → 텍스트 | Qwen2.5-VL, Gemma 3, LLaVA |
| OCR 특화 | 이미지 → 텍스트 | GOT-OCR, dots.ocr |
| STT (음성인식) | 오디오 → 텍스트 | Whisper, Parakeet |
| TTS (음성합성) | 텍스트 → 오디오 | XTTS, Kokoro, F5-TTS |
| Audio LLM | 오디오 → 텍스트 (이해) | Qwen2.5-Omni |
| 이미지 생성 | 텍스트 → 이미지 | (Stable Diffusion 류) |
이 책은 비전·STT·TTS 중심.
31.2 비전 모델 — VL (Vision-Language)
이미지를 입력으로 받아 텍스트로 답하는 모델.
활용:
- 스크린샷 → 설명
- 차트·표 → 데이터 해석
- 영수증 → JSON
- UI 디자인 피드백
- 손글씨 OCR 보조
대표 모델
| 모델 | 크기 | 특징 |
|---|---|---|
| Qwen2.5-VL-7B | 7B | 가볍고 빠름 |
| Qwen2.5-VL-32B | 32B | 차트·문서·UI 강함 |
| Qwen2.5-VL-72B | 72B | 최상위 품질 |
| Gemma 3 (27B 등) | 4~27B | 다국어, Google |
| LLaVA-1.6-34B | 34B | 오픈소스 클래식 |
| InternVL | 8B~76B | 큰 모델 강세 |
| MiniCPM-V | 8B | 작지만 강함 |
31.3 VL 모델 받기·돌리기 — LM Studio
LM Studio 검색에서 “VL” 필터.
Qwen2.5-VL-7B-Instruct (MLX 4bit)
Chat 탭에서 모델 로드 후, 하단 입력창 옆 클립 아이콘으로 이미지 첨부.
[클립 📎] → 이미지 선택
입력: "이 그래프에서 가장 큰 매출 월을 알려줘"
응답이 흐르면 성공.
31.4 VL — Ollama
$ ollama pull qwen2.5vl:7b
CLI에서 이미지 첨부:
$ ollama run qwen2.5vl:7b
>>> 다음 이미지의 내용을 설명해줘. /Users/kjj/Desktop/chart.png
또는 API:
$ curl http://localhost:11434/api/generate -d '{
"model": "qwen2.5vl:7b",
"prompt": "이 이미지를 설명해줘",
"images": ["BASE64_인코딩된_이미지_문자열"]
}'
31.5 OCR 특화 모델
일반 VL이 안 잡는 정밀 OCR(특히 한국어·표·수식)은 OCR 특화 모델 이 더 정확합니다.
| 모델 | 특징 |
|---|---|
| GOT-OCR 2.0 | 표·수식·악보까지 |
| dots.ocr | 한국어·다국어 강함 |
| Tesseract | 클래식, 빠름, 정확도는 보통 |
문서 디지털화·영수증 자동화 등에서 일반 VL과 조합.
31.6 STT — Whisper
음성을 텍스트로.
OpenAI Whisper가 사실상 표준.
설치
$ brew install whisper-cpp # 또는
$ pip install openai-whisper
사용 (whisper-cpp)
$ whisper-cli -m models/ggml-large-v3.bin \
-f input.m4a -l ko -otxt -of result
| 옵션 | 의미 |
|---|---|
-m | 모델 파일 |
-l ko | 한국어 |
-otxt | 텍스트로 저장 |
MLX 버전
$ pip install mlx-whisper
$ mlx_whisper input.m4a --model mlx-community/whisper-large-v3-mlx
맥에서 더 빠름.
Whisper 모델 크기
| 모델 | 한국어 정확도 | 속도 |
|---|---|---|
tiny | 낮음 | 매우 빠름 |
base | 보통 | 빠름 |
small | 좋음 | 보통 |
medium | 좋음 | 보통 ★ |
large-v3 | 최상 | 느림 ★ |
turbo | 매우 좋음 | 빠름 (large-v3 대비 절반 시간) |
권장: 회의록은
large-v3또는turbo.
31.7 TTS — 텍스트를 음성으로
| 모델 | 특징 |
|---|---|
| Kokoro | 빠르고 가벼움, 다국어 |
| XTTS v2 | 화자 클로닝, 영어 강함 |
| F5-TTS | 자연스러움 우수 |
| Bark | 표현력 있지만 느림 |
한국어 자연스러운 TTS는 아직 영어 대비 약합니다. Kokoro 가 한국어 지원도 빠르게 좋아지는 중.
빠른 시작 (Kokoro)
$ pip install kokoro
from kokoro import KPipeline
pipe = KPipeline(lang_code='ko')
gen = pipe("안녕하세요. 로컬 음성 합성입니다.", voice='kf_v0')
for i, (graphemes, phonemes, audio) in enumerate(gen):
# audio: numpy array
...
31.8 Audio LLM — 음성을 그대로 이해
STT를 거치지 않고 음성을 직접 입력으로 받는 모델.
Qwen2.5-Omni-7B (텍스트·이미지·오디오 멀티모달)
활용:
- 사장님 음성 메모 → 정리된 요약
- 받아쓰기 + 이해 한 번에
아직 신생 분야, 모델 무겁고 변동 큼.
31.9 활용 — 비전 + RAG
스크린샷·문서 사진을 모은 사내 자료를 OCR → 청크 → RAG 로 만들 수 있습니다.
[PDF / 스크린샷]
↓
[GOT-OCR or VL 모델로 텍스트화]
↓
[청크 + 임베딩 → 벡터 DB]
↓
[일반 RAG (26장)]
회사 보안문서·옛 스캔자료를 검색 가능하게 만드는 흔한 패턴.
31.10 비전 모델 메모리 감각
64GB 맥 기준 권장.
| 모델 | Q4 메모리 | 추천 |
|---|---|---|
| 7B-VL | ~5GB | ✅ 빠름 |
| 32B-VL | ~18GB | ✅ 균형 |
| 72B-VL | ~40GB | ⚠ 빡빡 |
비전 입력은 prefill 시간이 길어지는 경향. 큰 이미지는 1024px 정도로 축소 후 입력 권장.
31.11 자주 만나는 문제
이미지 첨부했는데 답이 텍스트만 보고 답함
- 비전 가능한 GGUF 인지 확인 (vision projector 파일 포함)
- LM Studio가 vision 어댑터를 자동 로드했는지 확인
- 모델이 VL 인지 (Qwen2.5-VL ≠ Qwen2.5)
한국어 OCR 정확도가 낮음
- 일반 VL 보다 OCR 특화 모델 시도
- 이미지를 가로 1500px 이상으로
- 흑백·고대비 전처리
Whisper가 영어로 받아씀
-l ko명시- 첫 30초가 영어로 시작하면 잘못 감지함 → 한국어 구간으로 잘라서
이 장에서 기억할 한 가지
로컬에서도 비전·음성이 됩니다.
- VL 모델: Qwen2.5-VL / Gemma 3
- 음성: Whisper (대용량) + Kokoro·F5-TTS
다 합치면 회의 자동 받아쓰기 → 요약 → 보고서 까지 로컬에서 가능합니다.
손으로 해볼 것
1. VL 모델 첫 사용
$ ollama pull qwen2.5vl:7b
LM Studio에서 모델 로드 후 스크린샷 한 장을 첨부하고 설명을 요청해 보세요.
2. Whisper로 회의록 받아쓰기
$ brew install whisper-cpp
$ whisper-cli -m models/ggml-large-v3.bin -f meeting.m4a -l ko -otxt
내 회의 녹음 5분짜리를 텍스트로 만들어 보세요. 이게 39장(회의록 요약 파이프라인)의 입력이 됩니다.
여기까지가 5부의 끝 입니다.
여기까지 마치면 로컬 AI는 더 이상 “채팅 도구“가 아닙니다. 내 업무에 직접 연결되는 인프라가 됩니다.
다음 부(6부)에서는 깊이 들어가는 심화 주제 — 파인튜닝, 직접 양자화, 안전성 — 를 다룹니다. 선택 학습입니다.