๋ น์ํ๊ฑฐ๋ ์ค๋์ค/์์ ํ์ผ์ ์ ๋ก๋ํ๋ฉด ์ ์ฌยทํ์ ๋ถ๋ฆฌ(Deepgram) โ ํ์๋ก ์์ฑ(Claude) ์ ์๋์ผ๋ก ์ํํ๋ ์น ์ฑ์ ๋๋ค.
- ๋ฐฑ์๋: FastAPI (
app.py,gscribe/) - ํ๋ก ํธ์๋: React + TypeScript + Vite + Tailwind (
frontend/)
.env.example๋ฅผ ๋ณต์ฌํด .env๋ฅผ ๋ง๋ค๊ณ ๊ฐ์ ์ฑ์๋๋ค.
DEEPGRAM_API_KEY=... # ์ ์ฌ + ํ์ ๋ถ๋ฆฌ (Deepgram, ํ ๋ฒ์ ํธ์ถ๋ก ์ฒ๋ฆฌ)
ANTHROPIC_API_KEY=... # ํ์๋ก ์์ฑ (Claude)
# DEEPGRAM_MODEL=nova-2 # ์ ํ: ํ๊ตญ์ด๊ฐ nova-3์์ ๋ฏธ์ง์/์ ํ์ง์ด๋ฉด nova-2๋ก
ํ์ ๋ถ๋ฆฌ๊ฐ Deepgram API๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก ์๋ฒ์ PyTorchยทpyannote๊ฐ ํ์ ์์ต๋๋ค. (Windows Server 2008 R2 ๋ฑ ๊ตฌํ/๊ฒฝ๋ ์๋ฒ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํด์ง๋๋ค.)
# ๋ฐฑ์๋
pip install -r requirements.txt
# ํ๋ก ํธ์๋
cd frontend && npm installffmpeg ์ด PATH์ ์์ด์ผ ํฉ๋๋ค. ์ ๋ก๋๋ ์ค๋์ค๋ฅผ Deepgram์ ๋ณด๋ด๊ธฐ ์ 16kHz ๋ชจ๋ ธ Opus๋ก ์์ถยท์ ๊ทํํด ์๋ฒ ๋ฉ๋ชจ๋ฆฌยท์ ๋ก๋๋์ ์ค์ด๊ณ ๋ค์ํ ์ ๋ ฅ ํ์(WEBMยทMP4 ๋ฑ)์ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. (ffmpeg์ด ์์ผ๋ฉด ์๋ณธ์ ๊ทธ๋๋ก ์ ์กํ๋ฉฐ ๊ฒฝ๊ณ ๋ฅผ ๋จ๊น๋๋ค โ ๋์์ ํ์ง๋ง ์์ถ ์ด์ ์ ์ฌ๋ผ์ง๋๋ค.)
FastAPI์ Vite dev server๋ฅผ ๊ฐ๊ฐ ๋์๋๋ค. Vite๊ฐ /api ์์ฒญ์ FastAPI(8000)๋ก ํ๋ก์ํฉ๋๋ค.
# ํฐ๋ฏธ๋ 1 โ ๋ฐฑ์๋
python -m uvicorn app:app --port 8000
# ํฐ๋ฏธ๋ 2 โ ํ๋ก ํธ์๋
cd frontend && npm run dev # http://localhost:5173ํ๋ก ํธ์๋ ๋น๋๊ฐ ๋ฐ๋์ ์ ํ๋์ด์ผ ํฉ๋๋ค. frontend/dist/๋ git์ ์ปค๋ฐํ์ง ์์ผ๋ฏ๋ก(๋น๋ ์ฐ์ถ๋ฌผ),
์๋ก ์ฒดํฌ์์ํ๊ฑฐ๋ ๋ฐฐํฌํ ๋๋ง๋ค ๋น๋ ๋จ๊ณ๋ฅผ ์คํํด์ผ ํฉ๋๋ค. ๋น๋๊ฐ ์์ผ๋ฉด /๋ 500๊ณผ ์๋ด ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค.
cd frontend && npm run build # โ frontend/dist/ ์์ฑ (FastAPI๊ฐ ์๋น)
cd .. && python -m uvicorn app:app --port 8000 # http://localhost:8000FastAPI๋ frontend/dist/index.html์ /๋ก, frontend/dist/assets๋ฅผ /assets๋ก ์๋นํฉ๋๋ค.