ํต์ฌ ์์
- ๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์ GPT-5.5์ ๊ฐ์ ๋จ์ผ ๋ชจ๋ธ์ด ์๋๋ผ ๋ณ๋๋ก ์ค์ผ์คํธ๋ ์ด์ ๋ ๋ค ๊ฐ์ง ๋ชจ๋ธ์ ๋๋ค. whisper.cpp๊ฐ ์์ฑ์, VLM(LLaVA ๋๋ Llama 3.2 Vision)์ด ์ด๋ฏธ์ง๋ฅผ, LLM์ด ํ ์คํธ ์ถ๋ก ์, Piper๊ฐ ์์ฑ ์ถ๋ ฅ์ ๋ด๋นํฉ๋๋ค. ์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ์ ๋ ฅ์ ์ฌ๋ฐ๋ฅธ ๋ชจ๋ธ๋ก ๋ผ์ฐํ ํ๊ณ ์ถ๋ ฅ์ ๊ฒฐํฉํฉ๋๋ค.
- Llama 3.2 Vision 11B๋ ๋จ์ผ ๋ชจ๋ธ๋ก VLM๊ณผ ํ ์คํธ LLM ๋ ์ญํ ์ ๋ชจ๋ ๋์ฒดํ ์ ์์ต๋๋ค. ํ ์คํธ์ ์ด๋ฏธ์ง๋ฅผ ๋์์ ์์ฉํ๋ฉฐ ๋จ์ผ ๋จ๊ณ์์ ์ค๋ช ๊ณผ ์ถ๋ก ์ ๋ชจ๋ ์ฒ๋ฆฌํฉ๋๋ค โ VRAM์ ~15 GB(๋ณ๋ ๋ชจ๋ธ)์์ ~8 GB(๋จ์ผ Llama 3.2 Vision 11B)๋ก ์ค์ฌ์ค๋๋ค.
- ์ ์ฒด ์คํ ์ต์ ํ๋์จ์ด: RTX 4070 12 GB ๋๋ Apple M5 Pro 36 GB. RTX 3060 12 GB๋ ์ ํ๋ ๋ฒ์ (Llama 3.3 8B ๋์ Phi-4, ๋๋ ์์ฐจ ๋ชจ๋ธ ๋ก๋ฉ)์ ์คํํ ์ ์์ต๋๋ค โ ๊ธฐ๋ฅ์ ํ์ง๋ง ๋ ๋๋ฆฝ๋๋ค.
- ๋ค์ฏ ๊ฐ์ง ์ค์ฉ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ณต์ก์ฑ์ ์ ๋นํํฉ๋๋ค: ์์ฑ ๋ฌธ์ ๋ถ์, ์์ฑ ์ํธ์์ฉ์ ํตํ ์๊ฐ์ Q&A, ์ฌ๋ผ์ด๋ ๋ถ์๊ณผ ๊ฒฐํฉ๋ ํ์ ์ ์ฌ, ๋ก์ปฌ ํ๋ฉด ์ฝ๊ธฐ ๋๊ตฌ๋ฅผ ํ์ฉํ ์ ๊ทผ์ฑ ๋๊ตฌ, ๋ก์ปฌ ๋ณด์ ์นด๋ฉ๋ผ ๋ถ์.
- ํ์ฉ ๊ฐ๋ฅํ ์ฑ๋ฅ์ ์ํด์๋ ๋น๋๊ธฐ ์ค์ผ์คํธ๋ ์ด์ ์ด ํ์์ ๋๋ค. ์ค๋์ค์ ์ด๋ฏธ์ง ์ ๋ ฅ์ด ๋ชจ๋ ์์ ๋ STT์ ๋น์ ์ ๋ณ๋ ฌ๋ก ์คํํ ์ ์์ต๋๋ค โ ํ ์คํธ LLM์ ๋ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ํ ๊ฒฐํฉ๋ ์๋ต์ ์์ฑํฉ๋๋ค.
- LLM ์ถ๋ ฅ์ TTS๋ก ์คํธ๋ฆฌ๋ฐํ๋ฉด ์ธ์ง ์ง์ฐ์ด 0.3โ0.7์ด ์ค์ด๋ญ๋๋ค. LLM์ด ๋๋จธ์ง ์๋ต์ ์์ฑํ๋ ๋์ ์ฒซ ๋ฒ์งธ ์์ฑ๋ ๋ฌธ์ฅ๋ถํฐ ์ค๋์ค ์์ฑ์ ์์ํฉ๋๋ค.
- ์ด๊ฒ์ GPT-5.5๊ฐ ์๋๋๋ค. ๋ณ๋ ๋ชจ๋ธ์ "์ด์์"๋ฅผ ๋ง๋ญ๋๋ค โ ๋น์ ๋ชจ๋ธ์ ์ค๋ช ์ด ํ ์คํธ๋ก LLM์ ์ ๋ฌ๋์ด ์ผ๋ถ ํฌ๋ก์ค ๋ชจ๋ฌ ์ถ๋ก ์ด ์์ค๋ฉ๋๋ค. ๋ณต์กํ ๋ฉํฐ๋ชจ๋ฌ ์์ ์์์ ํ์ง์ ํ์ํ ํ๋ก ํฐ์ด ๋ชจ๋ธ์ ๋นํด ๋ฎ์ง๋ง, ๊ตฌ์กฐํ๋ ๋ฌธ์์ ๋ช ํํ ์ฌ์ง ์์ ์๋ ์ ํฉํฉ๋๋ค.
๋น ๋ฅธ ์ฌ์ค
- ์ ์ฒด ์คํ ์ด VRAM: ~15 GB (Whisper 3 GB + LLaVA 7B 6 GB + Llama 3.3 8B 6 GB). Piper๋ CPU์์ ์คํ๋ฉ๋๋ค.
- ๋จ์ํ๋ ์คํ (Llama 3.2 Vision 11B): ~8 GB VRAM โ ๋จ์ผ ๋ชจ๋ธ๋ก ๋น์ ๊ณผ ํ ์คํธ ์ถ๋ก ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์์ฑ ์ง์ฐ (Whisper small, RTX 4070): STT ~200โ500 ms. LLM ์ฒซ ํ ํฐ 500โ1500 ms. Piper TTS 100 ms.
- ์ด๋ฏธ์ง ์ฒ๋ฆฌ ์ง์ฐ (LLaVA 7B, RTX 4070): ํด์๋์ ํ๋กฌํํธ์ ๋ฐ๋ผ ์ด๋ฏธ์ง๋น ~2โ5์ด.
- ์ค์๊ฐ ๋น๋์ค ์์: ๋ก์ปฌ VLM์ ์ฐ์ ๋น๋์ค ์คํธ๋ฆผ์ด ์๋ ๊ฐ๋ณ ํ๋ ์์ ์ฒ๋ฆฌํฉ๋๋ค. ๋น๋์ค์ ๊ฒฝ์ฐ 1 FPS๋ก ํ๋ ์์ ์ถ์ถํ์ฌ ๊ฐ๊ฐ ์ฒ๋ฆฌํ์ญ์์ค.
- VLM + LLM์ ๋์ผํ Ollama ์ธ์คํด์ค ์ฌ์ฉ: Ollama๋ Llama 3.2 Vision์ ๋น์ ๋ชจ๋ธ๊ณผ ํ ์คํธ ๋ชจ๋ธ๋ก ๋์์ ์๋นํ์ฌ VRAM์ ์ ์ฝํ ์ ์์ต๋๋ค.
- ๋ชจ๋ ์ปดํฌ๋ํธ๋ MIT ๋๋ Apache 2.0 ๋ผ์ด์ ์ค์ ๋๋ค (whisper.cpp MIT, LLaVA MIT, Llama 3.3 8B Llama 3 Community License, Piper MIT).
๋ฉํฐ๋ชจ๋ฌ AI ํ์ดํ๋ผ์ธ์ด๋ ๋ฌด์์ ๋๊น?
๋ฉํฐ๋ชจ๋ฌ AI ์์คํ ์ ์ฌ๋ฌ ์ ํ์ ์ ๋ ฅ(์์ฑ, ์ด๋ฏธ์ง, ํ ์คํธ)์ ์์ฉํ๊ณ ์ฌ๋ฌ ์ ํ์ ์ถ๋ ฅ(ํ ์คํธ, ์์ฑ)์ ์์ฑํฉ๋๋ค. ํด๋ผ์ฐ๋์์์ ๋๋ฑ๋ฌผ์ GPT-5.5์ ๋๋ค โ ์ค๋์ค, ์ด๋ฏธ์ง, ํ ์คํธ๋ฅผ ์ด๋ค ์กฐํฉ์ผ๋ก๋ ์์ฉํ๋ ๋จ์ผ ๋ชจ๋ธ์ ๋๋ค.
๐ ํ ๋ฌธ์ฅ์ผ๋ก
๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์ ๊ฐ ๋ชจ๋ฌ๋ฆฌํฐ(STT, ๋น์ , LLM, TTS)๋ฅผ ์ฒ๋ฆฌํ๋ ๋ค ๊ฐ์ง ํนํ ์คํ์์ค ๋ชจ๋ธ์ ์ค์ผ์คํธ๋ ์ดํฐ๋ก ์ฐ๊ฒฐํ๋ฉฐ, ์ธํฐ๋ท์ด๋ API ํค ์์ด ์์ ์คํ๋ผ์ธ์ผ๋ก ์คํ๋ฉ๋๋ค.
๐ฌ ์ฝ๊ฒ ๋งํ๋ฉด
๋จ์ผ AI๊ฐ ๋ชจ๋ ๊ฒ์ ์ฒ๋ฆฌํ๋ ๋์ , ๊ฐ ์์ ์ ์ต์ ํ๋ ๋ณ๋ ํ๋ก๊ทธ๋จ๋ค์ด ์์ต๋๋ค: ์์ฑ ์ธ์์ฉ ํ๋ก๊ทธ๋จ ํ๋, ์ด๋ฏธ์ง ์ดํด์ฉ ํ๋ก๊ทธ๋จ ํ๋, ํ ์คํธ ์๋ต ์์ฑ์ฉ ํ๋ก๊ทธ๋จ ํ๋, ์์ฑ ์ถ๋ ฅ์ฉ ํ๋ก๊ทธ๋จ ํ๋ โ ์กฐ์จ ๋ ์ด์ด๊ฐ ์ด๋ค์ ํ๋์ ์ฐ๊ฒฐ๋ ์์คํ ์ฒ๋ผ ๋ณด์ด๊ฒ ๋ง๋ญ๋๋ค.
- ํด๋ผ์ฐ๋ ์ ๊ทผ ๋ฐฉ์ (GPT-5.5): ๋ชจ๋ ๋ชจ๋ฌ๋ฆฌํฐ๋ก ๋์์ ํ๋ จ๋ ๊ฑฐ๋ ๋จ์ผ ๋ชจ๋ธ. ํฌ๋ก์ค ๋ชจ๋ฌ ์ถ๋ก ์ด ํ๋ จ ์ค์ ํ์ต๋ฉ๋๋ค โ ๋ชจ๋ธ์ด ์ด๋ฏธ์ง ๋ด์ฉ๊ณผ ์์ฑ ์ฟผ๋ฆฌ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ค์ดํฐ๋ธ๋ก ์ถ๋ก ํ ์ ์์ต๋๋ค.
- ๋ก์ปฌ ์ ๊ทผ ๋ฐฉ์ (์ด ๊ฐ์ด๋): ์ค์ผ์คํธ๋ ์ดํฐ๋ก ์ฐ๊ฒฐ๋ ๊ฐ ๋ชจ๋ฌ๋ฆฌํฐ๋ณ ๋ ๋ฆฝ์ ์ธ ํนํ ๋ชจ๋ธ. ๋ ๋ชจ๋ํ๋๊ณ ์คํ ๋น์ฉ์ด ์ ์ง๋ง "์ด์์"๊ฐ ์๊น๋๋ค โ ๋น์ ๋ชจ๋ธ์ ์ถ๋ ฅ์ด LLM์ ์ ๋ฌ๋๊ธฐ ์ ์ ํ ์คํธ๋ก ์ง๋ ฌํ๋ฉ๋๋ค.
- ๋ก์ปฌ ๊ตฌ์ถ ์ด์ : ๊ฐ์ธ ์ ๋ณด ๋ณดํธ(์๋ฃ ์ด๋ฏธ์ง, ๋ ์ ๋ฌธ์, ๊ธฐ๋ฐ ์คํฌ๋ฆฐ์ท), ๋น์ฉ(์ฟผ๋ฆฌ๋น ์์๋ฃ ์์), ์คํ๋ผ์ธ ๊ธฐ๋ฅ(๋ชจ๋ธ ๋ค์ด๋ก๋ ํ ์ธํฐ๋ท ๋ถํ์), ๋ง์ถคํ(์ด๋ค ์ปดํฌ๋ํธ๋ ๊ต์ฒด ๊ฐ๋ฅ).
- ๋ชจ๋์ ์ฅ์ : ์ด๋ค ์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ ์ ์์ต๋๋ค. ๋ ๋์ ๋ก์ปฌ STT ๋ชจ๋ธ์ด ๋์ค๋ฉด STT ๋ ์ด์ด๋ง ๊ต์ฒดํ์ญ์์ค. ๋ ๋์ VLM์ด ๋์ค๋ฉด ๋น์ ๋ชจ๋ธ๋ง ๊ต์ฒดํ์ญ์์ค โ ํ์ดํ๋ผ์ธ์ ๋๋จธ์ง๋ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
๋น์ฉ: ๋ก์ปฌ ํ์ดํ๋ผ์ธ vs ํด๋ผ์ฐ๋ API (์๊ฐ)
์ ๋นํ ์ฌ์ฉ๋(ํ๋ฃจ 100๊ฐ ์ด์์ ์ฟผ๋ฆฌ)์ผ๋ก ๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์ 3โ6๊ฐ์ ์์ ๋ณธ์ ์ ์ฐพ์ต๋๋ค. ๊ฐ๋ฒผ์ด ์ฌ์ฉ๋(ํ๋ฃจ 10๊ฐ ์ฟผ๋ฆฌ)์ผ๋ก๋ ์์ต๋ถ๊ธฐ์ ์ด 12โ18๊ฐ์๋ก ๋์ด๋ฉ๋๋ค.
๐ ํ ๋ฌธ์ฅ์ผ๋ก
๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์ ํ๋์จ์ด ์ผํ์ฑ ํฌ์($600โ3,500) ํ API ์์๋ฃ๊ฐ $0/์์ด๋ฉฐ, ์ฟผ๋ฆฌ ๋ณผ๋ฅจ์ ๋ฐ๋ผ GPT-5.5 API ๋น์ฉ($135โ225/์) ๋๋น 3โ18๊ฐ์ ์์ ์์ต๋ถ๊ธฐ์ ์ ๋๋ฌํฉ๋๋ค.
| ์ฌ์ฉ๋ | GPT-5.5 API | Google Cloud | ๋ก์ปฌ |
|---|---|---|---|
| ์์ฑ ์ฟผ๋ฆฌ 100๊ฑด/์ผ | $90โ150/์ | $60โ120/์ | $0 |
| ์ด๋ฏธ์ง ๋ถ์ 50๊ฑด/์ผ | $45โ75/์ | $30โ60/์ | $0 |
| ํฉ์ฐ (์ผ๋ฐ์ ) | $135โ225/์ | $90โ180/์ | $0 |
| ํ๋์จ์ด (์ผํ์ฑ) | $0 | $0 | $600โ3,500 |
| ์์ต๋ถ๊ธฐ์ | โ | โ | 3โ18๊ฐ์ |
์ ๋นํ ์ฌ์ฉ๋(ํ๋ฃจ 100๊ฐ ์ด์์ ์ฟผ๋ฆฌ)์ผ๋ก ๋ก์ปฌ ํ์ดํ๋ผ์ธ์ 3โ6๊ฐ์ ์์ ๋ณธ์ ์ ์ฐพ์ต๋๋ค. ๊ฐ๋ฒผ์ด ์ฌ์ฉ๋(ํ๋ฃจ 10๊ฐ ์ฟผ๋ฆฌ)์ผ๋ก๋ ์์ต๋ถ๊ธฐ์ ์ด 12โ18๊ฐ์๋ก ๋์ด๋ฉ๋๋ค.
์ํคํ ์ฒ ๊ฐ์
๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์ ๋ผ์ฐํฐ-์ค์ผ์คํธ๋ ์ดํฐ ํจํด์ ์ฌ์ฉํฉ๋๋ค: ์ ๋ ฅ์ด ๊ฒฝ๊ณ์์ ์ ํ๋ณ๋ก ๋ถ๋ฅ๋๊ณ , ์ ์ ํ ๋ชจ๋ธ๋ก ๋ผ์ฐํ ๋๋ฉฐ, ์ต์ข ์๋ต ์์ฑ ์ ์ ์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ์ถ๋ ฅ์ ๊ฒฐํฉํฉ๋๋ค.
- ์ ๋ ฅ ์ ํ: ๋ง์ดํฌ ์ค๋์ค(์์ฑ), ์นด๋ฉ๋ผ ๋๋ ํ์ผ ์ด๋ฏธ์ง(๋น์ ), ํค๋ณด๋ ํ ์คํธ(ํ ์คํธ).
- ๋ผ์ฐํฐ ๋ก์ง: ๊ฒฝ๊ณ์์ ์ ๋ ฅ ์ ํ์ ๊ฐ์งํฉ๋๋ค. ์ค๋์ค โ STT ๋ชจ๋ธ. ์ด๋ฏธ์ง โ VLM. ํ ์คํธ โ LLM ์ง์ . ์ค๋์ค์ ์ด๋ฏธ์ง๊ฐ ํจ๊ป ๋์ฐฉํ๋ฉด ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๊ณ ๊ฒฐํฉํฉ๋๋ค.
- ๋ชจ๋ธ ๋ ์ง์คํธ๋ฆฌ: ๊ฐ ์ ๋ ฅ ์ ํ์ด ์ ์ ํ ๋ชจ๋ธ์ ํธ์ถํ๊ณ ํ ์คํธ ์ค๋ช /์ ์ฌ๋ฅผ ๋ฐํํ๋ ํธ๋ค๋ฌ ํจ์์ ๋งคํ๋ฉ๋๋ค.
- ์ค์ผ์คํธ๋ ์ดํฐ: ๋ชจ๋ ๋ชจ๋ธ ์ถ๋ ฅ์ ์์งํ๊ณ , ํ ์คํธ LLM์ ์ํ ๋จ์ผ ํ๋กฌํํธ๋ก ๊ฒฐํฉํ๊ณ , LLM ์๋ต์ ์ป์ด ์์ฑ ์ถ๋ ฅ์ ์ํ TTS๋ ํ๋ฉด์ ํ ์คํธ๋ก ๋ผ์ฐํ ํฉ๋๋ค.
- ์ถ๋ ฅ ์ ํ: ์์ฑ ์๋ต(Piper TTS), ํ๋ฉด ํ ์คํธ, ๋๋ ๋ค๋ฅธ ์์คํ ๊ณผ์ ํตํฉ์ ์ํ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ(JSON).
- ๋ณ๋ ฌ ์ฒ๋ฆฌ: STT์ VLM์ด ๋์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค โ ์ด๋ฏธ์ง์ ๋ํ ์ค๋์ค ์ฟผ๋ฆฌ๋ ๋ ์์ ์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ์ฌ ์์ฐจ ์ฒ๋ฆฌ ๋๋น ์ด ์ง์ฐ์ 40โ60% ์ค์ผ ์ ์์ต๋๋ค.
์ปดํฌ๋ํธ ์คํ
๊ฐ ์ปดํฌ๋ํธ์ VRAM ์๊ตฌ ์ฌํญ๊ณผ ์ญํ ์ ํฌํจํ ์ ์ฒด ์คํ์ ๋๋ค.
๐ ํ ๋ฌธ์ฅ์ผ๋ก
์ ์ฒด ๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ์คํ์ ~15 GB์ VRAM์ ์ฌ์ฉํฉ๋๋ค: Whisper large-v3(3 GB) + LLaVA 1.6 7B(6 GB) + Llama 3.3 8B(6 GB); Piper TTS๋ VRAM ๋น์ฉ ์์ด CPU์์ ์คํ๋ฉ๋๋ค.
๐ฌ ์ฝ๊ฒ ๋งํ๋ฉด
Llama 3.2 Vision 11B๋ฅผ ๋น์ ๋ชจ๋ธ๊ณผ ํ ์คํธ ๋ชจ๋ธ ๋ ์ญํ ๋ชจ๋์ ์ฌ์ฉํ๋ฉด VRAM์ 8 GB๋ก ์ค์ผ ์ ์์ต๋๋ค โ Whisper๊ฐ ๊ณ์ ์์ฑ์ ์ฒ๋ฆฌํ๊ณ Piper๊ฐ ์์ฑ ์ถ๋ ฅ์ ๋ด๋นํ๋ ๋์, ์ด ๋จ์ผ ๋ชจ๋ธ์ด ์ฌ์ง ์ดํด์ ๋ํ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํฉ๋๋ค.
| ๋ ์ด์ด | ๋๊ตฌ | ๋ชจ๋ธ | VRAM | ์ญํ |
|---|---|---|---|---|
| STT | whisper.cpp | Whisper large-v3 | ~3 GB | ์์ฑ โ ํ ์คํธ ์ ์ฌ |
| ๋น์ | Ollama | LLaVA 1.6 7B | ~6 GB | ์ด๋ฏธ์ง โ ํ ์คํธ ์ค๋ช |
| ์ถ๋ก | Ollama | Llama 3.3 8B Q4 | ~6 GB | ํ ์คํธ โ ํ ์คํธ ์๋ต |
| TTS | Piper | en_US-lessac-medium | CPU ์ ์ฉ | ํ ์คํธ โ ์์ฑ ์ถ๋ ฅ |
| ํฉ๊ณ (๋ณ๋ ๋ชจ๋ธ) | ~15 GB | ์ ์ฒด ํ์ดํ๋ผ์ธ |
๐กTip: VRAM์ ~8 GB๋ก ์ค์ด๋ ค๋ฉด LLaVA + Llama 3.3 8B ์กฐํฉ ๋์ Llama 3.2 Vision 11B๋ฅผ ์ฌ์ฉํ์ญ์์ค. Llama 3.2 Vision์ ๋จ์ผ ๋ชจ๋ธ์์ ์ด๋ฏธ์ง ์ค๋ช ๊ณผ ํ ์คํธ ์ถ๋ก ์ ๋ชจ๋ ์ฒ๋ฆฌํ์ฌ ๋ณ๋์ VLM์ด ํ์ ์์ต๋๋ค.
๐กTip: ๋์ VLM: Qwen2-VL 7B(~6 GB VRAM) โ ๋ค๊ตญ์ด OCR ๋ฐ ๋ฌธ์ ์ดํด์์ LLaVA๋ณด๋ค ๊ฐ๋ ฅํฉ๋๋ค. ํ๊ตญ์ด, ์ผ๋ณธ์ด, ์ค๊ตญ์ด ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ ๊ถ์ฅํฉ๋๋ค.
๋ฉํฐ๋ชจ๋ฌ์ ์ํ ํ๋์จ์ด ๋ฑ๊ธ
์ฉ๋๊ณผ VRAM ์์ผ๋ก ์ ๋ ฌ๋ ๋ค์ฏ ๊ฐ์ง ํ๋์จ์ด ๊ตฌ์ฑ์ ๋๋ค. ๊ฐ๊ฐ ์ ์ฒด ๋ฉํฐ๋ชจ๋ฌ ์คํ์ ๋ค๋ฅธ ํ์ ์งํฉ์ ์ง์ํฉ๋๋ค.
| ๋ฑ๊ธ | GPU | RAM | ์คํ ๊ฐ๋ฅ | ์ง์ฐ (์์ฑ + ์ด๋ฏธ์ง ์ฟผ๋ฆฌ) |
|---|---|---|---|---|
| ๊ธฐ๋ณธ | RTX 3060 12 GB | 16 GB | STT + Phi-4 (๋น์ ์ ๋ณ๋๋ก, ์์ฐจ์ ) | 5โ10์ด |
| ์ค๊ฐ | RTX 4070 12 GB | 32 GB | 7B ๋ชจ๋ธ๋ก ์ ์ฒด ์คํ(LLaVA 7B + Llama 3.3 8B, ๋น ๋ฏํ๊ฒ ๋ง์) | 3โ6์ด |
| ๊ณ ๊ธ | RTX 4090 24 GB | 64 GB | VLM 13B + LLM 8B ๋์ ์ ์ฒด ์คํ | 2โ4์ด |
| Apple ์ค๊ฐ | M5 Pro 36 GB | 36 GB ํตํฉ | Metal์ ํตํ 8B ๋ชจ๋ธ๋ก ์ ์ฒด ์คํ(๊ถ์ฅ). Qwen2-VL 7B + Llama 3.3 8B๋ Whisper large-v3๋ฅผ ์ํ ์ฌ์ ๊ณต๊ฐ๊ณผ ํจ๊ป 36 GB์ ํธ์ํ๊ฒ ๋ค์ด๋ง์ต๋๋ค. | 2โ4์ด |
| Apple ๊ณ ๊ธ | M5 Max 128 GB | 128 GB ํตํฉ | 70B ๋ชจ๋ธ๋ก ์ ์ฒด ์คํ โ ์ต๊ณ ๋ก์ปฌ ํ์ง | 1โ3์ด |
์ง์ฐ์ ์์ฑ ์ฟผ๋ฆฌ ์ข ๋ฃ ์์ ๋ถํฐ TTS ์ฌ์ ์์๊น์ง ์ธก์ ํ๋ฉฐ, ์ด๋ฏธ์ง๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ฅผ ํฌํจํฉ๋๋ค.
๐กTip: 128 GB ํตํฉ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฌํ M5 Max๋ ์ต๊ณ ์ ๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ํ๋ซํผ์ ๋๋ค. Whisper large-v3(3 GB) + Llama 3.2 Vision 90B(~64 GB) + Piper TTS๋ฅผ ๋์์ ์คํํ ์ ์์ต๋๋ค โ ๊ฐ์ฅ ๋์ ํ์ง์ ๋ก์ปฌ VLM ๋ชจ๋ธ๋ก ๋ฌธ์ ๋ฐ ์ฌ์ง ์์ ์์ GPT-5.5์ ๊ทผ์ ํฉ๋๋ค. ์ด๋ค ๋จ์ผ GPU ๊ตฌ์ฑ๋ 2โ3๋ฐฐ ๋ ๋น์ผ ๋ค์ค GPU ์ค์ ์์ด๋ ์ด๋ฅผ ๋ฐ๋ผ์ก์ ์ ์์ต๋๋ค.
์ฌ์ฉ ์ฌ๋ก 1: ์์ฑ ์ ์ด ๋ฌธ์ ๋ถ์๊ธฐ
๋ฌธ์ ์ด๋ฏธ์ง์ ๋ํด ์์ฑ์ผ๋ก ์ง๋ฌธํ๋ฉด ํ์ดํ๋ผ์ธ์ด ์์ฑ์ ์ ์ฌํ๊ณ , ๋ฌธ์๋ฅผ ์๊ฐ์ ์ผ๋ก ์ฒ๋ฆฌํ ํ ๋ต์ ์๋ฆฌ ๋ด์ด ์ฝ์ด์ค๋๋ค. ์ด๊ฒ์ด STT + VLM + LLM + TTS ๊ฒฐํฉ์ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค.
- ์์: ์ฒญ๊ตฌ์๋ฅผ ์ดฌ์ํ๊ณ "์ด ๊ฒฐ์ ๊ธ์ก๊ณผ ๋ฉ๋ถ ๊ธฐํ์ด ์ธ์ ์ ๋๊น?"๋ผ๊ณ ๋งํฉ๋๋ค.
- ํ์ดํ๋ผ์ธ: Whisper๊ฐ ์ง๋ฌธ์ ์ ์ฌ โ ์ด๋ฏธ์ง๋ฅผ LLaVA ๋๋ Llama 3.2 Vision์ผ๋ก ์ ์ก โ VLM์ด ์ฒญ๊ตฌ์์ ํ ์คํธ์ ๊ตฌ์กฐ๋ฅผ ์ถ์ถ โ LLM์ด ์ง๋ฌธ + VLM ์ถ๋ ฅ์ ๊ฒฐํฉ โ Piper๊ฐ ๋ต์ ์๋ฆฌ ๋ด์ด ์ฝ์ต๋๋ค.
- ํ๋กฌํํธ: "์ด๋ฏธ์ง๊ฐ ์์ต๋๋ค: [VLM ์ค๋ช ]. ์ฌ์ฉ์๊ฐ ๋ฌป์ต๋๋ค: [์ ์ฌ]. ์ด๋ฏธ์ง ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ง๋ฌธ์ ๋ตํ์ญ์์ค."
- ์ต์ VLM: ์ฒญ๊ตฌ์ ๋ฐ ๋ฌธ์์ OCR ์ ํ๋๋ฅผ ์ํ MiniCPM-V 2.6 ๋๋ Llama 3.2 Vision 11B.
- ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๊ฐ์น: ์๋ฃ ๊ธฐ๋ก, ๋ฒ์ ๋ฌธ์, ์ฌ๋ฌด ๋ช ์ธ์ โ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๊ธฐ๋ฅผ ๋ ๋์ง ์๊ณ ์์ ํ ๋ก์ปฌ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก 2: ์๊ฐ์ Q&A ์ด์์คํดํธ
์นด๋ฉ๋ผ๋ฅผ ๋ฌผ์ฒด๋ ์ฅ๋ฉด์ ํฅํ๊ณ ์์ฑ์ผ๋ก ์ง๋ฌธํ๋ฉด ์์ฑ ์๋ต์ ๋ฐ์ต๋๋ค. ์ด ์ฌ์ฉ ์ฌ๋ก๋ ์์ฑ ์ํธ์์ฉ์ด ๊ฐ๋ฅํ Google Lens์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ก์ปฌ ๋๋ฑ๋ฌผ์ ๋๋ค.
- ์์ฉ ํ๋ก๊ทธ๋จ: ์ฐฝ๊ณ ์ฌ๊ณ (์ ๋ฐ์ ์ดฌ์ํ๊ณ "SKU-4429๋ ๋ช ๊ฐ๋ ์์ต๋๊น?"๋ผ๊ณ ์ง๋ฌธ), ํ์ฅ ๊ฒ์ฌ(๊ธฐ๊ณ ์์์ ์ดฌ์ํ๊ณ "์ด๊ฒ์ ์ด์ํ๋ ๊ฒ์ด ์์ ํฉ๋๊น?"๋ผ๊ณ ์ง๋ฌธ), ์ ๊ทผ์ฑ(์๊ฐ ์ฅ์ ์ธ ์ฌ์ฉ์๋ฅผ ์ํ ๋ฌผ์ฒด ์ค๋ช ).
- ๊ตฌํ: OpenCV
cv2.VideoCapture(0).read()๋ก ์นด๋ฉ๋ผ ํ๋ ์์ ์บก์ฒํ๊ณ , JPEG๋ก ์ ์ฅํ์ฌ Whisper ์ ์ฌ์ ํจ๊ป VLM์ ์ ๋ฌํฉ๋๋ค. - ์ต์ ๋ชจ๋ธ: ์ผ๋ฐ์ ์ธ ๋ฌผ์ฒด ๋ฐ ์ฅ๋ฉด ์ดํด๋ฅผ ์ํ LLaVA 1.6 7B ๋๋ Llama 3.2 Vision 11B.
- ์ง์ฐ: RTX 4070์์ ์ด๋ฏธ์ง ์บก์ฒ + VLM ์ฒ๋ฆฌ + LLM + TTS์ 3โ6์ด. ๋ ์์ VLM(๋จ์ ๋ฌผ์ฒด ์๋ณ์ ์ํ Moondream 2)์ผ๋ก ์ค์ผ ์ ์์ต๋๋ค.
์ฌ์ฉ ์ฌ๋ก 3: ํ์ ์ ์ฌ + ์ฌ๋ผ์ด๋ ๋ถ์
ํ์ ์ค Whisper๋ฅผ ์ง์์ ์ผ๋ก ์คํํ์ฌ ์ ์ฌ๋ฅผ ๊ตฌ์ถํ๊ณ , ์ฃผ๊ธฐ์ ์ผ๋ก ์ฌ๋ผ์ด๋ ์คํฌ๋ฆฐ์ท์ ์บก์ฒํ์ฌ VLM์ผ๋ก ๋ถ์ํฉ๋๋ค. ๋ง์ง๋ง์ ์ ์ฌ + ์ฌ๋ผ์ด๋ ๋ด์ฉ์ ๊ฒฐํฉํ์ฌ ๋ก์ปฌ ์์ฝ๊ณผ ์คํ ํญ๋ชฉ์ ์์ฑํฉ๋๋ค โ ํด๋ผ์ฐ๋ ์์, ๋ฐ์ดํฐ ๋ ธ์ถ ์์.
- STT: ํ์ ์ค faster-whisper๋ฅผ ์คํธ๋ฆฌ๋ฐ ๋ชจ๋๋ก ์คํํฉ๋๋ค. ์ ์ฌ ๋ฒํผ์ ์ธ๊ทธ๋จผํธ๋ฅผ ๋์ ํฉ๋๋ค.
- ๋น์ : ์ ์ฌ๋ผ์ด๋๊ฐ ๋ํ๋ ๋๋ง๋ค(์คํฌ๋ฆฐ์ท ์ฐจ์ด๋ก ๊ฐ์ง), ์ด๋ฏธ์ง๋ฅผ ์บก์ฒํ์ฌ ์ค๋ช ์ ์ํด LLaVA์ ์ ๋ฌํฉ๋๋ค.
- ๊ฒฐํฉ: ํ์ ์ข ๋ฃ ์(๋๋ ์์ฒญ ์) ์ ์ฌ + ์ฌ๋ผ์ด๋ ์ค๋ช ์ Llama 3.3 8B์ ์ ๋ฌํฉ๋๋ค: "์ด ํ์๋ฅผ ์์ฝํ๊ณ ์คํ ํญ๋ชฉ์ ๋์ดํ์ญ์์ค. ์ ์ฌ: [...]. ์ฌ๋ผ์ด๋ ๋ด์ฉ: [...]."
- ์ถ๋ ฅ: ์๋ฆฌ ๋ด์ด ์ฝ๋ ์์ฝ(Piper TTS) + ๋ก์ปฌ์ ์ ์ฅ๋ ํ ์คํธ ํ์ผ.
- GDPR ๊ฐ์น: ๋ชจ๋ ํ์ ์ฒ๋ฆฌ๊ฐ ๋ก์ปฌ์ ๋๋ค. ์ค๋์ค, ์ ์ฌ, ์ฌ๋ผ์ด๋๊ฐ ์ด๋ค ํด๋ผ์ฐ๋ ์๋น์ค๋ก๋ ์ ์ก๋์ง ์์ต๋๋ค. ๋ฒ์ , ์๋ฃ์ , ๊ธฐ์ ํ๊ฒฝ์์ ๊ท์ ์ค์ ๊ฐ๋ฅ.
์ฌ์ฉ ์ฌ๋ก 4: ๋ก์ปฌ ์ ๊ทผ์ฑ ๋๊ตฌ
๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์ ์๊ฐ ๋๋ ์ด๋ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๋ฅผ ์ํ ํ๋ฉด ์ฝ๊ธฐ ๋๊ตฌ ๋ฐ ์์ฑ ์ ์ด UI ์ด์์คํดํธ ์ญํ ์ ํ ์ ์์ต๋๋ค โ ํด๋ผ์ฐ๋ ์ ๊ทผ์ฑ ์๋น์ค์ ๊ฐ์ธ ์ ๋ณด ์ฐ๋ ค ์์ด ์คํ๋ผ์ธ์ผ๋ก ์๋ํฉ๋๋ค.
- ํ๋ฉด ์ฝ๊ธฐ: 2์ด๋ง๋ค ์คํฌ๋ฆฐ์ท ์บก์ฒ โ LLaVA๊ฐ ํ๋ฉด์ ์๋ ๋ด์ฉ ์ค๋ช โ Piper๊ฐ ์๋ฆฌ ๋ด์ด ์ฝ์. ๋ค์์ ์ค๋ช ํ ๋ด์ฉ์ ์ ์ดํ๊ธฐ ์ํ ์์ฑ ๋ช ๋ น(Whisper)์ ์ถ๊ฐํฉ๋๋ค.
- ์์ฑ ํ์: Whisper๊ฐ ์์ฑ ๋ช ๋ น์ ์ ์ฌ โ LLM์ด ์๋๋ฅผ ํด์ โ pyautogui๋ฅผ ํตํด ํค๋ณด๋/๋ง์ฐ์ค ๋์ ์คํ. ์ธํฐ๋ท ๋ถํ์.
- ๊ฐ์ธ ์ ๋ณด ํํ: ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๋ ์ข ์ข ๋ฏผ๊ฐํ ํ๊ฒฝ(์๋ฃ ํฌํธ, ๊ธ์ต ๊ณ์ )์์ ์ ๊ทผ์ฑ ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ก์ปฌ ๋๊ตฌ๋ ํ๋ฉด ๋ด์ฉ์ด ์ 3์์๊ฒ ์ ์ก๋์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ ํ๋ ์ฐ๊ฒฐ์์์ ์ฌ์ฉ: ๋ณ์, ์ ๋ถ ๊ฑด๋ฌผ, ์ธํฐ๋ท์ด ์ ํ๋ ์ง์ญ์์ ์๋ํฉ๋๋ค โ ๊ธฐ๊ด ์ ๊ทผ์ฑ ๋ฐฐํฌ์ ์ค์ํฉ๋๋ค.
- ์ ๊ทผ์ฑ์ ์ํ ๋ชจ๋ธ ์ ํ: ๋น ๋ฅธ ํ๋ฉด ์ค๋ช ์ ์ํ Moondream 2(2 GB VRAM, ํ๋ ์๋น ~1์ด). ๋ ํ๋ถํ ์ค๋ช ์ ์ํ LLaVA 7B(6 GB VRAM, ํ๋ ์๋น ~3์ด).
์ฌ์ฉ ์ฌ๋ก 5: ๋ก์ปฌ ๋ณด์ ์นด๋ฉ๋ผ ๋ถ์
IP ์นด๋ฉ๋ผ์์ ํ๋ ์์ ์บก์ฒํ๊ณ , ๋ก์ปฌ์์ ์์ง์์ ๊ฐ์งํ์ฌ ์์ง์์ด ๊ฐ์ง๋ ๋๋ง VLM ๋ถ์์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค โ ํด๋ผ์ฐ๋ ์นด๋ฉ๋ผ ์๋น์ค๋ ์ 3์ ๋น๋์ค ์ ์ฅ ์์.
- ํ๋ ์ ์บก์ฒ: OpenCV๋ฅผ ์ฌ์ฉํ์ฌ RTSP(
cv2.VideoCapture("rtsp://camera-ip:554/stream"))๋ก IP ์นด๋ฉ๋ผ์์ 5โ10์ด๋ง๋ค ํ๋ ์์ ์บก์ฒํฉ๋๋ค. USB ์นด๋ฉ๋ผ์ ๊ฒฝ์ฐ ์ฅ์น ์ธ๋ฑ์ค 0์ ์ฌ์ฉํฉ๋๋ค. - ์์ง์ ๊ฐ์ง:
cv2.absdiff()๋ก ์ฐ์ ํ๋ ์ ๊ฐ์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์์ง์ ์๊ณ๊ฐ ์ดํ์ ํ๋ ์์ ๊ฑด๋๋๋๋ค โ ์ด๋ ์ ์ ์ฅ๋ฉด์์ ๋ถํ์ํ VLM ํธ์ถ์ ๋ฐฉ์งํฉ๋๋ค. - VLM ๋ถ์: ์์ง์์ด ๊ฐ์ง๋๋ฉด ํ๋ ์์ VLM์ ์ ์กํฉ๋๋ค: "๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ค๋ช ํ์ญ์์ค. ์ฌ๋์ด ์์ต๋๊น? ๋ฌด์์ ํ๊ณ ์์ต๋๊น?"
- ์๋ฆผ ์ถ๋ ฅ: ์๋ต์ด ์ฌ๋์ด๋ ์ด์์ ๋ํ๋ด๋ฉด ๋ก์ปฌ ๋ฐ์คํฌํฑ ์๋ฆผ๊ณผ Piper TTS ๊ณต์ง๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค("์ ๋ฌธ์์ ์ฌ๋ ๊ฐ์ง๋จ"). ํด๋ผ์ฐ๋ ์๋ฆผ ์๋น์ค ๋ถํ์.
- ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ์ฅ์ : Ring๊ณผ Nest๋ ๊ฐ๊ฐ AWS์ Google ์๋ฒ๋ก ๋น๋์ค๋ฅผ ์ ์กํฉ๋๋ค. ์ด ์ค์ ์ ๋ชจ๋ ๋ นํ๋ฅผ ์ฌ์ฉ์์ ํ๋์จ์ด์ ๋ณด๊ดํฉ๋๋ค โ ๊ตฌ๋ ์์, ์ 3์ ๋น๋์ค ์ ์ฅ ์์, ์ธ๋ถ ์๋น์ค์ ๋ฐ์ดํฐ ๊ณต์ ์์.
- ์๋๋ฅผ ์ํ ์ต์ VLM: ๋น ๋ฅธ ํ๋ ์ ์ฒ๋ฆฌ๋ฅผ ์ํ Moondream 2(ํ๋ ์๋น ~1์ด, ~2 GB VRAM) ๋๋ ๋ ํ๋ถํ ์ฅ๋ฉด ์ค๋ช ์ ์ํ LLaVA 7B(ํ๋ ์๋น ~3์ด, ~6 GB VRAM).
- ํ๋์จ์ด ์ฐธ๊ณ : ์ด ์คํ์ 24/7 ์คํํ๋ ์ ์ฉ Mac Mini M5(~$600)๋ ๋๊ธฐ ์ค ~15โ25W๋ฅผ ์๋นํฉ๋๋ค โ Ring Doorbell Pro ๊ตฌ๋ ๋ณด๋ค ์ฐ๊ฐ ์ ๊ธฐ๋ฃ๊ฐ ๋ ์ ์ต๋๋ค.
Python ์ค์ผ์คํธ๋ ์ดํฐ ๊ตฌ์ถ
Python ๋น๋๊ธฐ ์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ์ ๋ ฅ์ ์ฌ๋ฐ๋ฅธ ๋ชจ๋ธ๋ก ๋ผ์ฐํ ํ๊ณ ์ถ๋ ฅ์ ๊ฒฐํฉํฉ๋๋ค. asyncio๋ฅผ ์ฌ์ฉํ๋ฉด STT์ ๋น์ ์ฒ๋ฆฌ๊ฐ ๋ณ๋ ฌ๋ก ์คํ๋ ์ ์์ต๋๋ค.
#!/usr/bin/env python3
"""Local multimodal orchestrator: voice + vision + text, all offline."""
import asyncio
import base64
import subprocess
import tempfile
import sounddevice as sd
import soundfile as sf
import numpy as np
import requests
OLLAMA_URL = "http://localhost:11434/api/generate"
WHISPER_BIN = "./whisper.cpp/main"
WHISPER_MODEL = "./whisper.cpp/models/ggml-small.bin"
VISION_MODEL = "llava:7b"
TEXT_MODEL = "llama3.1:8b"
PIPER_VOICE = "voices/en_US-lessac-medium.onnx"
SAMPLE_RATE = 16000
async def transcribe_audio(audio: np.ndarray) -> str:
with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f:
sf.write(f.name, audio, SAMPLE_RATE)
loop = asyncio.get_event_loop()
result = await loop.run_in_executor(None, lambda: subprocess.run(
[WHISPER_BIN, "-m", WHISPER_MODEL, "-f", f.name, "--no-timestamps", "--no-prints"],
capture_output=True, text=True
))
return result.stdout.strip()
async def describe_image(image_path: str) -> str:
with open(image_path, "rb") as f:
image_b64 = base64.b64encode(f.read()).decode("utf-8")
loop = asyncio.get_event_loop()
response = await loop.run_in_executor(None, lambda: requests.post(
OLLAMA_URL,
json={
"model": VISION_MODEL,
"prompt": "Describe the content of this image in detail, including any text visible.",
"images": [image_b64],
"stream": False,
},
))
return response.json()["response"]
async def reason(transcript: str, image_description: str | None = None) -> str:
if image_description:
prompt = (
f"The user asked (via voice): {transcript}\n\n"
f"The image shows: {image_description}\n\n"
"Answer the question based on the image content. Be concise โ 2-3 sentences."
)
else:
prompt = transcript
loop = asyncio.get_event_loop()
response = await loop.run_in_executor(None, lambda: requests.post(
OLLAMA_URL,
json={"model": TEXT_MODEL, "prompt": prompt, "stream": False},
))
return response.json()["response"]
async def speak(text: str) -> None:
with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f:
await asyncio.get_event_loop().run_in_executor(None, lambda: subprocess.run(
f'echo "{text}" | piper --model {PIPER_VOICE} --output_file {f.name}',
shell=True, check=True
))
data, sr = sf.read(f.name)
sd.play(data, sr)
sd.wait()
async def process_query(audio: np.ndarray, image_path: str | None = None) -> None:
if image_path:
transcript, image_desc = await asyncio.gather(
transcribe_audio(audio),
describe_image(image_path),
)
else:
transcript = await transcribe_audio(audio)
image_desc = None
if not transcript or len(transcript) < 3:
return
print(f"You: {transcript}")
if image_desc:
print(f"Image: {image_desc[:100]}...")
response = await reason(transcript, image_desc)
print(f"Assistant: {response}")
await speak(response)
async def main():
print("Multimodal assistant ready. Ctrl+C to stop.")
while True:
audio = sd.rec(int(5 * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=1, dtype="int16")
sd.wait()
await process_query(audio)
if __name__ == "__main__":
asyncio.run(main())์ฑ๋ฅ ์ต์ ํ
์ ์ฒด ๋ฉํฐ๋ชจ๋ฌ ์คํ์์ ํ์ฉ ๊ฐ๋ฅํ ์ง์ฐ์ ๋ฌ์ฑํ๊ธฐ ์ํ ํต์ฌ ์ต์ ํ:
๐ ํ ๋ฌธ์ฅ์ผ๋ก
๊ฐ์ฅ ํฐ ๋ ๊ฐ์ง ์ต์ ํ๋: (1) ์ค๋์ค์ ์ด๋ฏธ์ง ๋ชจ๋ ์์ ๋ asyncio๋ก STT์ VLM์ ๋ณ๋ ฌ ์คํํ๋ ๊ฒ, (2) LLM ์ถ๋ ฅ์ ๋ฌธ์ฅ๋ณ๋ก TTS์ ์คํธ๋ฆฌ๋ฐํ์ฌ LLM์ด ์๋ฃ๋๊ธฐ ์ ์ ์ค๋์ค๊ฐ ์์๋๊ฒ ํ๋ ๊ฒ์ ๋๋ค.
๐ฌ ์ฝ๊ฒ ๋งํ๋ฉด
๋ณ๋ ฌ ์ฒ๋ฆฌ ์์ด ํ์ดํ๋ผ์ธ์: STT(0.5์ด) โ VLM(3์ด) โ LLM(1์ด) โ TTS(0.1์ด) = ์ด 4.6์ด. STT + VLM ๋ณ๋ ฌ๋ก: max(STT, VLM)(3์ด) โ LLM(1์ด) โ TTS(0.1์ด) = 4.1์ด. TTS ์คํธ๋ฆฌ๋ฐ์ ์ถ๊ฐํ๋ฉด ์ฌ์ฉ์๋ 4.6์ด ๋์ 3.5์ด์ ์ค๋์ค๋ฅผ ๋ฃ๊ฒ ๋ฉ๋๋ค.
- STT + VLM ๋ณ๋ ฌ ์ฒ๋ฆฌ:
asyncio.gather(transcribe_audio(), describe_image())๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์์ ์ ๋์์ ์คํํฉ๋๋ค. STT ๋ชจ๋ธ ํฌ๊ธฐ์ ๋ฐ๋ผ 0.3โ2์ด๋ฅผ ์ ์ฝํฉ๋๋ค. - ๋ชจ๋ธ์ ์ ์ํ๋ก ์ ์ง: Ollama๋ ์์ฒญ ์ฌ์ด์ VRAM์ ๋ชจ๋ธ์ ์๋์ผ๋ก ์ ์งํฉ๋๋ค. ์คํธ๋ฆฌ๋ฐ ๋ชจ๋์ whisper.cpp๋ ๋ก๋๋ ์ํ๋ฅผ ์ ์งํฉ๋๋ค. ์ฟผ๋ฆฌ ์ฌ์ด์ ์ฌ๋ก๋ํ์ง ๋ง์ญ์์ค.
- LLM โ TTS ์คํธ๋ฆฌ๋ฐ: ์คํธ๋ฆฌ๋ฐ LLM ์ถ๋ ฅ์์ ๋ฌธ์ฅ ๊ฒฝ๊ณ(
.,!,?)๋ฅผ ๊ฐ์งํฉ๋๋ค. LLM์ด ๊ณ์ ์์ฑํ๋ ๋์ ์์ฑ๋ ๊ฐ ๋ฌธ์ฅ์ Piper์ ์ ๋ฌํฉ๋๋ค. - VRAM ๊ด๋ฆฌ: ์ด VRAM์ด ๋น ๋ฏํ๋ฉด ์ด๋ฏธ์ง ์ฒ๋ฆฌ ํ VLM์ ์ธ๋ก๋ํ๊ณ (Ollama HTTP ์ญ์ ์๋ํฌ์ธํธ) ํ ์คํธ LLM์ ๋ก๋ํฉ๋๋ค. ~2โ3์ด๊ฐ ์ถ๊ฐ๋์ง๋ง 8 GB GPU์์๋ ์ ์ฒด ์คํ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- Llama 3.2 Vision์ ๊ฒฐํฉ VLM + LLM์ผ๋ก ์ฌ์ฉ: ๋ชจ๋ธ ์ ํ ์ค๋ฒํค๋๋ฅผ ์์ ํ ์ ๊ฑฐํฉ๋๋ค โ ๋จ์ผ ๋ชจ๋ธ์ด ์๊ฐ์ ์ค๋ช ๊ณผ ํ ์คํธ ์ถ๋ก ์ ๋ชจ๋ ์ฒ๋ฆฌํฉ๋๋ค. ์ ์ถฉ์ : ์ ์ฉ Llama 3.3 8B์ ๋นํด ์์ ํ ์คํธ ์ถ๋ก ์ด ์ฝ๊ฐ ์ฝํฉ๋๋ค.
- TTS ์ฒซ ์ค๋์ค ๋ชฉํ: Piper๋ ํ ์คํธ๋ฅผ ๋ฐ์ ํ 50โ100 ms์ ์ฒซ ์ค๋์ค๋ฅผ ์์ฑํฉ๋๋ค. ์ธ์ง TTS ์ง์ฐ 1์ด ๋ฏธ๋ง์ ์ํด ํ ๋ฒ์ ํ ๋ฌธ์ฅ์ฉ ์คํธ๋ฆฌ๋ฐํฉ๋๋ค.
ํ๊ณ์ ์์งํ ํ๊ฐ
๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์ GPT-5.5๊ฐ ์๋๋๋ค. ๊ฒฉ์ฐจ๋ฅผ ๋ช ํํ ํ๋ฉด ์ข์ ์ ์๋ฐฉํ๊ณ ํ๊ณ๋ฅผ ๊ฐ์ํ ์ค๊ณ๋ฅผ ๋์ต๋๋ค.
- ๋ชจ๋ฌ๋ฆฌํฐ ์ด์์: ๋น์ ์ถ๋ ฅ์ด ํ ์คํธ LLM์ ์ ๋ฌ๋๊ธฐ ์ ์ ํ ์คํธ๋ก ์ง๋ ฌํ๋ฉ๋๋ค. LLM์ ์ด๋ฏธ์ง ํน์ฑ์ ๋ํด ์ง์ ์ถ๋ก ํ ์ ์์ต๋๋ค โ ์ด๋ฏธ์ง์ ํ ์คํธ ์ค๋ช ์ ๋ํด ์ถ๋ก ํฉ๋๋ค. ์ด๋ ๋ฏธ๋ฌํ ์๊ฐ์ ์ถ๋ก ์ด ํ์ํ ์์ ์์ ์ ๋ณด๋ฅผ ์์ต๋๋ค.
- ์ค์๊ฐ ๋น๋์ค ์์: ๋ก์ปฌ VLM์ ์ฐ์ ๋น๋์ค๊ฐ ์๋ ๊ฐ๋ณ ํ๋ ์์ ์ฒ๋ฆฌํฉ๋๋ค. ๋น๋์ค์ ๊ฒฝ์ฐ 0.5โ2 FPS๋ก ํ๋ ์์ ์ถ์ถํ์ฌ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ฆ, "์ด ๋น๋์ค์ ๋ง์ง๋ง 5์ด ๋์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ์ต๋๊น?"๋ผ๊ณ ๋ฌผ์ ์ ์์ต๋๋ค.
- VLM ํ์ง ๊ฒฉ์ฐจ: ๋ก์ปฌ ๋น์ ๋ชจ๋ธ(LLaVA 7B, Llama 3.2 Vision 11B)์ ๋ณต์กํ ์ธํฌ๊ทธ๋ํฝ, ์๊ธ์จ, ๋ชจํธํ ์ฅ๋ฉด, ์๊ฐ์ ์ดํด์ ํจ๊ป ๊ด๋ฒ์ํ ์ธ๊ณ ์ง์์ด ํ์ํ ์์ ์์ GPT-5.5 Vision์ ๋ค์ฒ์ง๋๋ค.
- VRAM ์๋ฐ: ๋จ์ผ GPU์์ ์ธ ๊ฐ์ง ๋ชจ๋ธ์ ๋์์ ์คํํ๋ ค๋ฉด ์ ์คํ VRAM ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. 12 GB GPU์์๋ ํ๊ณ์ ์์ต๋๋ค โ OOM(๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ) ์ค๋ฅ๋ฅผ ํผํ๊ธฐ ์ํด ๋ชจ๋ธ ํฌ๊ธฐ๋ฅผ ์ ์คํ๊ฒ ์ ํํด์ผ ํฉ๋๋ค.
- ํด๋ผ์ฐ๋ ๋๋น ์ง์ฐ: ํด๋ผ์ฐ๋ ๋ฉํฐ๋ชจ๋ฌ ํธ์ถ(GPT-5.5)์ ์ค๋์ค + ์ด๋ฏธ์ง + ํ ์คํธ์ 1โ3์ด๊ฐ ๊ฑธ๋ฆฝ๋๋ค. ๋ก์ปฌ ํ์ดํ๋ผ์ธ์ ๋๋ฑํ ํ๋์จ์ด์์ 3โ8์ด๊ฐ ๊ฑธ๋ฆฝ๋๋ค โ ๋ ๋๋ฆฌ์ง๋ง ์์ ํ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ์ ์ฟผ๋ฆฌ๋น ๋น์ฉ ์์.
- ์ผ๊ด์ฑ: ๋ก์ปฌ ๋ชจ๋ธ์ ๊ด๋ฒ์ํ RLHF๋ฅผ ๊ฐ์ถ ํด๋ผ์ฐ๋ ๋ชจ๋ธ๋ณด๋ค ๋ ๊ฐ๋ณ์ ์ธ ์ถ๋ ฅ ํ์ง์ ์์ฑํฉ๋๋ค. ๋น์ ์ค๋ช ๊ณผ LLM ์๋ต ๋ชจ๋์์ ๊ฐ๋ ํ๊ฐ์ด ๋ฐ์ํ ๊ฒ์ผ๋ก ์์ํ์ญ์์ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๋น์ ๊ณผ ํ ์คํธ ์ถ๋ก ๋ชจ๋์ ๋จ์ผ ๋ชจ๋ธ์ ์ฌ์ฉํ ์ ์์ต๋๊น?
์. Llama 3.2 Vision 11B๋ ๋จ์ผ ๋ชจ๋ธ์์ ์ด๋ฏธ์ง ์ดํด์ ํ ์คํธ ์ถ๋ก ์ ๋ชจ๋ ์ฒ๋ฆฌํฉ๋๋ค โ ๋ณ๋์ LLaVA + Llama 3.3 8B ์ค์ ์ ๊ฑด๋๋ธ ์ ์์ต๋๋ค. ์ด๋ VRAM์ ~15 GB์์ ~8 GB๋ก ์ค์ด๊ณ Ollama API ํธ์ถ ํ๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ ์ถฉ์ ์ ์ ์ฉ Llama 3.3 8B์ ๋นํด ์์ ํ ์คํธ ์ถ๋ก ์์ ์ ์ฑ๋ฅ์ด ์ฝ๊ฐ ์ ํ๋๋ค๋ ๊ฒ์ ๋๋ค.
๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์์ ๋น๋์ค ์ ๋ ฅ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํฉ๋๊น?
OpenCV(cv2.VideoCapture)๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋์ค์์ ํ๋ ์์ ์ถ์ถํ๊ณ VLM์ ํตํด ๊ฐ ํ๋ ์์ ๊ฐ๋ณ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. 1 FPS์ 1๋ถ ๋น๋์ค์ ๊ฒฝ์ฐ 60๊ฐ์ ํ๋ ์์ด ์์ฑ๋ฉ๋๋ค โ ๊ฐ ์ฒ๋ฆฌ์ 2โ5์ด๊ฐ ๊ฑธ๋ฆฌ๋ฏ๋ก ์ ์ฒด ๋น๋์ค ๋ถ์์ 2โ5๋ถ์ด ๊ฑธ๋ฆฝ๋๋ค. ์ค์๊ฐ ๋น๋์ค ๋ชจ๋ํฐ๋ง์ ๊ฒฝ์ฐ 2โ3์ด๋ง๋ค 1๊ฐ์ ํ๋ ์๋ง ์ฒ๋ฆฌํ๊ณ ์ ์ ํ๋ ์์ ๊ฑด๋๋ฐ๊ธฐ ์ํด ์์ง์ ๊ฐ์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์ ํ ๋น๋์ค ์ดํด(ํ๋ ์ ๊ฐ ๊ฐ์ฒด ์ถ์ , ์๊ฐ์ ์ํ์ค ์ดํด)๋ ํ์ฌ ๋ก์ปฌ VLM์ ๊ธฐ๋ฅ์ ๋์ด์ญ๋๋ค.
์ ์ฒด ๋ฉํฐ๋ชจ๋ฌ ์คํ์ ์ํ ์ต์ GPU VRAM์ ์ผ๋ง์ ๋๊น?
๊ณต์ VRAM ๊ตฌ์ฑ(๋ชจ๋ ๋ชจ๋ธ์ด ๋์์ VRAM์)์์ Whisper large-v3 + LLaVA 7B + Llama 3.3 8B์๋ 15 GB๊ฐ ํ์ํฉ๋๋ค. Llama 3.2 Vision 11B๊ฐ VLM๊ณผ ํ ์คํธ LLM ๋ชจ๋๋ฅผ ๋์ฒดํ๋ฉด 8 GB VRAM์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. 12 GB GPU(RTX 4070)์์๋ ์ํ ์์ํ๋ก ์์ฃผ ๋น ๋ฏํ๊ฒ ๋ณ๋ ๋ชจ๋ธ ์ ์ฒด ์คํ์ ์คํํ๊ฑฐ๋, ๊ฒฐํฉ ์ ๊ทผ ๋ฐฉ์์ ์ํด Llama 3.2 Vision 11B๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. 8 GB VRAM(RTX 4060)์์๋ ๊ณต๊ฒฉ์ ์์ํ(Q3_K)๋ก Llama 3.2 Vision 11B๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋น์ ๊ณผ ํ ์คํธ ์ฟผ๋ฆฌ ์ฌ์ด์ ๋ชจ๋ธ์ ๊ต์ฒดํฉ๋๋ค.
๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์ด PDF๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๊น?
์ง์ ์ ์ ๋ฉ๋๋ค โ ๋ก์ปฌ VLM์ PDF๊ฐ ์๋ ์ด๋ฏธ์ง ์
๋ ฅ์ ์์ฉํฉ๋๋ค. ๋จผ์ pdf2image(pip install pdf2image) ๋๋ pypdfium2(pip install pypdfium2)๋ฅผ ์ฌ์ฉํ์ฌ PDF ํ์ด์ง๋ฅผ ์ด๋ฏธ์ง๋ก ๋ณํํ์ญ์์ค. ๊ทธ๋ฐ ๋ค์ ๊ฐ ํ์ด์ง ์ด๋ฏธ์ง๋ฅผ VLM์ ๋ณ๋๋ก ์ ๋ฌํฉ๋๋ค. 10ํ์ด์ง PDF์ ๊ฒฝ์ฐ 10๊ฐ์ ๋ณ๋ ์ด๋ฏธ์ง ์ค๋ช
์ ์์ฑํ ํ, ๊ฒฐํฉ๋ ๋ถ์์ด๋ ์์ฝ์ ์ํด ๋ชจ๋ ์ค๋ช
์ ํ
์คํธ LLM์ ์ ๋ฌํฉ๋๋ค. ๋ค์ดํฐ๋ธ PDF ์ง์๋ณด๋ค ๋๋ฆฌ์ง๋ง ๊ตฌ์กฐํ๋ ๋ฌธ์์์ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋
๋๋ค.
๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์ด ์๋ฃ ๋๋ ๋ฒ์ ์ฌ์ฉ์ ์ํ GDPR์ ์ ํฉํฉ๋๊น?
์ด์ ์ค ๋คํธ์ํฌ ํธ๋ํฝ์ ์ ํ ์์ฑํ์ง ์๋ ๋ก์ปฌ ๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์ ๋ด๋ถ ์ฌ์ฉ ์ฌ๋ก์์ ์ค๊ณ์ ์ค์๋ฉ๋๋ค โ ๊ฐ์ธ ๋ฐ์ดํฐ๊ฐ ์์คํ ์ ๋ ๋์ง ์์ผ๋ฏ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ณ์ฝ์ด ํ์ํ์ง ์์ต๋๋ค. ์ค์ ์ฌ๋ถ ํ์ธ: ์ด์ ์ค Wireshark๋ฅผ ์คํํ๊ณ ํ์ดํ๋ผ์ธ ํ๋ก์ธ์ค์์ ๋ฐ์ ํจํท์ด ์์์ ํ์ธํฉ๋๋ค. ์ ์ฅ๋ ์ค์ํฉ๋๋ค โ ์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ๋ํ ๊ธฐ๋ก์ด๋ ์ด๋ฏธ์ง ํ์ผ์ ์ ์ฅํ๋ ๊ฒฝ์ฐ ํด๋น ์ ์ฅ์๋ ๋ณด์กด ์๊ฑด์ ์ ์ฉ์ ๋ฐ์ต๋๋ค. ์ ์ ํ ๋ณด์กด ์ ์ฑ ์ด ์๋ ์์ ์ธ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ์ ๋๋ ์ํธํ๋ ๋ก์ปฌ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ญ์์ค.
๋ฉํฐ๋ชจ๋ฌ ํ์ดํ๋ผ์ธ์ ์น ๊ฒ์์ ์ถ๊ฐํ ์ ์์ต๋๊น?
์. ์ค์ผ์คํธ๋ ์ดํฐ์ ํ ์คํธ LLM ์ฌ์ด์ ๊ฒ์ ๋จ๊ณ๋ฅผ ์ถ๊ฐํฉ๋๋ค. LLM ์ถ๋ก ๋จ๊ณ ์ ์ ์ปจํ ์คํธ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด DuckDuckGo API๋ ๋ก์ปฌ RAG ์์คํ (AnythingLLM, PrivateGPT)์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด LLM์ ์ ์ฌ + ์ด๋ฏธ์ง ์ค๋ช + ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํฉํ์ฌ ์ถ๋ก ํฉ๋๋ค. ์ง์ฐ์ด 0.5โ2์ด ์ถ๊ฐ๋์ง๋ง ์๊ฐ์ ๋ถ์๊ณผ ํจ๊ป ์์ฌ์ฑ ์ง๋ฌธ์ ๋ตํ ์ ์์ต๋๋ค.
์ ์ฒด ๋ฉํฐ๋ชจ๋ฌ ์คํ์ 24/7 ์คํํ ๋ ์ ๊ธฐ ์๋น๋์ ์ผ๋ง์ ๋๊น?
VRAM์ ๋ชจ๋ธ์ด ์ ์ํ์ธ ๋๊ธฐ: ~50โ80 W(๋ฐ์คํฌํฑ GPU), ~15โ25 W(Mac Mini M5 Pro). ํ์ฑ ์ฒ๋ฆฌ: ~150โ300 W(๋ฐ์คํฌํฑ GPU), ~30โ60 W(Mac Mini M5 Pro). $0.15/kWh์์ ์๊ฐ ๋น์ฉ: ์ฝ $5โ15(Mac Mini) ๋๋ $15โ35(๋ฐ์คํฌํฑ). ์ด๋ ๋น์ทํ ์ฟผ๋ฆฌ ๋ณผ๋ฅจ์ผ๋ก ํด๋ผ์ฐ๋ API๋ฅผ ์คํํ๋ ๊ฒ๋ณด๋ค ์ ์ต๋๋ค โ ์ ์ฒด ์คํ์ 24/7 ์คํํ๋ Mac Mini๋ ํ๋ฃจ 100๊ฐ ์ฟผ๋ฆฌ ๊ธฐ์ค GPT-5.5 API 2์ผ ์ฌ์ฉ๋ณด๋ค ์ ์ ๊ธฐ๋ฃ๊ฐ ๋ ์ ์ต๋๋ค.
์ถ์ฒ
- GitHub์ whisper.cpp โ STT ์ปดํฌ๋ํธ ์์ค ๋ฐ ๋ฌธ์.
- GitHub์ faster-whisper โ ์คํธ๋ฆฌ๋ฐ์ ์ํ ๋ด์ฅ VAD๊ฐ ์๋ Python STT ๋์.
- LLaVA ํ๋ก์ ํธ ํ์ด์ง โ ๋น์ ๋ชจ๋ธ ์ํคํ ์ฒ ๋ฐ ๋ชจ๋ธ ์นด๋.
- Llama 3.2 Vision ๋ชจ๋ธ ์นด๋ โ ์ด๋ฏธ์ง + ํ ์คํธ ์ถ๋ก ์ ์ง์ํ๋ Meta์ ๋ฉํฐ๋ชจ๋ฌ ๋ชจ๋ธ.
- Ollama ๋ฌธ์ โ ๋น์ ๋ชจ๋ธ API, ๋ฉํฐ๋ชจ๋ฌ ์์ฒญ ํ์.
- GitHub์ Piper TTS โ TTS ์ถ๋ ฅ ์ปดํฌ๋ํธ, ์์ฑ ํฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
- GitHub์ Coqui TTS โ ์์ฑ ํด๋ก๋ ์ง์์ด ์๋ ๋์ TTS.