Skip to content
m16khb-orgPublic

Latest commit

ย 

History

198 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Galpi app icon

Galpi ยท ๊ฐˆํ”ผ

Mac(Apple Silicon)๊ณผ Windows x64์—์„œ ํšŒ์˜๋ฅผ ๋…น์Œํ•˜๊ณ , ํ™”์ž๋ฅผ ๊ตฌ๋ถ„ํ•ด ์ „์‚ฌํ•˜๊ณ ,
ํ•„์š”ํ•œ ๊ฒฝ์šฐ AI๋กœ ํšŒ์˜๋ก๊นŒ์ง€ ์ •๋ฆฌํ•˜๋Š” ๋กœ์ปฌ ์šฐ์„  ๋ฐ์Šคํฌํ†ฑ ์•ฑ

ํ•œ๊ตญ์–ด ยท English

Important

Galpi 0.1.0์€ macOS 14 ์ด์ƒ Apple Silicon(M1 ์ด์ƒ) ๊ณผ Windows 10/11 x64 ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฐœ๋ฐœ ๋นŒ๋“œ์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌ์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ์—์„œ ์†Œ์Šค๋กœ ์ง์ ‘ ๋นŒ๋“œํ•ด ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค(์•„๋ž˜ '1. ์„ค์น˜'). Intel Mac๊ณผ Linux๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•œ๋ˆˆ์— ๋ณด๊ธฐ

Galpi๋Š” ํšŒ์˜ ์Œ์„ฑ์„ ์•ฑ ์•ˆ์—์„œ ๋…น์Œํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ํŒŒ์ผ๋กœ ๊ฐ€์ ธ์™€, ํ•œ๊ตญ์–ด ์ „์‚ฌ์™€ ํ™”์ž๋ถ„๋ฆฌ๋ฅผ ๋กœ์ปฌ์—์„œ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ „์‚ฌ ์—”์ง„์€ ์„ค์ •์˜ ์ „์‚ฌ ์—”์ง„์—์„œ ์„ ํƒํ•˜๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ Qwen3(Qwen3-ASR-1.7B + Qwen3-ForcedAligner-0.6B)์ด๊ณ  ์ด์ „ ์—”์ง„ WhisperX(faster-whisper large-v3-turbo)๋ฅผ ๊ทธ๋Œ€๋กœ ๊ณ ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™”์ž๋ถ„๋ฆฌ๋Š” ๋‘ ํ”„๋ฆฌ์…‹์ด pyannote community-1์„ ๊ณต์šฉํ•ฉ๋‹ˆ๋‹ค. ์ „์‚ฌ ๊ฒฐ๊ณผ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ณ ๋ฅธ ํด๋”์— ์ €์žฅ๋˜๋ฉฐ, ์„ ํƒ์ ์œผ๋กœ OpenAI ํ˜ธํ™˜ API๋ฅผ ์‚ฌ์šฉํ•ด ํ•œ๊ตญ์–ด ํšŒ์˜๋ก Markdown์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ๋‚ด์šฉ
๋ฐ”๋กœ ๋…น์Œ ๋งˆ์ดํฌ ์ž…๋ ฅ(CPAL: CoreAudio/WASAPI)์„ 16-bit PCM WAV๋กœ ์ €์žฅ
ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ m4a, mp3, wav, mp4, mov, aac, flac, ogg
๋กœ์ปฌ ์ „์‚ฌ Qwen3(๊ธฐ๋ณธ) ๋˜๋Š” WhisperX ํ”„๋ฆฌ์…‹ ํ•œ๊ตญ์–ด ASR
ํ™”์ž๋ถ„๋ฆฌ pyannote ๊ธฐ๋ฐ˜ ๋ถ„๋ฆฌ, ์ž๋™ยท์ •ํ™•ํžˆยท์ตœ์†Œ/์ตœ๋Œ€ ํ™”์ž ์ˆ˜ ํžŒํŠธ
๋ฌธ์žฅ ์ •๋ ฌ ํ•œ๊ตญ์–ด ๋ฌธ์žฅ ์ •๋ ฌ๊ณผ ์žฅ๊ธฐ ๋ฌด์Œ ํ™˜๊ฐ ํ•„ํ„ฐ๋ง
์ฐธ์„์ž ๋ช…๋ถ€ ์ด๋ฆ„ยทํŒ€ยท์—ญํ• ยท๋ณ„์นญยท์„ค๋ช…์„ ํšŒ์˜๋งˆ๋‹ค ์žฌ์‚ฌ์šฉ
๋‹จ์–ด์ง‘ ๊ณ ์œ ๋ช…์‚ฌ์™€ ์ „๋ฌธ ์šฉ์–ด๋ฅผ ํšŒ์˜๋ก ๊ฐ€๊ณต์— ๋ฐ˜์˜
AI ํšŒ์˜๋ก OpenAI ํ˜ธํ™˜ API๋กœ ๊ฒฐ์ •ยท๋‹ด๋‹นยท๊ธฐํ•œ ์ค‘์‹ฌ Markdown ์ƒ์„ฑ
์ž‘์—… ์ œ์–ด ์ค€๋น„ยท์ „์‚ฌ ์ทจ์†Œ์™€ ์ƒ์„ธ ๋กœ๊ทธ, AI ์ฆ๊ฐ•ยทDrive ๊ฐ€์ ธ์˜ค๊ธฐ ์ง„ํ–‰๋ฅ ๊ณผ ์˜ค๋ฅ˜ ํ‘œ์‹œ

๋น ๋ฅธ ์‹œ์ž‘

1. ์„ค์น˜

Galpi๋Š” ์‚ฌ์šฉํ•  ์ปดํ“จํ„ฐ์—์„œ ์ง์ ‘ ๋นŒ๋“œํ•ด ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์ปดํ“จํ„ฐ์—์„œ ๋งŒ๋“  ์•ฑ์—๋Š” ์ธํ„ฐ๋„ท์—์„œ ๋ฐ›์€ ํŒŒ์ผ์ด๋ผ๋Š” ํ‘œ์‹œ(macOS ๊ฒฉ๋ฆฌ ์†์„ฑ, Windows Mark of the Web)๊ฐ€ ๋ถ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์„œ๋ช…๋˜์ง€ ์•Š์€ ๋นŒ๋“œ๋ฅผ ๋‚ด๋ ค๋ฐ›์•˜์„ ๋•Œ ๋‚˜์˜ค๋Š” Gatekeeper ๊ฒฝ๊ณ  ์—†์ด ์—ด๋ฆฌ๋ฉฐ(macOS 27์—์„œ ํ™•์ธ), Windows์—์„œ๋„ SmartScreen ๊ฒฝ๊ณ ๊ฐ€ ๋ณดํ†ต ๋‚˜์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฝ”๋”ฉ ์—์ด์ „ํŠธ(Claude Code, Codex ๋“ฑ)์—๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์ฒญํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

https://github.com/m16khb-org/galpi ์ €์žฅ์†Œ๋ฅผ ๋ฐ›์•„์„œ, INSTALL.md๋ฅผ ๋”ฐ๋ผ ์ด ์ปดํ“จํ„ฐ์— Galpi๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์„ค์น˜ํ•ด ์ค˜.

์—์ด์ „ํŠธ๋Š” INSTALL.md์— ๋”ฐ๋ผ ํ”Œ๋žซํผ์„ ํ™•์ธํ•˜๊ณ , ๋น ์ง„ ๋„๊ตฌ(Xcode Command Line Tools ๋˜๋Š” Visual Studio Build Tools, Rust, Bun, Tauri CLI)๋ฅผ ์„ค์น˜ํ•ด๋„ ๋˜๋Š”์ง€ ๋ฌผ์€ ๋’ค ๋นŒ๋“œยท์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ ์ง„ํ–‰ํ•  ๋•Œ๋„ ๊ฐ™์€ ๋ฌธ์„œ๋ฅผ ๋”ฐ๋ฅด๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋„ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค์‹œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๊ธฐ

ํ•„์ˆ˜ ํ™˜๊ฒฝ:

  • macOS 14 ์ด์ƒ Apple Silicon ๋˜๋Š” Windows 10/11 x64
  • Windows: Microsoft Visual C++ 2015โ€“2022 x64 ์žฌ๋ฐฐํฌ ํŒจํ‚ค์ง€(์•ฑ์— ํฌํ•จ๋˜์ง€ ์•Š์Œ)
  • Rust 1.88 ์ด์ƒ
  • Bun 1.3 ์ด์ƒ
  • Tauri CLI 2.11.4
cargo install tauri-cli --version 2.11.4 --locked
bun install
bun run dev

bun run dev๋Š” ํ•ด๋‹น ํ”Œ๋žซํผ์˜ ๊ฒ€์ฆ๋œ uv, Python worker, ํ”„๋ก ํŠธ์—”๋“œ, Tauri ์•ฑ์„ ์ค€๋น„ํ•ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Python, ffmpeg, WhisperX๋ฅผ ์ „์—ญ์œผ๋กœ ๋ฏธ๋ฆฌ ์„ค์น˜ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. Windows์—์„œ๋„ PowerShell์—์„œ ๊ฐ™์€ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Windows ์ฐธ๊ณ 

  1. Microsoft Visual C++ 2015โ€“2022 x64 ์žฌ๋ฐฐํฌ ํŒจํ‚ค์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์•ฑ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ, INSTALL.md ์ ˆ์ฐจ๊ฐ€ ํ•จ๊ป˜ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋นŒ๋“œํ•œ NSIS ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ(Galpi_<๋ฒ„์ „>_x64-setup.exe)์€ ํ˜„์žฌ ์‚ฌ์šฉ์ž์šฉ์œผ๋กœ ์„ค์น˜๋˜๋ฏ€๋กœ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.
  3. ์•„๋ž˜ '์ตœ์ดˆ ์—”์ง„ ์ค€๋น„'๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Windows์—์„œ๋Š” ์ „์‚ฌ ์—”์ง„์œผ๋กœ WhisperX๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Qwen3/MLX๋Š” Apple Silicon ์ „์šฉ). ๊ธฐ๋ณธ์€ CPU์ด๋ฉฐ, ์„ค์ •์—์„œ CUDA๋ฅผ ๊ณ ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CUDA๋Š” PyTorch cu128 ๋นŒ๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ์•ฝ 3.5 GB ๋‚ด๋ ค๋ฐ›๊ณ  NVIDIA ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. CUDA๋ฅผ ๊ณ ๋ฅด๋ฉด ์Œ์„ฑ ์ธ์‹(CTranslate2 float16)๊ณผ ์ •๋ ฌยทํ™”์ž๋ถ„๋ฆฌ๊ฐ€ ๋ชจ๋‘ GPU์—์„œ ๋Œ๊ณ , GPU ์Œ์„ฑ ์ธ์‹์ด ์‹คํŒจํ•˜๋ฉด CPU int8๋กœ ํ•œ ๋ฒˆ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

2. ์ตœ์ดˆ ์—”์ง„ ์ค€๋น„

  1. ์•ฑ ์šฐ์ธก ์ƒ๋‹จ์˜ ์„ค์ •์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ์ƒˆ ์ปดํ“จํ„ฐ์—์„œ ํ™”์ž๋ถ„๋ฆฌ ๋ชจ๋ธ์„ ์ฒ˜์Œ ๋ฐ›๋Š”๋‹ค๋ฉด Hugging Face ํ† ํฐ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  3. ๋กœ์ปฌ ์—”์ง„ ์ค€๋น„๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
  4. ์„ ํƒํ•œ ์—”์ง„์˜ ์—”์ง„, ์ „์‚ฌ ๋ชจ๋ธ, ffmpeg๊ฐ€ ๋ชจ๋‘ ์ค€๋น„๋จ์ด ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ „์‚ฌ ์—”์ง„ ์„ ํƒ์ง€ ์•„๋ž˜์—๋Š” ๊ฐ ํ”„๋ฆฌ์…‹์˜ ์ค€๋น„ ์ƒํƒœ๊ฐ€ ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ตœ์ดˆ ์ค€๋น„์—์„œ๋Š” ์•ฑ ์ „์šฉ Python 3.12 ํ™˜๊ฒฝ๊ณผ ์ˆ˜ GB์˜ ๋ชจ๋ธ์„ ๋‚ด๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„์—๋Š” ๊ฐ™์€ ์•ฑ ๋ฐ์ดํ„ฐ ํด๋”์™€ ๋ชจ๋ธ ์บ์‹œ๋ฅผ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‘ ํ”„๋ฆฌ์…‹์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ€์ƒํ™˜๊ฒฝ(engine/, engine/qwen3/)์— ์„ค์น˜๋˜๋ฏ€๋กœ ํ•œ์ชฝ์„ ์ค€๋น„ํ•ด๋„ ๋‹ค๋ฅธ์ชฝ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3. Hugging Face ํ† ํฐ

ํ™”์ž๋ถ„๋ฆฌ ๋ชจ๋ธ์„ ์ฒ˜์Œ ๋‚ด๋ ค๋ฐ›์„ ๋•Œ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  1. pyannote/speaker-diarization-community-1์˜ ์ด์šฉ ์กฐ๊ฑด์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
  2. Hugging Face Access Tokens์—์„œ Fine-grained ํ† ํฐ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  3. ํ•ด๋‹น ์ €์žฅ์†Œ์— Read ๊ถŒํ•œ๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  4. hf_๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ’์„ Galpi ์„ค์ •์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์“ฐ๊ธฐ ๊ถŒํ•œ๊ณผ Inference Providers ๊ถŒํ•œ์€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ํ๋ฆ„

ํšŒ์˜ ๋…น์Œ ๋˜๋Š” ํŒŒ์ผ ์„ ํƒ

์•ฑ์—์„œ ๋…น์Œ

  1. ์ถœ๋ ฅ ํด๋”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. ๋…น์Œ ์†Œ์Šค๋ฅผ ๊ณ ๋ฆ…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’ ๋งˆ์ดํฌ๋งŒ์€ ๋งˆ์ดํฌ ์ž…๋ ฅ๋งŒ, ๋งˆ์ดํฌ + ํšŒ์˜ ์†Œ๋ฆฌ๋Š” ๋งˆ์ดํฌ์™€ ์ปดํ“จํ„ฐ์—์„œ ์žฌ์ƒ๋˜๋Š” ์†Œ๋ฆฌ(Slack ํ—ˆ๋“ค, Zoom, Google Meet ๋“ฑ ์ƒ๋Œ€๋ฐฉ ๋ชฉ์†Œ๋ฆฌ)๋ฅผ ํ•จ๊ป˜ ๋…น์Œํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ์€ ๋ฐ”๋กœ ์ €์žฅ๋˜๋ฉฐ ๋…น์Œ ์ค‘์—๋Š” ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  3. ๋ฐ”๋กœ ๋…น์Œ์„ ๋ˆ„๋ฅด๊ณ  ๋งˆ์ดํฌ ๊ถŒํ•œ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. Windows์—์„œ๋Š” ์„ค์ • โ†’ ๊ฐœ์ธ ์ •๋ณด โ†’ ๋งˆ์ดํฌ์—์„œ ๋งˆ์ดํฌ ์ ‘๊ทผ๊ณผ '๋ฐ์Šคํฌํ†ฑ ์•ฑ์ด ๋งˆ์ดํฌ์— ์•ก์„ธ์Šคํ•˜๋„๋ก ํ—ˆ์šฉ'์ด ์ผœ์ ธ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  4. ํšŒ์˜๊ฐ€ ๋๋‚˜๋ฉด ์ •์ง€๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. ๋งˆ์ดํฌ + ํšŒ์˜ ์†Œ๋ฆฌ๋Š” ์ •์ง€ ๋’ค ๋‘ ํŠธ๋ž™์„ ํ•˜๋‚˜์˜ WAV๋กœ ํ•ฉ์น˜๋Š” ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๋” ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
  5. ์™„์„ฑ๋œ WAV๊ฐ€ ์ž๋™์œผ๋กœ ์ „์‚ฌ ์ž…๋ ฅ์— ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

๋…น์Œ์€ bounded queue์™€ ์ „์šฉ WAV writer๋ฅผ ์‚ฌ์šฉํ•ด ์ ์ง„์ ์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„๋ฆฌ๊ธฐ๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ถ€๋ถ„ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

Note

๋งˆ์ดํฌ + ํšŒ์˜ ์†Œ๋ฆฌ๋Š” Windows์—์„œ ๊ธฐ๋ณธ ์ถœ๋ ฅ ์žฅ์น˜์˜ ์†Œ๋ฆฌ๋ฅผ WASAPI ๋ฃจํ”„๋ฐฑ์œผ๋กœ, macOS 14.6 ์ด์ƒ์—์„œ๋Š” Core Audio ํ”„๋กœ์„ธ์Šค ํƒญ์œผ๋กœ ๋…น์Œํ•ฉ๋‹ˆ๋‹ค. macOS์—์„œ๋Š” ์‹œ์Šคํ…œ ์˜ค๋””์˜ค ๋…น์Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋ฉฐ, ๊ฐœ๋ฐœ PC์—์„œ๋Š” macOS ๋™์ž‘์„ ๊ฒ€์ฆํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”ผ์ปค ๋Œ€์‹  ๋งˆ์ดํฌ๊ฐ€ ์—†๋Š” ํ—ค๋“œํฐ์„ ์“ฐ์„ธ์š”. ์—์ฝ” ์ œ๊ฑฐ๊ฐ€ ์—†์–ด ์Šคํ”ผ์ปค๋กœ ๋‚˜์˜จ ์ƒ๋Œ€ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋งˆ์ดํฌ๊ฐ€ ๋‹ค์‹œ ๋…น์Œํ•˜๋ฉด ๋‘ ๋ฒˆ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. macOS์—์„œ๋Š” ๋งˆ์ดํฌ๊ฐ€ ๋‹ฌ๋ฆฐ ํ—ค๋“œ์…‹์ด๋‚˜ ์—์–ดํŒŸ์ด ๊ธฐ๋ณธ ์ถœ๋ ฅ์ด๋ฉด ์ปดํ“จํ„ฐ ์†Œ๋ฆฌ๋ฅผ ๋”ฐ๋กœ ๋ฐ›์„ ์ˆ˜ ์—†์–ด ๋…น์Œ์ด ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ ์†Œ๋ฆฌ๋Š” ๊ธฐ๋ณธ ์ถœ๋ ฅ ์žฅ์น˜์—์„œ๋งŒ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์•ฑ๋ณ„ ๋…น์Œ๊ณผ ์žฅ์น˜ ์„ ํƒ์€ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํšŒ์˜ ์•ฑ์˜ ์•Œ๋ฆผ์Œ ๋“ฑ ์ปดํ“จํ„ฐ ์†Œ๋ฆฌ๋„ ํ•จ๊ป˜ ๋…น์Œ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด ๋…น์Œ ๊ฐ€์ ธ์˜ค๊ธฐ

  1. ์˜ค๋””์˜ค ํŒŒ์ผ ์„ ํƒ์—์„œ ํšŒ์˜ ํŒŒ์ผ์„ ๊ณ ๋ฆ…๋‹ˆ๋‹ค.
  2. ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ์ถœ๋ ฅ ํด๋”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ํ™”์ž ์ˆ˜๋ฅผ ๋ชจ๋ฅด๋ฉด ์ž๋™, ์ •ํ™•ํžˆ ์•Œ๋ฉด ์ •ํ™•ํžˆ, ๋ฒ”์œ„๋งŒ ์•Œ๋ฉด ๋ฒ”์œ„๋ฅผ ๊ณ ๋ฆ…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํšŒ์˜ ์ฐธ์„์ž๋ฅผ ๊ณ ๋ฅด๋ฉด ์ฐธ์„ ์ธ์› ์•ž๋’ค๋กœ ํ•œ ๋ช…์”ฉ ๋ฒ”์œ„๊ฐ€ ์ž๋™์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ๋งํ•˜์ง€ ์•Š์€ ์ฐธ์„์ž๊ฐ€ ์žˆ์œผ๋ฉด ์ •ํ™•ํžˆ๋Š” ํ•œ ์‚ฌ๋žŒ์˜ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋‘˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ „์‚ฌ ์‹œ์ž‘์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

์ฐธ์„์ž์™€ ๋‹จ์–ด์ง‘

์„ค์ •์—์„œ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด ์—ฌ๋Ÿฌ ํšŒ์˜์— ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฐธ์„์ž: ์ด๋ฆ„, ํŒ€, ์—ญํ• , ๋ณ„์นญ, ์„ค๋ช…
  • ๋‹จ์–ด์ง‘: ์šฉ์–ด์™€ ์„ ํƒ์  ์„ค๋ช…
  • ํšŒ์˜ ๋ฐฐ๊ฒฝ: ๋ชฉ์ , ๋งฅ๋ฝ, ์›ํ•˜๋Š” ์ •๋ฆฌ ๋ฐฉ์‹

์ด ์ •๋ณด๋Š” ํ™”์ž ์ด๋ฆ„๊ณผ ์šฉ์–ด ํ‘œ๊ธฐ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

AI ํšŒ์˜๋ก ๋งŒ๋“ค๊ธฐ

์ „์‚ฌ๊ฐ€ ๋๋‚œ ๋’ค AI ์ฆ๊ฐ• ์‹คํ–‰์„ ๋ˆ„๋ฅด๋ฉด OpenAI ํ˜ธํ™˜ API๋กœ Markdown ํšŒ์˜๋ก์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋…น์Œยท์ „์‚ฌ ์—†์ด ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ „์‚ฌ๋ฌธ๋„ 03 ์ „์‚ฌ ๊ฒฐ๊ณผ AI ์ฆ๊ฐ• ํŒจ๋„์˜ ์ „์‚ฌ๋ฌธ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ๋กœ ๋ฐ”๋กœ ์ฆ๊ฐ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(txtยทmd). Google Drive๋ฅผ ์—ฐ๊ฒฐํ–ˆ๋‹ค๋ฉด ๊ฐ™์€ ํŒจ๋„์˜ Drive์—์„œ ์ „์‚ฌ๋ฌธ ๊ฐ€์ ธ์˜ค๊ธฐ๋กœ Drive์— ์žˆ๋Š” ์ „์‚ฌ๋ฌธ(๋ณดํ†ต Galpi๊ฐ€ ์˜ฌ๋ฆฐ _ํ™”์ž๋ณ„.txt)์„ ๊ณจ๋ผ ์ฆ๊ฐ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ๋ชจ๋ธ: glm-5.3-flash
  • ๊ธฐ๋ณธ API: https://api.z.ai/api/coding/paas/v4
  • ๋ชจ๋ธ, Base URL, ์ถ”๋ก  ๊ฐ•๋„๋Š” ์„ค์ •์—์„œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

์ค€๋น„ ์ˆœ์„œ:

  1. ์„ค์ •์˜ AI ์ฆ๊ฐ• ์„น์…˜์— ์‚ฌ์šฉํ•  ์„œ๋น„์Šค์˜ API Key๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅํ•œ ํ‚ค๋Š” ๋งˆ์Šคํ‚น๋˜์–ด ๋‹ค์‹œ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‚ค๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด AI ์ฆ๊ฐ• API ํ‚ค ์ง€์šฐ๊ธฐ๋กœ ์ง€์šด ๋’ค ์ƒˆ ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
  2. z.ai๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ œ๊ณต์ž์˜ ๋ชจ๋ธ ์ด๋ฆ„๊ณผ OpenAI ํ˜ธํ™˜ Base URL์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. ํ•„์š”ํ•œ ์ฐธ์„์ž๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‹จ์–ด์ง‘ยท์‚ฌ์ „ ์ •๋ณด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. ์ „์‚ฌ๋ฅผ ์™„๋ฃŒํ•œ ๋’ค AI ์ฆ๊ฐ• ์‹คํ–‰์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

ChatGPT๋กœ ๋กœ๊ทธ์ธํ•ด ์‚ฌ์šฉํ•˜๊ธฐ

API Key ๋Œ€์‹  ChatGPT ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•ด ํšŒ์˜๋ก ์ •์ œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์„ค์ • โ†’ AI ์ฆ๊ฐ•์—์„œ ChatGPT๋ฅผ ์„ ํƒํ•˜๊ณ  ChatGPT๋กœ ๊ณ„์†ํ•˜๊ธฐ๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
  2. ์‹œ์Šคํ…œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—ด๋ฆฌ๋ฉด ๋กœ๊ทธ์ธ ํ›„ ์ ‘๊ทผ์„ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค. ์Šน์ธ์ด ๋๋‚˜๋ฉด ์•ฑ์œผ๋กœ ๋Œ์•„์˜ต๋‹ˆ๋‹ค.
  3. ๋ชจ๋ธ์€ ๋กœ๊ทธ์ธํ•œ ๊ณ„์ •์˜ /v1/models ๋ชฉ๋ก์—์„œ ๊ณ ๋ฆ…๋‹ˆ๋‹ค.
  4. ์ถ”๋ก  ๊ฐ•๋„๋Š” ๊ณ ๋ฅธ ๋ชจ๋ธ์ด ์ง€์›ํ•˜๋Š” ๋‹จ๊ณ„ ์ค‘์—์„œ ๊ณ ๋ฆ…๋‹ˆ๋‹ค. ๋ชจ๋ธ ๊ธฐ๋ณธ๊ฐ’์ด๋ฉด ๋ชจ๋ธ์ด ์ •ํ•œ ๊ฐ•๋„๋ฅผ ๊ทธ๋Œ€๋กœ ์”๋‹ˆ๋‹ค. ๋†’์„์ˆ˜๋ก ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ์š”๊ธˆ์ œ ์‚ฌ์šฉ๋Ÿ‰์„ ๋” ์”๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ๋Ÿ‰ ํ•œ๋„๋Š” ChatGPT ์š”๊ธˆ์ œ์™€ ๊ณต์œ ๋˜๋ฉฐ, ํ•œ๋„์— ๊ฑธ๋ ค๋„ ์•ฑ์€ ์š”์ฒญ์„ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ChatGPT ๋Œ€ํ™” ๋‚ด์šฉ๊ณผ ๊ณ„์ • ์ •๋ณด์—๋Š” ์ ‘๊ทผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ์•„์›ƒํ•˜๋ฉด ์„œ๋ฒ„์— ํ† ํฐ ํ๊ธฐ๋ฅผ ์‹œ๋„ํ•˜๊ณ  ๋กœ์ปฌ ํ† ํฐ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ChatGPT ์„ค์ •์˜ ์—ฐ๊ฒฐ๋œ ์•ฑ์—์„œ๋„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ† ํฐ์€ ํ˜„์žฌ 0600 ๊ถŒํ•œ์˜ settings.json์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค(์•„๋ž˜ "๋กœ์ปฌ ๋ฐ์ดํ„ฐ์™€ ๊ฐœ์ธ์ •๋ณด" ์ฐธ๊ณ ). refresh token์€ 30์ผ ์œ ํšจํ•˜๋ฉฐ ๊ฐฑ์‹  ๋•Œ๋งˆ๋‹ค ํšŒ์ „๋ฉ๋‹ˆ๋‹ค.

Warning

์Œ์„ฑ ๋…น์Œ๊ณผ ์ „์‚ฌ(Qwen3ยทWhisperX ๋ชจ๋‘)๋Š” ๋กœ์ปฌ์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. AI ์ฆ๊ฐ• ์‹คํ–‰์„ ๋ˆ„๋ฅด๋ฉด ์ „์‚ฌ๋ฌธ, ์ด๋ฒˆ ํšŒ์˜์—์„œ ์„ ํƒํ•œ ์ฐธ์„์ž, ๋‹จ์–ด์ง‘, ์‚ฌ์ „ ์ •๋ณด๊ฐ€ ์„ค์ •ํ•œ ์™ธ๋ถ€ API(ChatGPT ๋กœ๊ทธ์ธ ์‚ฌ์šฉ ์‹œ OpenAI API)๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋ฏผ๊ฐํ•œ ํšŒ์˜์—์„œ๋Š” ์‚ฌ์šฉ ์ค‘์ธ API ์ œ๊ณต์ž์˜ ๋ณด์•ˆยท๋ณด์กด ์ •์ฑ…์„ ๋จผ์ € ํ™•์ธํ•˜์„ธ์š”.

Google Drive ์—ฐ๊ฒฐ

Drive์— ์˜ฌ๋ ค ๋‘” ๋…น์Œ์„ ๊ฐ€์ ธ์™€ ์ „์‚ฌํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋‚ด Drive์˜ Galpi ํด๋”์— ์ž๋™์œผ๋กœ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Drive๋ฅผ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š์•„๋„ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์€ ๊ทธ๋Œ€๋กœ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Galpi์—๋Š” Google OAuth ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋“ค์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Drive๋Š” ๋‚ด Google Cloud ํ”„๋กœ์ ํŠธ์—์„œ ๋งŒ๋“  ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ•œ ๋ฒˆ ์ €์žฅํ•œ ๋’ค์—๋งŒ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ค€๋น„ ์ ˆ์ฐจ๋Š” ์ด ์ ˆ ๋์˜ Google Drive ์‚ฌ์šฉ ์ค€๋น„์— ์žˆ์œผ๋‹ˆ ๋จผ์ € ์ฝ์–ด ์ฃผ์„ธ์š”.

  1. ์•ฑ์„ ์—ด๋ฉด ๋‚˜ํƒ€๋‚˜๋Š” Google Drive ์—ฐ๊ฒฐ ์นด๋“œ์—์„œ Drive ์—ฐ๊ฒฐ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์ „์—๋Š” ์ด ์ž๋ฆฌ์— Google ํด๋ผ์ด์–ธํŠธ ์„ค์ • ๋ฒ„ํŠผ์ด ๋ณด์ด๋ฉฐ, ์ €์žฅํ•˜๋ฉด Drive ์—ฐ๊ฒฐ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค. ์นด๋“œ๋ฅผ ๋‹ซ์•˜๋‹ค๋ฉด ์„ค์ •์˜ Google Drive์—์„œ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  2. ์‹œ์Šคํ…œ ๋ธŒ๋ผ์šฐ์ €์—์„œ Drive ๊ถŒํ•œ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์ด ๋๋‚˜๋ฉด ๋‚ด Drive์— Galpi ํด๋”๊ฐ€ ์ƒ๊ธฐ๊ณ (์ด๋ฏธ ์žˆ์œผ๋ฉด ๊ทธ ํด๋”๋ฅผ ์”๋‹ˆ๋‹ค), ์ƒ๋‹จ์— ์—ฐ๊ฒฐํ•œ ๊ณ„์ •์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  3. Drive์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ Google Picker๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค. ๋…น์Œ ํŒŒ์ผ์„ ํ•˜๋‚˜ ๊ณ ๋ฅด๋ฉด ์ด ์ปดํ“จํ„ฐ๋กœ ๋‚ด๋ ค๋ฐ›๊ณ , ์ „์‚ฌ ์‹œ์ž‘์œผ๋กœ ์ „์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ ค๋ฐ›๋Š” ๋™์•ˆ์—๋Š” ์ง„ํ–‰ ์นด๋“œ์— ๋ฐ›์€ ํฌ๊ธฐ์™€ ์ „์ฒด ํฌ๊ธฐ, ์ง„ํ–‰๋ฅ ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. Drive์— ์—ฐ๊ฒฐํ•œ ๊ณ„์ •๊ณผ ๋‹ค๋ฅธ ๊ณ„์ •์—์„œ ๊ณ ๋ฅธ ํŒŒ์ผ์€ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AI ์ฆ๊ฐ• ํŒจ๋„์˜ Drive์—์„œ ์ „์‚ฌ๋ฌธ ๊ฐ€์ ธ์˜ค๊ธฐ๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ Picker๋ฅผ ์—ด๋ฉฐ, txtยทmd ์ „์‚ฌ๋ฌธ ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ ์ด ์ปดํ“จํ„ฐ๋กœ ๋‚ด๋ ค๋ฐ›์•„ ์ฆ๊ฐ• ๋Œ€์ƒ์œผ๋กœ ์”๋‹ˆ๋‹ค.
  4. Drive๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด ์ „์‚ฌ, ์ „์‚ฌ๋ฌธ ๊ฐ€์ ธ์˜ค๊ธฐ, AI ์ฆ๊ฐ•์ด ๋๋‚  ๋•Œ๋งˆ๋‹ค ๊ฒฐ๊ณผ(.srt, _ํ™”์ž๋ณ„.txt, _ํšŒ์˜๋ก.md)๊ฐ€ Galpi/<ํšŒ์˜ ์ด๋ฆ„> ํด๋”์— ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค. ๊ฐ™์€ ํšŒ์˜๋ฅผ ๋‹ค์‹œ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๊ฐ™์€ ํŒŒ์ผ์„ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. ํšŒ์˜ ์ด๋ฆ„์€ ๋…น์Œ ํŒŒ์ผ ์ด๋ฆ„์ด๋ฉฐ, ์ƒˆ๋กœ์šด ๋…ธํŠธ_ํ™”์ž๋ณ„.txt ๊ฐ™์€ ํ™”์ž๋ณ„ ์ „์‚ฌ๋ฌธ์€ _ํ™”์ž๋ณ„์„ ๋—€ ์ƒˆ๋กœ์šด ๋…ธํŠธ๊ฐ€ ํšŒ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค(์ด ์ปดํ“จํ„ฐ์˜ ํšŒ์˜ ํด๋”๋„ ๊ฐ™์Šต๋‹ˆ๋‹ค). Galpi๊ฐ€ ์˜ฌ๋ฆฐ ์ „์‚ฌ๋ฌธ์„ Drive์—์„œ ๊ณจ๋ผ ์ฆ๊ฐ•ํ•˜๋ฉด ํšŒ์˜๋ก์€ ์›๋ž˜ ๊ทธ ํšŒ์˜์˜ Drive ํด๋”์— ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.
  5. ์„ค์ • โ†’ Google Drive์—์„œ ๋…น์Œ์„ ๋งˆ์น˜๋ฉด Drive์— ๋ฐ”๋กœ ์ €์žฅ์„ ์ผœ๋ฉด, ๋งˆ์ดํฌ๋กœ ๋…น์Œํ•œ ํŒŒ์ผ์„ ์ •์ง€ํ•˜๋Š” ์ฆ‰์‹œ Galpi/<๋…น์Œ ์ด๋ฆ„> ํด๋”์— ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค. ์˜ฌ๋ฆฌ๋Š” ๋™์•ˆ์—๋„ ์ „์‚ฌ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ™์€ ๋…น์Œ์˜ ์ „์‚ฌ ๊ฒฐ๊ณผ๋Š” ๊ฐ™์€ ํด๋”์— ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค. ์ด ์Šค์œ„์น˜๋Š” Drive์— ์—ฐ๊ฒฐํ•ด์•ผ ์ผค ์ˆ˜ ์žˆ์œผ๋ฉฐ ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•˜๋ฉด ๊บผ์ง‘๋‹ˆ๋‹ค.
  • ๊ถŒํ•œ ๋ฒ”์œ„๋Š” drive.file ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. Galpi๋Š” ์ง์ ‘ ๋งŒ๋“  ํŒŒ์ผ๊ณผ Picker์—์„œ ์ง์ ‘ ๊ณ ๋ฅธ ํŒŒ์ผ์—๋งŒ ์ ‘๊ทผํ•˜๋ฉฐ, Drive์˜ ๋‹ค๋ฅธ ํŒŒ์ผ์€ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ฌ๋ฆฐ ๋’ค Drive์—์„œ ํŒŒ์ผ์ด ๋ฐ”๋€Œ์—ˆ์œผ๋ฉด ๋ฎ์–ด์“ฐ์ง€ ์•Š๊ณ  ์ถฉ๋Œ๋กœ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ ์˜์—ญ์˜ Drive ๋ฒ„์ „ ๋ฎ์–ด์“ฐ๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ์•ผ ๋ฎ์–ด์”๋‹ˆ๋‹ค.
  • ์—…๋กœ๋“œ๊ฐ€ ์‹คํŒจํ•ด๋„ ๋กœ์ปฌ ๊ฒฐ๊ณผ๋Š” ๊ทธ๋Œ€๋กœ ๋‚จ๊ณ , ์‹คํŒจ๋Š” ๊ฒฐ๊ณผ ์˜์—ญ์— ๋”ฐ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์•ฑ์€ ์‹คํŒจํ•œ ์—…๋กœ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋…น์Œ ์—…๋กœ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๋…น์Œ ์˜์—ญ์— ์ด์œ ์™€ ๋‹ค์‹œ ์˜ฌ๋ฆฌ๊ธฐ ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚˜๋ฉฐ, ๋กœ์ปฌ ๋…น์Œ ํŒŒ์ผ์€ ๊ทธ๋Œ€๋กœ ๋‚จ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์˜ฌ๋ฆฐ ๋…น์Œ์€ ๋‹ค์‹œ ์˜ฌ๋ฆฌ์ง€ ์•Š๊ณ , ๊ทธ ์‚ฌ์ด Drive์˜ ์‚ฌ๋ณธ์ด ๋ฐ”๋€Œ์—ˆ์œผ๋ฉด ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธด ๋…น์Œ๋„ ๋””์Šคํฌ์—์„œ 4MB์”ฉ ์ฝ์–ด ์ด์–ด ์˜ฌ๋ฆฌ๋ฏ€๋กœ ํŒŒ์ผ ์ „์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Drive์—์„œ ๊ณ ๋ฅธ ์›๋ณธ์€ ์ฝ๊ธฐ๋งŒ ํ•˜๊ณ  ์˜ฎ๊ธฐ๊ฑฐ๋‚˜ ์ง€์šฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๋ ค๋ฐ›์€ ์‚ฌ๋ณธ์€ ์•ฑ ์บ์‹œ์˜ drive-imports ํด๋”์— ๋‘๋ฉฐ, ์•ฑ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ์ง€์›๋‹ˆ๋‹ค.
  • ์„ค์ • โ†’ Google Drive โ†’ ์—ฐ๊ฒฐ ํ•ด์ œ๋ฅผ ๋ˆ„๋ฅด๋ฉด Google์— ํ† ํฐ ํ๊ธฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋กœ์ปฌ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์ง€์›๋‹ˆ๋‹ค. Drive์— ์˜ฌ๋ฆฐ ํŒŒ์ผ์€ ์ง€์šฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ๊ตํ™˜๊ณผ ํ† ํฐ ๊ฐฑ์‹ ์€ ์•ฑ์ด Google ํ† ํฐ ์—”๋“œํฌ์ธํŠธ(oauth2.googleapis.com)์— ์ง์ ‘ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์•ฑ ์†Œ์Šค์—๋Š” OAuth ํด๋ผ์ด์–ธํŠธ ID๋„ ๋ณด์•ˆ ๋น„๋ฐ€๋ฒˆํ˜ธ๋„ ๋“ค์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ, ๋‚ด๊ฐ€ ์ €์žฅํ•œ ํด๋ผ์ด์–ธํŠธ๋งŒ ์“ฐ๊ณ  ์ธ๊ฐ€ ์ฝ”๋“œ๋Š” PKCE๊ฐ€ ์ง€ํ‚ต๋‹ˆ๋‹ค.
  • ๊ฐœ์ธ์ •๋ณด์ฒ˜๋ฆฌ๋ฐฉ์นจ: https://m16khb.dev/galpi/privacy/

Google Drive ์‚ฌ์šฉ ์ค€๋น„

Drive๋ฅผ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‚ด Google Cloud ํ”„๋กœ์ ํŠธ์˜ OAuth ํด๋ผ์ด์–ธํŠธ(ํด๋ผ์ด์–ธํŠธ ID์™€ ๋ณด์•ˆ ๋น„๋ฐ€๋ฒˆํ˜ธ)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ˆœ์„œ๋กœ ํ•œ ๋ฒˆ๋งŒ ๋งŒ๋“ค์–ด ์ €์žฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  1. Google Cloud ์ฝ˜์†”์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. API ๋ฐ ์„œ๋น„์Šค์—์„œ Google Drive API์™€ Google Picker API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. Google ์ธ์ฆ ํ”Œ๋žซํผ์—์„œ ์•ฑ ์ •๋ณด์™€ ๋Œ€์ƒ(์™ธ๋ถ€)์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์‹œ ์ƒํƒœ๊ฐ€ ํ…Œ์ŠคํŠธ์ด๋ฉด Drive ์—ฐ๊ฒฐ์ด 7์ผ ๋’ค ๋Š๊ธฐ๋ฏ€๋กœ, ์•ฑ์„ ํ”„๋กœ๋•์…˜์œผ๋กœ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. drive.file์€ ๋ฏผ๊ฐํ•˜์ง€ ์•Š์€ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.
  4. ํด๋ผ์ด์–ธํŠธ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ ํ˜• ๋ฐ์Šคํฌํ†ฑ ์•ฑ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ๋ณด์•ˆ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฐ”๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฝ˜์†”์€ ๋งŒ๋“  ์งํ›„์—๋งŒ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค.
  5. ๋งŒ๋“  ํด๋ผ์ด์–ธํŠธ ID์™€ ๋ณด์•ˆ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ • โ†’ Google Drive โ†’ Google ํด๋ผ์ด์–ธํŠธ์— ๋ถ™์—ฌ ๋„ฃ๊ณ  ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. Drive๊ฐ€ ์—ฐ๊ฒฐ๋ผ ์žˆ์œผ๋ฉด ๋จผ์ € ์—ฐ๊ฒฐ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
  6. Drive ์—ฐ๊ฒฐ์„ ๋ˆŒ๋Ÿฌ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ”์œ„๋Š” drive.file ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ๋งŒ๋“  ํด๋ผ์ด์–ธํŠธ๋Š” Google์— ๋ฐ˜์˜๋˜๊ธฐ๊นŒ์ง€ ๋ช‡ ๋ถ„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ณ , ๊ทธ ์‚ฌ์ด ๋™์˜ ํ™”๋ฉด์—์„œ 400 ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉด ์ž ์‹œ ๋’ค ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  7. ์ €์žฅํ•œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์—†์• ๋ ค๋ฉด ํด๋ผ์ด์–ธํŠธ ์‚ญ์ œ๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค(์—ฐ๊ฒฐ ํ•ด์ œ ํ•„์š”). ์‚ญ์ œํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋‹ค์‹œ ์ €์žฅํ•˜๊ธฐ ์ „๊นŒ์ง€ Drive์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ฐ”๊พธ๋ฉด Drive์— ์ƒˆ Galpi ํด๋”๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. drive.file์€ ๊ทธ ํด๋ผ์ด์–ธํŠธ(ํ”„๋กœ์ ํŠธ)๊ฐ€ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—ฐ ํŒŒ์ผ์—๋งŒ ์ ‘๊ทผํ•˜๋ฏ€๋กœ, ์ด์ „ ํด๋ผ์ด์–ธํŠธ๋กœ ์˜ฌ๋ฆฐ ํŒŒ์ผ์€ ์ด์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํšŒ์˜ ํด๋”์™€ ๋…น์Œ์€ ์ƒˆ ํด๋”์— ๋‹ค์‹œ ์˜ฌ๋ผ๊ฐ€๊ณ , ์ถฉ๋Œ๊ณผ ์ตœ์‹  ์—ฌ๋ถ€ ํŒ์ •๋„ ์ƒˆ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ํด๋ผ์ด์–ธํŠธ๋กœ ์˜ฌ๋ฆฐ ํŒŒ์ผ์€ ๋ณด์ด์ง€ ์•Š์„ ๋ฟ Drive์—์„œ ์ง€์›Œ์ง€์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ์ผ์€ Drive ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•œ ์ƒํƒœ์—์„œ๋งŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. refresh token์€ ๋ฐœ๊ธ‰ํ•œ ํด๋ผ์ด์–ธํŠธ์—์„œ๋งŒ ๊ฐฑ์‹ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ํ•ด์ œ๋Š” ์ €์žฅํ•œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ง€์šฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์ €์žฅํ•œ ๋’ค ํ™”๋ฉด์— ๋‹ค์‹œ ๋ณด์—ฌ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €์žฅ๋œ ๋™์•ˆ์—๋Š” ์ž…๋ ฅ์นธ ๋Œ€์‹  ์‚ฌ์šฉ ์ค‘์ธ ํด๋ผ์ด์–ธํŠธ ID์™€ ํด๋ผ์ด์–ธํŠธ ์‚ญ์ œ๋งŒ ๋ณด์ž…๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ €์žฅํ•œ ์ฑ„ ํด๋ผ์ด์–ธํŠธ ์„ค์ •์ด ์—†๋Š” ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋˜๋Œ๋ฆฌ๋ฉด, ์ด์ „ ๋ฒ„์ „์€ ์ €์žฅํ•œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ชจ๋ฅด๋ฏ€๋กœ ํ† ํฐ์„ ๊ฐฑ์‹ ํ•˜์ง€ ๋ชปํ•˜๊ณ  DRIVE_UNAVAILABLE๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ๋Š” ์—ฐ๊ฒฐ ํ•ด์ œํ•œ ๋’ค ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜์„ธ์š”.
  • ์ด์ „ ๋นŒ๋“œ๋Š” ์•ฑ์— ๋“ค์–ด ์žˆ๋˜ ํด๋ผ์ด์–ธํŠธ๋กœ Drive์— ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํด๋ผ์ด์–ธํŠธ๋Š” ๋” ์ด์ƒ ์—†์œผ๋ฏ€๋กœ, ์ด์ „ ๋นŒ๋“œ์—์„œ ๋งŒ๋“  Drive ์—ฐ๊ฒฐ์€ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•ฑ์„ ์ฒ˜์Œ ์‹คํ–‰ํ•˜๋ฉด ๊ทธ ์—ฐ๊ฒฐ์ด ํ•ด์ œ๋˜๋ฉฐ, ์œ„ ์ˆœ์„œ๋Œ€๋กœ ๋‚ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ  Drive ์—ฐ๊ฒฐ์„ ๋‹ค์‹œ ๋ˆŒ๋Ÿฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜๋ฆฌ ๋‹จ๊ณ„์™€ ์‚ฌ์šฉ ๋ชจ๋ธ

๋…น์Œ๋ถ€ํ„ฐ ์ „์‚ฌ๊นŒ์ง€๋Š” ๋ชจ๋‘ ๋กœ์ปฌ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ , AI ์ฆ๊ฐ• ์‹คํ–‰์„ ๋ˆŒ๋ €์„ ๋•Œ๋งŒ ์ „์‚ฌ๋ฌธ์„ ์™ธ๋ถ€ API๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋‹จ๊ณ„ ์ˆœ์„œ๋Š” OS์™€ ๊ด€๊ณ„์—†์ด ๊ฐ™์œผ๋ฉฐ, OS์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์€ ์Œ์„ฑ ์ธ์‹ ์—”์ง„๊ณผ ์—ฐ์‚ฐ ์žฅ์น˜์ž…๋‹ˆ๋‹ค. Linux์šฉ ๋นŒ๋“œ๋Š” ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹จ๊ณ„ macOS (Apple Silicon) Windows 10/11 x64
1. ์ž…๋ ฅ ๋งˆ์ดํฌ ๋…น์Œ(WAV) ๋˜๋Š” ์˜ค๋””์˜ค ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ฐ™์Œ
2. ๋””์ฝ”๋”ฉ ์•ฑ์— ํฌํ•จ๋œ ffmpeg๋กœ 16 kHz ๋ชจ๋…ธ WAV ๋ณ€ํ™˜ ๊ฐ™์Œ
3. ์Œ์„ฑ ์ธ์‹ Qwen3(๊ธฐ๋ณธ): Qwen/Qwen3-ASR-1.7B๋ฅผ MLX 8๋น„ํŠธ ๊ฐ€์ค‘์น˜๋กœ ๋ณ€ํ™˜ํ•ด Metal GPU์—์„œ ์‹คํ–‰
WhisperX: faster-whisper-large-v3-turbo, CTranslate2 CPU int8
WhisperX๋งŒ ์ œ๊ณต: faster-whisper-large-v3-turbo, CTranslate2 CPU int8 ๋˜๋Š” CUDA float16
4. ๋‹จ์–ด ์‹œ๊ฐ„ ์ •๋ ฌ Qwen3: Qwen/Qwen3-ForcedAligner-0.6B(MLX, ์Œ์„ฑ ์ธ์‹๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„์—์„œ ์‹คํ–‰)
WhisperX: kresnik/wav2vec2-large-xlsr-korean(MPS)
kresnik/wav2vec2-large-xlsr-korean(CPU ๋˜๋Š” CUDA)
5. ํ™”์ž๋ถ„๋ฆฌ pyannote/speaker-diarization-community-1(MPS) pyannote/speaker-diarization-community-1(CPU ๋˜๋Š” CUDA)
6. ํ›„์ฒ˜๋ฆฌ ๋ฌธ์žฅ ๋ณ‘ํ•ฉ๊ณผ ํ™˜๊ฐ ๊ตฌ๊ฐ„ ์ œ๊ฑฐ(๊ทœ์น™ ๊ธฐ๋ฐ˜, ๋ชจ๋ธ ์—†์Œ) ๊ฐ™์Œ
7. AI ์ฆ๊ฐ• ์™ธ๋ถ€ LLM API(์•„๋ž˜ ์„ค๋ช… ์ฐธ๊ณ ) ๊ฐ™์Œ
  • macOS์—๋Š” ์—ฐ์‚ฐ ์žฅ์น˜ ์„ ํƒ ๋ฉ”๋‰ด๊ฐ€ ์—†๊ณ , ์„ค์น˜๋œ PyTorch์—์„œ MPS๋ฅผ ์“ธ ์ˆ˜ ์žˆ์œผ๋ฉด ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(CTranslate2์—๋Š” MPS๊ฐ€ ์—†์–ด WhisperX ์Œ์„ฑ ์ธ์‹์€ CPU int8์ž…๋‹ˆ๋‹ค). Windows์—์„œ CUDA๋ฅผ ๊ณ ๋ฅด๋ฉด ์Œ์„ฑ ์ธ์‹ยท์ •๋ ฌยทํ™”์ž๋ถ„๋ฆฌ๋ฅผ ๋ชจ๋‘ ๊ฐ€์†ํ•ฉ๋‹ˆ๋‹ค.
  • WhisperX ํ”„๋ฆฌ์…‹์€ MPS๋‚˜ CUDA์—์„œ ์ •๋ ฌยทํ™”์ž๋ถ„๋ฆฌ๊ฐ€ ์‹คํŒจํ•˜๋ฉด CPU๋กœ ํ•œ ๋ฒˆ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  • Qwen3 ํ”„๋ฆฌ์…‹์€ ์˜ค๋””์˜ค๋ฅผ ๋ฌด์Œ ์œ„์น˜ ๊ธฐ์ค€์œผ๋กœ 30์ดˆ ์ดํ•˜ ๊ตฌ๊ฐ„์œผ๋กœ ๋‚˜๋ˆ  ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฐธ์„์ž ์ด๋ฆ„๊ณผ ๋‹จ์–ด์ง‘์€ ์Œ์„ฑ ์ธ์‹ ๋‹จ๊ณ„์—๋„ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. WhisperX๋Š” hotwords ์˜ต์…˜์œผ๋กœ, Qwen3๋Š” ๋ฌธ๋งฅ ํžŒํŠธ๋กœ ๋„ฃ์Šต๋‹ˆ๋‹ค.
  • AI ์ฆ๊ฐ•์€ API ํ‚ค ๋ฐฉ์‹์ด๋ฉด OpenAI ํ˜ธํ™˜ Chat Completions API(๊ธฐ๋ณธ ๋ชจ๋ธ glm-5.3-flash)๋ฅผ, ChatGPT ๋กœ๊ทธ์ธ ๋ฐฉ์‹์ด๋ฉด OpenAI Responses API์™€ ๊ณ„์ • ๋ชจ๋ธ ๋ชฉ๋ก์—์„œ ๊ณ ๋ฅธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ „์‚ฌ๋ฌธ์ด 48,000์ž๋ฅผ ๋„˜์œผ๋ฉด 16,000์ž ๋‹จ์œ„ ๊ตฌ๊ฐ„์œผ๋กœ ๋‚˜๋ˆ  ๊ตฌ๊ฐ„๋ณ„ ํ•ต์‹ฌ ์‚ฌ์‹ค์„ ๋จผ์ € ์ถ”์ถœํ•˜๊ณ (๋™์‹œ ์š”์ฒญ ์ตœ๋Œ€ 3๊ฐœ), ์ด๋ฅผ ์ข…ํ•ฉํ•ด ์ตœ์ข… ํšŒ์˜๋ก์„ ์”๋‹ˆ๋‹ค. ๊ทธ ์ดํ•˜๋Š” ์š”์ฒญ ํ•œ ๋ฒˆ์œผ๋กœ ํšŒ์˜๋ก์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์‚ฐ์ถœ๋ฌผ

๊ธฐ๋ณธ ์ €์žฅ ์œ„์น˜๋Š” ~/Documents/Galpi์ž…๋‹ˆ๋‹ค(์ถœ๋ ฅ ํด๋”์—์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ํšŒ์˜ ํ•˜๋‚˜์— ํด๋” ํ•˜๋‚˜๊ฐ€ ๋Œ€์‘๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ดํฌ ๋…น์Œ์€ ์‹œ์ž‘ ์‹œ๊ฐ์œผ๋กœ ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ (YYYY-MM-DD HHMMSS ๋…น์Œ), ์ „์‚ฌ ๊ฒฐ๊ณผ๋Š” ์˜ค๋””์˜ค ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ํด๋”์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์ ธ์˜จ ํ™”์ž๋ณ„ ์ „์‚ฌ๋ฌธ์€ ๋…น์Œ ์ด๋ฆ„์˜ ํด๋”์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค(์ƒˆ๋กœ์šด ๋…ธํŠธ_ํ™”์ž๋ณ„.txt โ†’ ์ƒˆ๋กœ์šด ๋…ธํŠธ). ํด๋” ์•ˆ์˜ ๋ชจ๋“  ํŒŒ์ผ์€ ํด๋”์™€ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

~/Documents/Galpi/
โ”œโ”€โ”€ 2026-08-24 143052 ๋…น์Œ/     # ๋งˆ์ดํฌ ๋…น์Œ (์‹œ์ž‘ ์‹œ๊ฐ์œผ๋กœ ์ž๋™ ์ด๋ฆ„)
โ”‚   โ”œโ”€โ”€ 2026-08-24 143052 ๋…น์Œ.wav
โ”‚   โ”œโ”€โ”€ 2026-08-24 143052 ๋…น์Œ.srt
โ”‚   โ”œโ”€โ”€ 2026-08-24 143052 ๋…น์Œ_ํ™”์ž๋ณ„.txt
โ”‚   โ”œโ”€โ”€ 2026-08-24 143052 ๋…น์Œ.aligned.v2.json
โ”‚   โ””โ”€โ”€ 2026-08-24 143052 ๋…น์Œ_ํšŒ์˜๋ก.md   # AI ์ฆ๊ฐ• ์‹คํ–‰ ์‹œ
โ””โ”€โ”€ ํŒ€๋ฏธํŒ…/                      # ๊ฐ€์ ธ์˜จ ์˜ค๋””์˜คยท์ „์‚ฌ๋ฌธ (๋…น์Œ ์ด๋ฆ„, `_ํ™”์ž๋ณ„` ์ œ์™ธ)
    โ”œโ”€โ”€ ํŒ€๋ฏธํŒ….srt
    โ”œโ”€โ”€ ํŒ€๋ฏธํŒ…_ํ™”์ž๋ณ„.txt
    โ”œโ”€โ”€ ํŒ€๋ฏธํŒ….aligned.v2.json
    โ””โ”€โ”€ ํŒ€๋ฏธํŒ…_ํšŒ์˜๋ก.md

๊ฐ™์€ ์ด๋ฆ„์˜ ํšŒ์˜๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ํŒ€๋ฏธํŒ… 2์ฒ˜๋Ÿผ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ž…๋‹ˆ๋‹ค. ์ฒดํฌํฌ์ธํŠธ(.aligned.v2.json)๋Š” ๋‘ ํ”„๋ฆฌ์…‹ ๋ชจ๋‘ ๋งŒ๋“ค๋ฉฐ, ๊ฐ™์€ ์˜ค๋””์˜ค๋ฅผ ๋‹ค์‹œ ์ „์‚ฌํ•  ๋•Œ ์ „์‚ฌยท์ •๋ ฌ ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ํ™”์ž๋ถ„๋ฆฌ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฒดํฌํฌ์ธํŠธ์—๋Š” ๋งŒ๋“  ์—”์ง„์ด ๊ธฐ๋ก๋˜๋ฏ€๋กœ ๋‹ค๋ฅธ ํ”„๋ฆฌ์…‹์ด ๋งŒ๋“  ์ฒดํฌํฌ์ธํŠธ๋Š” ์žฌ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ์šฉ๋„
.srt ์ž๋ง‰๊ณผ ํƒ€์ž„์ฝ”๋“œ
_ํ™”์ž๋ณ„.txt ํ™”์ž ๋‹จ์œ„ ์ฝ๊ธฐ ์‰ฌ์šด ์ „์‚ฌ๋ฌธ
.aligned.v2.json ์ „์‚ฌยท์ •๋ ฌ ์ฒดํฌํฌ์ธํŠธ์™€ ์žฌ์ฒ˜๋ฆฌ ๊ธฐ๋ฐ˜
_ํšŒ์˜๋ก.md ๊ฒฐ์ •, ๋‹ด๋‹น, ๊ธฐํ•œ, ๋…ผ์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๋ฌธ์„œ

์™„๋ฃŒ ํ™”๋ฉด์—์„œ ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ์ถœ๋ ฅ ํด๋”๋ฅผ Finder(macOS) ๋˜๋Š” ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ(Windows)๋กœ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ๋ฐ์ดํ„ฐ์™€ ๊ฐœ์ธ์ •๋ณด

  • ์Œ์„ฑ๊ณผ ์ „์‚ฌ ์‚ฐ์ถœ๋ฌผ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ๋กœ์ปฌ ํด๋”์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ์ „์‚ฌยท์ •๋ ฌยทํ™”์ž๋ถ„๋ฆฌ ๋ชจ๋ธ(Qwen3, WhisperX, pyannote)์€ Galpi์˜ ์•ฑ ์ „์šฉ Hugging Face ์บ์‹œ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • Hugging Face ํ† ํฐ, AI ์ฆ๊ฐ• API ํ‚ค, ChatGPT ๋กœ๊ทธ์ธ ํ† ํฐ์€ ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Windows์—์„œ๋Š” Windows Credential Manager์˜ com.m16khb.galpi:hugging-face-token, com.m16khb.galpi:assistant-api-key, com.m16khb.galpi:chatgpt-tokens ํ•ญ๋ชฉ์— ์ €์žฅ๋˜๋ฉฐ, ๊ธด ๊ฐ’์€ ์—ฌ๋Ÿฌ ํ•ญ๋ชฉ์— ๋‚˜๋ˆ„์–ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. macOS์—์„œ๋Š” Application Support ์•„๋ž˜ ์„ค์ • ํŒŒ์ผ(settings.json)์— 0600 ๊ถŒํ•œ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ChatGPT ํ† ํฐ(accessยทrefresh)๋„ ์ด ํŒŒ์ผ์— ํ‰๋ฌธ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฏ€๋กœ, ํŒŒ์ผ์ด ์œ ์ถœ๋˜๋ฉด ๊ณ„์ •์˜ API ์ ‘๊ทผ์ด ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ „ ๋ฒ„์ „์ด ๋‚จ๊ธด Credential Manager์˜ ๋กœ๊ทธ์ธ ์„ธ์…˜ ํ•ญ๋ชฉ com.m16khb.galpi:gateway-session๊ณผ ์„ค์ • ํŒŒ์ผ์˜ gateway* ํ‚ค๋Š” ๋” ์“ฐ์ง€ ์•Š์œผ๋ฉฐ ์ง€์›Œ๋„ ๋ฉ๋‹ˆ๋‹ค.
  • Google Drive ํ† ํฐ๋„ ๊ฐ™์€ ๊ฒฝ๋กœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Windows์—์„œ๋Š” com.m16khb.galpi:drive-session ํ•ญ๋ชฉ์—, macOS์—์„œ๋Š” settings.json์— ํ‰๋ฌธ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐํ•œ Drive ๊ณ„์ •์˜ ์ด๋ฉ”์ผ๊ณผ Galpi ํด๋” ID๋Š” ๋‘ ํ”Œ๋žซํผ ๋ชจ๋‘ settings.json์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋…น์Œ์„ ๋งˆ์น˜๋ฉด Drive์— ๋ฐ”๋กœ ์ €์žฅํ•˜๋Š” ์„ ํƒ(driveSaveRecordings)๋„ settings.json์— ์žˆ์œผ๋ฉฐ, ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•˜๋ฉด ๊บผ์ง‘๋‹ˆ๋‹ค.
  • ๋‚ด Google ํด๋ผ์ด์–ธํŠธ์˜ ๋ณด์•ˆ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” Windows์—์„œ com.m16khb.galpi:drive-client-secret ํ•ญ๋ชฉ์—, macOS์—์„œ๋Š” settings.json์— ํ‰๋ฌธ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ID(driveClientId)๋Š” ๋‘ ํ”Œ๋žซํผ ๋ชจ๋‘ settings.json์— ์žˆ์œผ๋ฉฐ, Drive ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•ด๋„ ๋‚จ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์‚ญ์ œ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋‘˜ ๋‹ค ์ง€์›๋‹ˆ๋‹ค.
  • macOS์—์„œ๋Š” ์ž๊ฒฉ ์ฆ๋ช…์„ ์•„์ง Keychain์œผ๋กœ ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Keychain์€ ํ•ญ๋ชฉ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์•ฑ์˜ ์ฝ”๋“œ ์„œ๋ช…์— ๋ฌถ๋Š”๋ฐ, ํ˜„์žฌ ๋นŒ๋“œ๋Š” ad-hoc ์„œ๋ช…์ด๋ผ ๋นŒ๋“œ๋งˆ๋‹ค ์„œ๋ช…์ด ๋‹ฌ๋ผ์ ธ ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค ์ ‘๊ทผ ํ—ˆ์šฉ ์ฐฝ์„ ๋‹ค์‹œ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. macOS์˜ Keychain ์ „ํ™˜์€ Developer ID ์„œ๋ช…๊ณผ ํ•จ๊ป˜ ์ ์šฉํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
  • AI ํšŒ์˜๋ก์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ์ „์‚ฌ๋ฌธ์€ ์™ธ๋ถ€ LLM API๋กœ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • worker๋Š” ๊ณ ์ •๋œ ํ”„๋กœ๊ทธ๋žจ๊ณผ argv๋กœ ์‹คํ–‰๋˜๋ฉฐ ์…ธ ๋ฌธ์ž์—ด์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜

TypeScript UI
    โ”‚ Tauri IPC + validated events
    โ–ผ
Rust application
    โ”‚ ports
    โ”œโ”€โ”€ ๋งˆ์ดํฌ ๋…น์Œ๊ธฐ (CPAL: CoreAudio/WASAPI)
    โ”œโ”€โ”€ filesystem / opener
    โ””โ”€โ”€ supervised Python worker
            โ”‚ versioned JSONL
            โ–ผ
       Qwen3ยทWhisperX / pyannote / assistant
๊ฒฝ๋กœ ์—ญํ• 
src/ ๋„๋ฉ”์ธ ๊ณ„์•ฝ(์ž‘์—…ยทํ™”์žยท๋ฐฑ์—”๋“œ ํฌํŠธ)๊ณผ ๊ฒ€์ฆ, ์ƒํƒœ ๋จธ์‹ , Zod ๊ฒฝ๊ณ„, DOM UI
src-tauri/ Tauri ๋ช…๋ น, Rust use caseยท๋„๋ฉ”์ธ ๊ฐ’ ๊ฐ์ฒด, ๋…น์Œยทํ”„๋กœ์„ธ์Šค ์–ด๋Œ‘ํ„ฐ
worker/ Qwen3ยทWhisperX ํ”„๋ฆฌ์…‹ ์ „์‚ฌ, ์ •๋ ฌ, ํ™”์ž๋ถ„๋ฆฌ, ํšŒ์˜๋ก ๊ฐ€๊ณต
scripts/ ์•„ํ‚คํ…์ฒ˜ ๊ฒ€์‚ฌ, sidecar staging, DMG ํŒจํ‚ค์ง•
DESIGN.md UI, ์ ‘๊ทผ์„ฑ, ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ์˜ ๊ทœ๋ฒ”
docs/ARCHITECTURE.md ๋ ˆ์ด์–ด ๊ตฌ์กฐ์™€ ํฌํŠธ ์†Œ์œ ๊ถŒ์˜ ๊ทœ๋ฒ”
docs/ROADMAP.md ํ˜„์žฌ ์ƒํƒœ์™€ ๋‹ค์Œ ์ œํ’ˆ ๋‹จ๊ณ„

๊ฐœ๋ฐœ ๋ช…๋ น

๋น ๋ฅธ ๊ฒ€์ฆ

bun run check
bun test

์ „์ฒด ๊ฒ€์ฆ

Python ๊ฒ€์ฆ์—๋Š” uv/uvx๊ฐ€ PATH์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Homebrew๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด brew install uv๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <WhisperX Python ๊ฒฝ๋กœ>์—๋Š” WhisperX๊ฐ€ ์„ค์น˜๋œ Python ์‹คํ–‰ ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค.

cargo fmt --manifest-path src-tauri/Cargo.toml --check
cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warnings
cargo test --manifest-path src-tauri/Cargo.toml --all-targets
uvx ruff check worker
uvx ruff format --check worker
uvx basedpyright --pythonpath <WhisperX Python ๊ฒฝ๋กœ>
PYTHONPATH=. python3 -m unittest discover -s worker/tests -t . -v   # macOS
# Windows PowerShell
$env:PYTHONPATH='.'; python3 -m unittest discover -s worker/tests -t . -v

ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ

bun run build

๊ฒฐ๊ณผ:

src-tauri/target/release/bundle/macos/Galpi.app
src-tauri/target/release/bundle/dmg/Galpi_0.1.0_aarch64.dmg

macOS์—์„œ๋Š” ์œ„ ๋‘ ํŒŒ์ผ์„, Windows x64์—์„œ๋Š” NSIS ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

src-tauri/target/release/bundle/nsis/*.exe

macOS ๋นŒ๋“œ๋Š” .app์„ ๋งŒ๋“  ๋’ค hdiutil๋กœ DMG๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Windows ๋นŒ๋“œ๋Š” ์„œ๋ช…๋˜์ง€ ์•Š์€ NSIS .exe๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. CI๋Š” ๋‘ ํ”Œ๋žซํผ์„ ๋ชจ๋‘ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋ฐฐํฌํ•  ๋•Œ

์ง€๊ธˆ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•˜์ง€ ์•Š๊ณ  ๊ฐ์ž INSTALL.md๋กœ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ˆ์€ ๋‚˜์ค‘์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•  ๋•Œ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋ช…ยท๊ณต์ฆ๋˜์ง€ ์•Š์€ DMG๋ฅผ ๋ฐ›์€ Mac์€ Gatekeeper๊ฐ€ ์‹คํ–‰์„ ๋ง‰์œผ๋ฏ€๋กœ, ๋ฐฐํฌ ์ „์— Apple Developer ์ธ์ฆ์„œ๋กœ ์„œ๋ช…ํ•˜๊ณ  ๊ณต์ฆํ•˜์„ธ์š”.

์„œ๋ช…์ด ๋ถ™์œผ๋ฉด ์ž๊ฒฉ ์ฆ๋ช…๋„ Keychain์œผ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. macOS๋Š” Keychain ํ•ญ๋ชฉ์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์•ฑ์˜ ์ฝ”๋“œ ์„œ๋ช…์— ๋ฌถ์–ด ๋‘๋ฏ€๋กœ, ์„œ๋ช…์ด ๊ณ ์ •๋˜๊ธฐ ์ „์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค ์ ‘๊ทผ ํ—ˆ์šฉ ์ฐฝ์„ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

.github/workflows/release.yml์ด v* ํƒœ๊ทธ๋‚˜ ์ˆ˜๋™ ์‹คํ–‰์—์„œ DMG์™€ Windows ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด ์›Œํฌํ”Œ๋กœ ์•„ํ‹ฐํŒฉํŠธ๋กœ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ €์žฅ์†Œ ์‹œํฌ๋ฆฟ์ด ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ์„œ๋ช…ยท๊ณต์ฆ๊นŒ์ง€ ์ˆ˜ํ–‰ํ•œ ๋’ค codesign/spctl๋กœ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

์‹œํฌ๋ฆฟ ๋‚ด์šฉ
APPLE_CERTIFICATE Developer ID Application ์ธ์ฆ์„œ(.p12)์˜ base64
APPLE_CERTIFICATE_PASSWORD ํ•ด๋‹น .p12์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ
APPLE_SIGNING_IDENTITY ์˜ˆ: Developer ID Application: ์ด๋ฆ„ (TEAMID)
APPLE_ID / APPLE_PASSWORD / APPLE_TEAM_ID ๊ณต์ฆ์šฉ Apple ID์™€ ์•ฑ ์•”ํ˜ธ, ํŒ€ ID

์‹œํฌ๋ฆฟ์ด ์—†์œผ๋ฉด ์›Œํฌํ”Œ๋กœ๋Š” ๊ธฐ์กด์ฒ˜๋Ÿผ ad-hoc ์„œ๋ช… DMG๋ฅผ ๋งŒ๋“ค๋ฉฐ, ์ด๋Š” ๋‚ด๋ถ€ ํ…Œ์ŠคํŠธ์šฉ์ž…๋‹ˆ๋‹ค.

Hardened Runtime์— ํ•„์š”ํ•œ entitlement๋Š” src-tauri/Entitlements.plist์— ์ด๋ฏธ ์„ ์–ธ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Galpi๋Š” ์ฒซ ์‹คํ–‰์—์„œ ์ž์ฒด Python ํ™˜๊ฒฝ์„ ์„ค์น˜ํ•˜๊ณ  ๊ทธ ์•ˆ์˜ PyTorchยทMLX๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ฏ€๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒ€์ฆ ๋น„ํ™œ์„ฑํ™”์™€ ์‹คํ–‰ ๊ฐ€๋Šฅ ๋ฉ”๋ชจ๋ฆฌ ํ—ˆ์šฉ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ์„œ๋ช…๋œ ๋นŒ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๊ฒ€์ฆํ•œ ์ ์€ ์—†์œผ๋ฏ€๋กœ, ์ฒซ ๊ณต์ฆ ์‹œ ์ด ๋ถ€๋ถ„์„ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•˜์„ธ์š”.

๋ฌธ์ œ ํ•ด๊ฒฐ

์ฆ์ƒ ํ™•์ธํ•  ๋‚ด์šฉ
cargo tauri ๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ cargo install tauri-cli --version 2.11.4 --locked
๋กœ์ปฌ ์—”์ง„ ์ค€๋น„๊ฐ€ ์ค‘๊ฐ„์— ์‹คํŒจํ•จ ๊ฐ™์€ ๋ฒ„ํŠผ์„ ๋‹ค์‹œ ๋ˆ„๋ฅด๋ฉด ์ด์–ด์„œ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค(์‹คํŒจํ•œ ๋ถ€๋ถ„ ์„ค์น˜๋Š” ์ž๋™์œผ๋กœ ์ •๋ฆฌ๋ฉ๋‹ˆ๋‹ค). ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋„ ํ™•์ธํ•˜์„ธ์š”
Qwen3 ์ค€๋น„ ์‹œ ๋‚ด๋ ค๋ฐ›์„ ํŒŒ์ผ์ด ํผ Qwen3 ํ”„๋ฆฌ์…‹์€ ์ „์‚ฌยท์ •๋ ฌ ๋ชจ๋ธ ํ•ฉ๊ณ„ ์•ฝ 6.6GB๋ฅผ ๋‚ด๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค
๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ๊ฐ€ 401/403์œผ๋กœ ์‹คํŒจ ๋ชจ๋ธ ์ด์šฉ ์กฐ๊ฑด ๋™์˜์™€ Fine-grained Read ํ† ํฐ ํ™•์ธ
๋งˆ์ดํฌ ๋…น์Œ์ด ์‹œ์ž‘๋˜์ง€ ์•Š์Œ ์‹œ์Šคํ…œ ์„ค์ •์—์„œ Galpi ๋งˆ์ดํฌ ๊ถŒํ•œ ํ™•์ธ
์ƒ๋Œ€๋ฐฉ ์Œ์„ฑ์ด ๋…น์Œ๋˜์ง€ ์•Š์Œ ํ˜„์žฌ ์‹œ์Šคํ…œ ์˜ค๋””์˜ค ์บก์ฒ˜๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Œ
AI ํšŒ์˜๋ก์ด ์‹คํŒจํ•จ API Key, Base URL, ๋ชจ๋ธ ์ด๋ฆ„, ์ œ๊ณต์ž ์‚ฌ์šฉ๋Ÿ‰ ํ•œ๋„ ํ™•์ธ
๋‹ค๋ฅธ Mac์—์„œ ์•ฑ์„ ์—ด ์ˆ˜ ์—†์Œ ๋‚ด๋ ค๋ฐ›์€ ๋ฏธ์„œ๋ช…ยท๋ฏธ๊ณต์ฆ ๋นŒ๋“œ๋Š” Gatekeeper๊ฐ€ ๋ง‰์Šต๋‹ˆ๋‹ค. ๊ทธ Mac์—์„œ INSTALL.md๋กœ ์ง์ ‘ ๋นŒ๋“œํ•˜์„ธ์š”
์•ฑ ์—…๋ฐ์ดํŠธ ํ›„ ์—”์ง„์ด ๋‹ค์‹œ ๋Œ€๊ธฐ๋กœ ํ‘œ์‹œ๋จ ์—”์ง„ ์ค€๋น„ ๋งˆ์ปค๊ฐ€ ์˜์กด์„ฑ ์ž ๊ธˆ ํŒŒ์ผ์˜ ํ•ด์‹œ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ž ๊ธˆ์ด ๋ฐ”๋€Œ๋ฉด ๋กœ์ปฌ ์—”์ง„ ์ค€๋น„๋ฅผ ํ•œ ๋ฒˆ ๋” ๋ˆŒ๋Ÿฌ ํ™˜๊ฒฝ์„ ๋งž์ถฅ๋‹ˆ๋‹ค(๋ชจ๋ธ์€ ๋‹ค์‹œ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค)

ํ˜„์žฌ ์ƒํƒœ

Galpi๋Š” ํ™œ๋ฐœํžˆ ๊ฐœ๋ฐœ ์ค‘์ธ 0.1.0 ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌ ์ž๋™ ์—…๋ฐ์ดํŠธ, ์„œ๋ช…ยท๊ณต์ฆ, ์‹œ์Šคํ…œ ์˜ค๋””์˜ค ์บก์ฒ˜, ํšŒ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ดํ›„ ๋‹จ๊ณ„๋กœ ๊ณ„ํš๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๊ณ„ํš์€ docs/ROADMAP.md๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋ผ์ด์„ ์Šค

GPL-3.0-or-later. ์ „๋ฌธ์€ LICENSE๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

Copyright (C) 2026 m16khb

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Releases

Packages

Contributors

Languages