Skip to content

not-found-suda/suda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

511 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


농인 λΆ€λͺ¨μ™€ 청인 μžλ…€μ˜ λŒ€ν™”λ₯Ό μž‡λŠ” μ˜¨λ””λ°”μ΄μŠ€ μˆ˜μ–΄ μ†Œν†΅ μ„œλΉ„μŠ€


Android Kotlin Jetpack Compose LiteRT MediaPipe

Java Spring Boot Python FastAPI PostgreSQL


ν”„λ‘œμ νŠΈ μ†Œκ°œ

SUDA(μˆ˜λ‹€) λŠ” CODA, 즉 농인 λΆ€λͺ¨λ‹˜μ˜ 청인 μžλ…€κ°€ 더 μžμ—°μŠ€λŸ½κ²Œ λŒ€ν™”ν•  수 μžˆλ„λ‘ λ•λŠ” Android 기반 μˆ˜μ–΄Β·μŒμ„± μ†Œν†΅ μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.

μΉ΄λ©”λΌλ‘œ μž…λ ₯된 μˆ˜μ–΄ μ˜μƒμ€ μ„œλ²„λ‘œ μ „μ†‘ν•˜μ§€ μ•Šκ³ , Android κΈ°κΈ° λ‚΄λΆ€μ—μ„œ MediaPipe λžœλ“œλ§ˆν¬ μΆ”μΆœκ³Ό TFLite/LiteRT μˆ˜μ–΄ 인식 λͺ¨λΈ 좔둠을 톡해 μ‹€μ‹œκ°„μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
이후 μΆ”μΆœλœ 단어 λ˜λŠ” λ¬Έμž₯은 Spring Boot API Gatewayλ₯Ό 톡해 Gemini 기반 λ¬Έλ§₯ 보정과 CLOVA TTS/STTλ₯Ό 거쳐 μžλ§‰κ³Ό μŒμ„±μœΌλ‘œ λ³€ν™˜λ©λ‹ˆλ‹€.

SSAFY 14κΈ° A404νŒ€
On-Device AI 기반 μˆ˜μ–΄ 인식 Β· μŒμ„± λ³€ν™˜ Β· ν•™μŠ΅ 리포트 ν”Œλž«νΌ


핡심 κΈ°λŠ₯

μ˜¨λ””λ°”μ΄μŠ€ μˆ˜μ–΄ 인식

  • CameraX 기반 μ‹€μ‹œκ°„ 카메라 ν”„λ ˆμž„ μˆ˜μ§‘
  • MediaPipe Holistic λžœλ“œλ§ˆν¬ μΆ”μΆœ
  • TFLite / LiteRT λͺ¨λΈ 기반 μˆ˜μ–΄ 단어 μΆ”λ‘ 
  • μ˜μƒ 원본을 μ„œλ²„λ‘œ 보내지 μ•ŠλŠ” ν”„λΌμ΄λ²„μ‹œ 쀑심 ꡬ쑰

μˆ˜μ–΄ β†’ μŒμ„± λ³€ν™˜

  • μΈμ‹λœ μˆ˜μ–΄ 단어λ₯Ό μžμ—°μŠ€λŸ¬μš΄ λ¬Έμž₯으둜 보정
  • Gemini API 기반 λ¬Έλ§₯ ꡐ정
  • CLOVA TTS 기반 μŒμ„± ν•©μ„±
  • μžλ§‰κ³Ό μŒμ„±μ„ λ™μ‹œμ— μ œκ³΅ν•˜λŠ” λŒ€ν™”ν˜• UI

μŒμ„± β†’ ν…μŠ€νŠΈ λ³€ν™˜

  • Android 둜컬 STT 및 CLOVA STT 연동
  • μ˜μœ μ•„ 발음 보정 νŒŒμ΄ν”„λΌμΈ
  • 원본 λ°œν™”μ™€ 보정 λ¬Έμž₯ 뢄리 제곡
  • λŒ€ν™” μ„Έμ…˜ 기반 μžλ§‰ λ Œλ”λ§

ν•™μŠ΅ 및 리포트

  • μžλ…€ ν”„λ‘œν•„ 기반 ν•™μŠ΅ 관리
  • μΉ΄ν…Œκ³ λ¦¬/λ‚œμ΄λ„λ³„ μˆ˜μ–΄ 단어 ν•™μŠ΅
  • ν€΄μ¦ˆ μ„Έμ…˜, μ •λ‹΅ 제좜, κ²°κ³Ό 확인
  • μ·¨μ•½ 단어, ν•™μŠ΅ μš”μ•½, λŒ€ν™” 뢄석 리포트 제곡

μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

image
계측 기술 μ„€λͺ…
Mobile Android, Kotlin, Jetpack Compose, Hilt μ•± ν™”λ©΄, 카메라/마이크 μ œμ–΄, μƒνƒœ 관리
On-Device AI MediaPipe, TensorFlow Lite, LiteRT, Qwen LiteRT-LM λžœλ“œλ§ˆν¬ μΆ”μΆœ, μˆ˜μ–΄ μΆ”λ‘ , μ˜¨λ””λ°”μ΄μŠ€ λ¬Έμž₯ λ³€ν™˜
Backend Java 21, Spring Boot 4.0.5, Spring Security, JPA 인증/인가, μžλ…€ ν”„λ‘œν•„, ν•™μŠ΅/ν€΄μ¦ˆ/리포트 API
AI Server Python 3.12, FastAPI, PyTorch μ„œλ²„ μΈ‘ μˆ˜μ–΄ 인식 μΆ”λ‘  API
Database PostgreSQL 16, Redis 7, Flyway μ˜μ† 데이터, 토큰/μΊμ‹œ, λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
External API Gemini, NAVER CLOVA TTS/STT/Speech λ¬Έλ§₯ ꡐ정, μŒμ„± ν•©μ„±, μŒμ„± 인식
Infra Docker, Docker Compose 둜컬/배포 ν™˜κ²½ μ»¨ν…Œμ΄λ„ˆ ꡬ성

ν”„λ‘œμ νŠΈ ꡬ쑰

.
β”œβ”€β”€ backend/              # Spring Boot API μ„œλ²„
β”œβ”€β”€ mobile/               # Android μ•±
β”œβ”€β”€ ai/                   # μˆ˜μ–΄ 인식 AI μ„œλ²„ 및 ν•™μŠ΅/μΆ”λ‘  μ½”λ“œ
β”œβ”€β”€ docs/                 # API, ERD, μ•„ν‚€ν…μ²˜, μš”κ΅¬μ‚¬ν•­ λ¬Έμ„œ
β”œβ”€β”€ exec/                 # ν¬νŒ… 맀뉴얼 및 제좜 μ‚°μΆœλ¬Ό
β”œβ”€β”€ docker-compose.yml    # Backend, DB, Redis, AI μ„œλ²„ 톡합 μ‹€ν–‰
└── docker-compose.ai.yml # AI μ„œλ²„ 단독 배포용 Compose

μ£Όμš” 도메인

도메인 μ„€λͺ…
Auth νšŒμ›κ°€μž…, 둜그인, 토큰 μž¬λ°œκΈ‰, λ‘œκ·Έμ•„μ›ƒ, 넀이버 OAuth, λΉ„λ°€λ²ˆν˜Έ μž¬μ„€μ •
Child Profile μžλ…€ ν”„λ‘œν•„ 생성, 쑰회, μˆ˜μ •, μ‚­μ œ
Translation μˆ˜μ–΄ β†’ μŒμ„± λ³€ν™˜, μŒμ„± β†’ ν…μŠ€νŠΈ λ³€ν™˜, STT μ„€μ • 쑰회
Communication λŒ€ν™” μ„Έμ…˜ 생성/μ’…λ£Œ, λŒ€ν™” λ©”μ‹œμ§€ 및 뢄석 관리
Learn ν•™μŠ΅ μΉ΄ν…Œκ³ λ¦¬, λ‚œμ΄λ„, 단어 λͺ©λ‘ 쑰회
Quiz ν€΄μ¦ˆ μ„Έμ…˜ 생성, ν˜„μž¬ 문제 쑰회, λ‹΅μ•ˆ 제좜, κ²°κ³Ό 쑰회
Report ν•™μŠ΅ μš”μ•½, μΉ΄ν…Œκ³ λ¦¬λ³„ 진도, μ·¨μ•½ 단어, ν€΄μ¦ˆ 기둝, λŒ€ν™” μš”μ•½
Sign μˆ˜μ–΄ μΆ”λ‘  API, FastAPI AI μ„œλ²„ 연동

AI λͺ¨λΈ

SUDAλŠ” λͺ¨λ°”일과 μ„œλ²„ μ–‘μͺ½μ—μ„œ μˆ˜μ–΄ 인식을 μ²˜λ¦¬ν•  수 μžˆλ„λ‘ λͺ¨λΈμ„ 뢄리해 μš΄μ˜ν•©λ‹ˆλ‹€.

λͺ¨λΈ μœ„μΉ˜ μš©λ„
best_sign_model_v7_float16.tflite Android assets μ˜¨λ””λ°”μ΄μŠ€ μˆ˜μ–΄ 인식
best_sign_model_v6_float16.tflite Android assets μ˜¨λ””λ°”μ΄μŠ€ μˆ˜μ–΄ 인식
best_sign_model_v6.pt AI server artifact FastAPI μ„œλ²„ μΈ‘ μˆ˜μ–΄ μΆ”λ‘ 
Qwen2.5 LiteRT-LM 별도 λ‹€μš΄λ‘œλ“œ λ˜λŠ” 둜컬 경둜 μ˜¨λ””λ°”μ΄μŠ€ λ¬Έμž₯ λ³€ν™˜

λͺ¨λΈ νŠΉμ§•

  • MediaPipe 기반 손/λͺΈ/μ–Όκ΅΄ λžœλ“œλ§ˆν¬ μΆ”μΆœ
  • TCN / Transformer 계열 μˆ˜μ–΄ 인식 λͺ¨λΈ μ‹€ν—˜
  • λͺ¨λ°”일 νƒ‘μž¬λ₯Ό μœ„ν•œ TFLite λ³€ν™˜ 및 float16 κ²½λŸ‰ν™”
  • μ„œλ²„ μΆ”λ‘ μš© PyTorch TCN λͺ¨λΈκ³Ό FastAPI inference endpoint 제곡

API Overview

Method Endpoint μ„€λͺ…
POST /api/v1/auth/signup νšŒμ›κ°€μž…
POST /api/v1/auth/login 둜그인
POST /api/v1/auth/refresh 토큰 μž¬λ°œκΈ‰
POST /api/v1/auth/oauth/naver 넀이버 OAuth 둜그인
GET /api/v1/children μžλ…€ ν”„λ‘œν•„ λͺ©λ‘ 쑰회
POST /api/v1/children μžλ…€ ν”„λ‘œν•„ 생성
POST /api/v1/translation/sign-to-speech μˆ˜μ–΄ λ¬Έμž₯ μŒμ„± λ³€ν™˜
POST /api/v1/translation/speech-to-text μŒμ„± ν…μŠ€νŠΈ λ³€ν™˜
POST /api/v1/comms/sessions λŒ€ν™” μ„Έμ…˜ 생성
PATCH /api/v1/comms/sessions/{sessionId}/end λŒ€ν™” μ„Έμ…˜ μ’…λ£Œ
GET /api/v1/learn/categories ν•™μŠ΅ μΉ΄ν…Œκ³ λ¦¬ 쑰회
GET /api/v1/learn/words ν•™μŠ΅ 단어 쑰회
POST /api/v1/learn/quizzes/sessions ν€΄μ¦ˆ μ„Έμ…˜ 생성
POST /api/v1/sign/inference μˆ˜μ–΄ μΆ”λ‘  μš”μ²­
GET /api/v1/children/{childId}/reports/summary ν•™μŠ΅ 리포트 μš”μ•½

μ‹€ν–‰ 방법

1. ν™˜κ²½λ³€μˆ˜ μ„€μ •

λ£¨νŠΈμ— .env νŒŒμΌμ„ μƒμ„±ν•©λ‹ˆλ‹€.

cp .env.example .env

μ£Όμš” ν™˜κ²½λ³€μˆ˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

POSTGRES_DB
DB_URL
DB_USERNAME
DB_PASSWORD
REDIS_PASSWORD
AUTH_JWT_SECRET
GMS_KEY
CLOVA_CLIENT_ID
CLOVA_CLIENT_SECRET
CLOVA_SPEECH_SECRET_KEY
NAVER_CLIENT_ID
NAVER_CLIENT_SECRET
SIGN_AI_BASE_URL
BACKEND_SIGN_AI_BASE_URL
SLLM_MODEL_DOWNLOAD_URL

2. Backend μ‹€ν–‰

cd backend
./gradlew bootRun

λΉŒλ“œ 및 검증:

cd backend
./gradlew spotlessCheck --no-daemon
./gradlew build -x test --no-daemon

3. Mobile μ‹€ν–‰

cd mobile
./gradlew assembleDebug

λ””λ°”μ΄μŠ€ μ„€μΉ˜:

./gradlew installDebug

검증:

cd mobile
./gradlew ktlintCheck detekt lintDebug testDebugUnitTest assembleDebug --no-daemon

4. Docker Compose μ‹€ν–‰

DB, Redis, Backendλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

docker compose up -d --build

둜컬 AI μ„œλ²„κΉŒμ§€ ν•¨κ»˜ μ‹€ν–‰ν•˜λ €λ©΄ λ‹€μŒ profile을 μ‚¬μš©ν•©λ‹ˆλ‹€.

docker compose --profile local-ai up -d --build

GPU μ„œλ²„μ—μ„œ AI μ„œλ²„λ§Œ 단독 배포할 경우:

docker compose -f docker-compose.ai.yml up -d --build

ν•„μˆ˜ μ™ΈλΆ€ 파일

μš©λŸ‰, λΌμ΄μ„ μŠ€, λ³΄μ•ˆ 문제둜 μ•„λž˜ νŒŒμΌμ€ Git에 ν¬ν•¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

MediaPipe Holistic λͺ¨λΈ

mobile/app/src/main/assets/models/holistic_landmarker.task

λ‹€μš΄λ‘œλ“œ:

https://storage.googleapis.com/mediapipe-models/holistic_landmarker/holistic_landmarker/float16/1/holistic_landmarker.task

AI μ„œλ²„ λͺ¨λΈ artifact

AI μ„œλ²„ μ‹€ν–‰ μ‹œ artifact 디렉터리에 μ•„λž˜ 파일이 ν•„μš”ν•©λ‹ˆλ‹€.

best_sign_model_v6.pt
train_config_v6.json
label_map_v6.json
model.py

Qwen LiteRT-LM λͺ¨λΈ

μ˜¨λ””λ°”μ΄μŠ€ λ¬Έμž₯ λ³€ν™˜μš© Qwen λͺ¨λΈμ€ Git에 ν¬ν•¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
mobile/local.properties에 둜컬 λͺ¨λΈ 경둜λ₯Ό μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

QWEN_MODEL_LOCAL_PATH=C:/path/to/Qwen2.5-1.5B-Instruct_multi-prefill-seq_q8_ekv4096.litertlm

λ˜λŠ” κΈ°λ³Έ μœ„μΉ˜μ— λ°°μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

mobile/local-models/Qwen2.5-1.5B-Instruct_multi-prefill-seq_q8_ekv4096.litertlm

μ£Όμš” λ¬Έμ„œ

λ¬Έμ„œ 경둜
API λͺ…μ„Έ docs/api/api-spec.md
ERD docs/architecture/erd.md
μ‹œμŠ€ν…œ 흐름 docs/architecture/system-flow.md
μš”κ΅¬μ‚¬ν•­ λͺ…μ„Έ docs/specs/requirements.md
κΈ°λŠ₯ λͺ…μ„Έ docs/specs/features.md
λͺ¨λ°”일 μ‹€ν–‰ κ°€μ΄λ“œ mobile/README.md
AI μ„œλ²„ μ‹€ν–‰ κ°€μ΄λ“œ ai/ai-server/README.md
ν¬νŒ… 맀뉴얼 docs/porting-manual.md

νŒ€μ›

λ³΄μ•ˆ 및 컀밋 μ œμ™Έ ν•­λͺ©

μ•„λž˜ νŒŒμΌμ€ Git에 ν¬ν•¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

.env
*.pem
*.key
*.pt
*.pth
ai/model-artifacts/
local.properties
keystore.properties
secrets.xml

secret, API key, λΉ„λ°€λ²ˆν˜Έ, 개인 둜컬 κ²½λ‘œλŠ” μ»€λ°‹ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.



SUDA
농인 λΆ€λͺ¨μ™€ 청인 μžλ…€μ˜ 일상 λŒ€ν™”λ₯Ό 더 μžμ—°μŠ€λŸ½κ²Œ.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors