์๊ฐํ ๋ํ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๋ AI ์ฑ๋ด ์์คํ ์ ๋๋ค. GPT-4o-mini์ OpenAI TTS๋ฅผ ํ์ฉํ์ฌ ์์ฐ์ค๋ฌ์ด ๋ํ์ ์์ฑ์ ์ ๊ณตํฉ๋๋ค.
- ์ค์๊ฐ ์์ฑ ๋ํ: ์ฌ์ฉ์์ ์์ฑ์ ์ธ์ํ๊ณ AI๊ฐ ์์ฑ์ผ๋ก ์๋ต
- ์์ฐ์ค๋ฌ์ด AI ํ๋ฅด์๋: ๊ธด์ฅํ ์ฌ๋๋์ ํน์ง์ ์ด๋ฆฐ ๋ํ ์คํ์ผ
- STT โ GPT โ TTS ํ์ดํ๋ผ์ธ: ์์ ํ ์์ฑ ๋ํ ๊ฒฝํ
- ์น ์ธํฐํ์ด์ค: React ๊ธฐ๋ฐ ํ๋ก ํธ์๋ ์ ๊ณต
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ Client โ โโโโบ โ Main API โ โโโโบ โ STT Server โ
โ (React) โ โ (FastAPI) โ โ (Whisper) โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโ
โ OpenAI โ
โ GPT + TTS โ
โโโโโโโโโโโโโโโโ
-
Main API Server (main.py)
- FastAPI ๊ธฐ๋ฐ ๋ฉ์ธ ์๋ฒ
- GPT-4o-mini๋ฅผ ํตํ ๋ํ ์์ฑ
- OpenAI TTS-1์ ํตํ ์์ฑ ํฉ์ฑ
- ํฌํธ:
8000
-
STT Server (stt_server.py)
- Whisper ๋ชจ๋ธ์ ์ฌ์ฉํ ์์ฑ ์ธ์
- MP3/WebM ํ์ผ์ ํ ์คํธ๋ก ๋ณํ
- ํฌํธ:
5001
-
Client (hackathon1024Full/client/)
- React + Vite ๊ธฐ๋ฐ ์น ์ธํฐํ์ด์ค
- ์์ฑ ๋ น์ ๋ฐ ์ฌ์ ๊ธฐ๋ฅ
- ์ค์๊ฐ ๋ํ UI
- Python 3.8+
- Node.js 16+
- OpenAI API Key
pip install fastapi uvicorn python-dotenv
pip install langchain langchain-openai openai
pip install openai-whisper
pip install requests python-multipartmain.py์ YOUR_API_KEY๋ฅผ ์ค์ OpenAI API ํค๋ก ๋ณ๊ฒฝํ๊ฑฐ๋, .env ํ์ผ์ ์์ฑ:
OPENAI_API_KEY=your_api_key_hereํฐ๋ฏธ๋ 1: STT ์๋ฒ
python stt_server.py- ์๋ฒ ์ฃผ์: http://localhost:5001
- API ๋ฌธ์: http://localhost:5001/docs
ํฐ๋ฏธ๋ 2: ๋ฉ์ธ API ์๋ฒ
python main.py- ์๋ฒ ์ฃผ์: http://localhost:8000
- API ๋ฌธ์: http://localhost:8000/docs
cd hackathon1024Full/client
npm install
npm run devํ ์คํธ ๋ฉ์์ง๋ฅผ ๋ฐ์ AI ์๋ต๊ณผ ์์ฑ์ ๋ฐํํฉ๋๋ค.
์์ฒญ:
{
"message": "์๋
ํ์ธ์, ๋ฐ๊ฐ์์!"
}์๋ต:
{
"audio": "base64_encoded_mp3_audio"
}์์ฑ ํ์ผ์ ๋ฐ์ ํ ์คํธ ๋ณํ โ AI ์๋ต โ ์์ฑ ์์ฑ์ ์ ์ฒด ํ์ดํ๋ผ์ธ์ ์คํํฉ๋๋ค.
์์ฒญ:
file: MP3 ๋๋ WebM ์ค๋์ค ํ์ผ
์๋ต:
{
"recognized_text": "์ฌ์ฉ์๊ฐ ๋งํ ๋ด์ฉ",
"audio": "base64_encoded_mp3_audio"
}์ค๋์ค ํ์ผ์ ํ๊ตญ์ด ํ ์คํธ๋ก ๋ณํํฉ๋๋ค.
์์ฒญ:
file: MP3 ๋๋ WebM ์ค๋์ค ํ์ผ
์๋ต:
{
"text": "์ธ์๋ ํ
์คํธ",
"language": "ko",
"filename": "uploaded_file.mp3"
}ํ๋กฌํํธ ์์ง๋์ด๋ง์ ํตํด ๊ตฌํ๋ AI ์บ๋ฆญํฐ ํน์ง:
- ์ฑ๊ฒฉ: ์์ค์์ด ๋ง๊ณ ์กฐ์ฌ์ค๋ฝ์ง๋ง ์น์ ํจ
- ๋งํฌ: "์...", "์ ๊ธฐ...", "๊ทธ๊ฒ..." ๋ฑ ์์ฐ์ค๋ฌ์ด ์ฃผ์ ํจ ํํ
- ๋ํ ์คํ์ผ:
- 2-3๋ฌธ์ฅ์ ์งง์ ์๋ต
- ๊ณต๊ฐ๊ณผ ํธ์์ ํตํ ๋ํ ์ด์ด๊ฐ๊ธฐ
- ์๋๋ฐฉ์ ๋ฐฐ๋ คํ๋ ํ๋
- ์์ฑ:
- OpenAI TTS-1 "nova" ๋ณด์ด์ค ์ฌ์ฉ
- 0.9๋ฐฐ์์ผ๋ก ๊ธด์ฅ๊ฐ ํํ
- FastAPI: ๊ณ ์ฑ๋ฅ ์น ํ๋ ์์ํฌ
- LangChain: LLM ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ ์์ํฌ
- OpenAI GPT-4o-mini: ๋ํ ์์ฑ
- OpenAI TTS-1: ์์ฑ ํฉ์ฑ
- Whisper (base): ์์ฑ ์ธ์
- React: UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Vite: ๋น๋ ๋๊ตฌ
- TanStack Router: ๋ผ์ฐํ
.
โโโ main.py # ๋ฉ์ธ API ์๋ฒ
โโโ stt_server.py # STT ์๋ฒ
โโโ hackathon1024Full/
โ โโโ client/ # React ํ๋ก ํธ์๋
โ โโโ src/
โ โ โโโ features/ # ๊ธฐ๋ฅ๋ณ ์ปดํฌ๋ํธ
โ โ โโโ routes/ # ํ์ด์ง ๋ผ์ฐํธ
โ โ โโโ shared/ # ๊ณตํต ์ปดํฌ๋ํธ
โ โโโ public/ # ์ ์ ํ์ผ
โโโ README.md
- API ํค ๋ณด์: ํ๋ก๋์ ํ๊ฒฝ์์๋ API ํค๋ฅผ ํ๊ฒฝ ๋ณ์๋ก ๊ด๋ฆฌํ์ธ์
- CORS ์ค์ : ํ์ฌ ๋ชจ๋ Origin์ ํ์ฉํ๊ณ ์์ผ๋ฏ๋ก, ํ๋ก๋์ ์์๋ ํน์ ๋๋ฉ์ธ์ผ๋ก ์ ํํ์ธ์
- STT ์๋ฒ ํ์:
/voice-chat์๋ํฌ์ธํธ ์ฌ์ฉ ์ STT ์๋ฒ๊ฐ ์คํ ์ค์ด์ด์ผ ํฉ๋๋ค - ์ค๋์ค ํ์ผ ํฌ๊ธฐ: ์ต์ 5KB ์ด์์ ์ค๋์ค ํ์ผ์ด ํ์ํฉ๋๋ค
STT ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค
โ python stt_server.py๋ก STT ์๋ฒ๊ฐ ์คํ ์ค์ธ์ง ํ์ธํ์ธ์
โ pip install openai-whisper๋ก Whisper๋ฅผ ์ฌ์ค์นํ์ธ์
โ main.py์ OPENAI_API_KEY ์ค์ ์ ํ์ธํ์ธ์
์ด ํ๋ก์ ํธ๋ ๊ต์ก ๋ฐ ์ฐ๊ตฌ ๋ชฉ์ ์ผ๋ก ์ ์๋์์ต๋๋ค.
๋ฒ๊ทธ ๋ฆฌํฌํธ ๋ฐ ๊ธฐ๋ฅ ์ ์์ Issues๋ฅผ ํตํด ์ ์ถํด ์ฃผ์ธ์.
Made with โค๏ธ for Hackathon 2025