Skip to content

Latest commit

ย 

History

3 Commits

Folders and files

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

Repository files navigation

๐ŸŽญ AI ์†Œ๊ฐœํŒ… ์‹œ๋ฎฌ๋ ˆ์ด์…˜

์†Œ๊ฐœํŒ… ๋Œ€ํ™”๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” AI ์ฑ—๋ด‡ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. GPT-4o-mini์™€ OpenAI TTS๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋Œ€ํ™”์™€ ์Œ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋Œ€ํ™”: ์‚ฌ์šฉ์ž์˜ ์Œ์„ฑ์„ ์ธ์‹ํ•˜๊ณ  AI๊ฐ€ ์Œ์„ฑ์œผ๋กœ ์‘๋‹ต
  • ์ž์—ฐ์Šค๋Ÿฌ์šด AI ํŽ˜๋ฅด์†Œ๋‚˜: ๊ธด์žฅํ•œ ์‚ฌ๋žŒ๋žŒ์˜ ํŠน์ง•์„ ์‚ด๋ฆฐ ๋Œ€ํ™” ์Šคํƒ€์ผ
  • STT โ†’ GPT โ†’ TTS ํŒŒ์ดํ”„๋ผ์ธ: ์™„์ „ํ•œ ์Œ์„ฑ ๋Œ€ํ™” ๊ฒฝํ—˜
  • ์›น ์ธํ„ฐํŽ˜์ด์Šค: React ๊ธฐ๋ฐ˜ ํ”„๋ก ํŠธ์—”๋“œ ์ œ๊ณต

๐Ÿ—๏ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Client    โ”‚ โ”€โ”€โ”€โ–บ โ”‚  Main API    โ”‚ โ”€โ”€โ”€โ–บ โ”‚  STT Server  โ”‚
โ”‚  (React)    โ”‚      โ”‚  (FastAPI)   โ”‚      โ”‚  (Whisper)   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚
                            โ–ผ
                     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                     โ”‚   OpenAI     โ”‚
                     โ”‚ GPT + TTS    โ”‚
                     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๊ตฌ์„ฑ ์š”์†Œ

  1. Main API Server (main.py)

    • FastAPI ๊ธฐ๋ฐ˜ ๋ฉ”์ธ ์„œ๋ฒ„
    • GPT-4o-mini๋ฅผ ํ†ตํ•œ ๋Œ€ํ™” ์ƒ์„ฑ
    • OpenAI TTS-1์„ ํ†ตํ•œ ์Œ์„ฑ ํ•ฉ์„ฑ
    • ํฌํŠธ: 8000
  2. STT Server (stt_server.py)

    • Whisper ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ ์Œ์„ฑ ์ธ์‹
    • MP3/WebM ํŒŒ์ผ์„ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜
    • ํฌํŠธ: 5001
  3. Client (hackathon1024Full/client/)

    • React + Vite ๊ธฐ๋ฐ˜ ์›น ์ธํ„ฐํŽ˜์ด์Šค
    • ์Œ์„ฑ ๋…น์Œ ๋ฐ ์žฌ์ƒ ๊ธฐ๋Šฅ
    • ์‹ค์‹œ๊ฐ„ ๋Œ€ํ™” UI

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ

  • Python 3.8+
  • Node.js 16+
  • OpenAI API Key

1. ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ์„ค์ •

์˜์กด์„ฑ ์„ค์น˜

pip install fastapi uvicorn python-dotenv
pip install langchain langchain-openai openai
pip install openai-whisper
pip install requests python-multipart

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

main.py์˜ YOUR_API_KEY๋ฅผ ์‹ค์ œ OpenAI API ํ‚ค๋กœ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, .env ํŒŒ์ผ์„ ์ƒ์„ฑ:

OPENAI_API_KEY=your_api_key_here

2. ์„œ๋ฒ„ ์‹คํ–‰

ํ„ฐ๋ฏธ๋„ 1: STT ์„œ๋ฒ„

python stt_server.py

ํ„ฐ๋ฏธ๋„ 2: ๋ฉ”์ธ API ์„œ๋ฒ„

python main.py

3. ํ”„๋ก ํŠธ์—”๋“œ ์‹คํ–‰ (์„ ํƒ์‚ฌํ•ญ)

cd hackathon1024Full/client
npm install
npm run dev

๐Ÿ“ก API ์—”๋“œํฌ์ธํŠธ

Main API (Port 8000)

POST /chat

ํ…์ŠคํŠธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ AI ์‘๋‹ต๊ณผ ์Œ์„ฑ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ:

{
  "message": "์•ˆ๋…•ํ•˜์„ธ์š”, ๋ฐ˜๊ฐ€์›Œ์š”!"
}

์‘๋‹ต:

{
  "audio": "base64_encoded_mp3_audio"
}

POST /voice-chat

์Œ์„ฑ ํŒŒ์ผ์„ ๋ฐ›์•„ ํ…์ŠคํŠธ ๋ณ€ํ™˜ โ†’ AI ์‘๋‹ต โ†’ ์Œ์„ฑ ์ƒ์„ฑ์˜ ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ:

  • file: MP3 ๋˜๋Š” WebM ์˜ค๋””์˜ค ํŒŒ์ผ

์‘๋‹ต:

{
  "recognized_text": "์‚ฌ์šฉ์ž๊ฐ€ ๋งํ•œ ๋‚ด์šฉ",
  "audio": "base64_encoded_mp3_audio"
}

STT API (Port 5001)

POST /transcribe

์˜ค๋””์˜ค ํŒŒ์ผ์„ ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ:

  • file: MP3 ๋˜๋Š” WebM ์˜ค๋””์˜ค ํŒŒ์ผ

์‘๋‹ต:

{
  "text": "์ธ์‹๋œ ํ…์ŠคํŠธ",
  "language": "ko",
  "filename": "uploaded_file.mp3"
}

๐ŸŽฏ AI ํŽ˜๋ฅด์†Œ๋‚˜ ํŠน์ง•

ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง์„ ํ†ตํ•ด ๊ตฌํ˜„๋œ AI ์บ๋ฆญํ„ฐ ํŠน์ง•:

  • ์„ฑ๊ฒฉ: ์ˆ˜์ค์Œ์ด ๋งŽ๊ณ  ์กฐ์‹ฌ์Šค๋Ÿฝ์ง€๋งŒ ์นœ์ ˆํ•จ
  • ๋งํˆฌ: "์Œ...", "์ €๊ธฐ...", "๊ทธ๊ฒŒ..." ๋“ฑ ์ž์—ฐ์Šค๋Ÿฌ์šด ์ฃผ์ €ํ•จ ํ‘œํ˜„
  • ๋Œ€ํ™” ์Šคํƒ€์ผ:
    • 2-3๋ฌธ์žฅ์˜ ์งง์€ ์‘๋‹ต
    • ๊ณต๊ฐ๊ณผ ํ˜ธ์‘์„ ํ†ตํ•œ ๋Œ€ํ™” ์ด์–ด๊ฐ€๊ธฐ
    • ์ƒ๋Œ€๋ฐฉ์„ ๋ฐฐ๋ คํ•˜๋Š” ํƒœ๋„
  • ์Œ์„ฑ:
    • OpenAI TTS-1 "nova" ๋ณด์ด์Šค ์‚ฌ์šฉ
    • 0.9๋ฐฐ์†์œผ๋กœ ๊ธด์žฅ๊ฐ ํ‘œํ˜„

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

Backend

  • FastAPI: ๊ณ ์„ฑ๋Šฅ ์›น ํ”„๋ ˆ์ž„์›Œํฌ
  • LangChain: LLM ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ
  • OpenAI GPT-4o-mini: ๋Œ€ํ™” ์ƒ์„ฑ
  • OpenAI TTS-1: ์Œ์„ฑ ํ•ฉ์„ฑ
  • Whisper (base): ์Œ์„ฑ ์ธ์‹

Frontend

  • React: UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Vite: ๋นŒ๋“œ ๋„๊ตฌ
  • TanStack Router: ๋ผ์šฐํŒ…

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

.
โ”œโ”€โ”€ main.py                    # ๋ฉ”์ธ API ์„œ๋ฒ„
โ”œโ”€โ”€ stt_server.py             # STT ์„œ๋ฒ„
โ”œโ”€โ”€ hackathon1024Full/
โ”‚   โ””โ”€โ”€ client/               # React ํ”„๋ก ํŠธ์—”๋“œ
โ”‚       โ”œโ”€โ”€ src/
โ”‚       โ”‚   โ”œโ”€โ”€ features/     # ๊ธฐ๋Šฅ๋ณ„ ์ปดํฌ๋„ŒํŠธ
โ”‚       โ”‚   โ”œโ”€โ”€ routes/       # ํŽ˜์ด์ง€ ๋ผ์šฐํŠธ
โ”‚       โ”‚   โ””โ”€โ”€ shared/       # ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ
โ”‚       โ””โ”€โ”€ public/           # ์ •์  ํŒŒ์ผ
โ””โ”€โ”€ README.md

โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ

  1. API ํ‚ค ๋ณด์•ˆ: ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” API ํ‚ค๋ฅผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๊ด€๋ฆฌํ•˜์„ธ์š”
  2. CORS ์„ค์ •: ํ˜„์žฌ ๋ชจ๋“  Origin์„ ํ—ˆ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ํ”„๋กœ๋•์…˜์—์„œ๋Š” ํŠน์ • ๋„๋ฉ”์ธ์œผ๋กœ ์ œํ•œํ•˜์„ธ์š”
  3. STT ์„œ๋ฒ„ ํ•„์ˆ˜: /voice-chat ์—”๋“œํฌ์ธํŠธ ์‚ฌ์šฉ ์‹œ STT ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  4. ์˜ค๋””์˜ค ํŒŒ์ผ ํฌ๊ธฐ: ์ตœ์†Œ 5KB ์ด์ƒ์˜ ์˜ค๋””์˜ค ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค

๐Ÿ”ง ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

STT ์„œ๋ฒ„ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜

STT ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

โ†’ python stt_server.py๋กœ STT ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•˜์„ธ์š”

Whisper ๋ชจ๋ธ ๋กœ๋”ฉ ์˜ค๋ฅ˜

โ†’ pip install openai-whisper๋กœ Whisper๋ฅผ ์žฌ์„ค์น˜ํ•˜์„ธ์š”

API ํ‚ค ์˜ค๋ฅ˜

โ†’ main.py์˜ OPENAI_API_KEY ์„ค์ •์„ ํ™•์ธํ•˜์„ธ์š”

๐Ÿ“ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ต์œก ๋ฐ ์—ฐ๊ตฌ ๋ชฉ์ ์œผ๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿค ๊ธฐ์—ฌ

๋ฒ„๊ทธ ๋ฆฌํฌํŠธ ๋ฐ ๊ธฐ๋Šฅ ์ œ์•ˆ์€ Issues๋ฅผ ํ†ตํ•ด ์ œ์ถœํ•ด ์ฃผ์„ธ์š”.


Made with โค๏ธ for Hackathon 2025

About

This service uses Generative AI to act as a dating simulation partner. By learning from your conversational style, it generates relevant and engaging response questions, helping you practice and improve your dating communication skills and readiness.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages