Hear_AI는 감정 기반 AI 일기 작성 / 이미지 및 스티커 생성 서비스입니다. FastAPI 서버에서 음성 및 텍스트 기반 일기 입력을 처리하고, Google Gemini API 를 활용하여 이미지/스티커를 생성한 뒤 Spring 백엔드에 콜백합니다.
- FastAPI 기반 웹 서버 (
server/app)- 라우터:
server/app/router/diary_router.py등 - 서비스:
server/app/service/diary_service.py등
- 라우터:
- AI 모듈 (
ai)- 이미지:
ai/image/image_generator.py,ai/image/sticker_generator.py - 파이프라인:
ai/pipelines/diary_generator.py - 음성:
ai/voice/stt.py,ai/voice/tts.py
- 이미지:
- 프롬프트 템플릿:
ai/prompts/*.txt
- 음성 및 텍스트 일기 처리
- STT, Diary Generator, TTS 연계
/internal/v1/chats/messages엔드포인트
- 이미지 생성 비동기 작업
/internal/images/generate엔드포인트image_task_<diaryId>_<userId>비동기 처리
- 스티커 생성 비동기 작업
/internal/v1/sticker/generate엔드포인트sticker_task_<diaryId>_<userId>비동기 처리
- Spring 백엔드 콜백
/internal/diary/{diaryId}/ai-image호출patch_image_callback,patch_sticker_callback
.env파일 필수GEMINI_API_KEY(Gemini API 키)IMAGE_GEMINI_API_KEY(AI 이미지 API 키)
- 종속성
- Python 패키지:
requirements.txt참고
- Python 패키지:
Docker:
docker-compose up --build- POST
/internal/v1/chats/messages: 음성/텍스트 일기 대화 - POST
/api/v1/diaries: 일기 생성 - POST
/internal/images/generate: 이미지 생성 ## 비동기 - POST
/internal/v1/sticker/generate: 스티커 생성 ## 비동기 - GET
/internal/task/{task_id}: 작업 상태 조회
ai/prompts/image_generation.txt: 이미지 프롬프트 템플릿ai/prompts/sticker_generation.txt: 스티커 프롬프트 템플릿ai/image/image_generator.py,ai/image/sticker_generator.py: Gemini API 호출 및 저장server/app/service/diary_service.py: generate + callback 로직server/app/router/diary_router.py: 비동기 작업 큐 + 상태 저장