Skip to content

zero1177/Voice-Navigation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

프로젝트 개요

대학교 졸업 작품 프로젝트

주제: 시각장애인을 위한 AI 기반 오프라인 매장 안내 서비스

서비스 Flow: 음성 인식 → GPT가 화장품 브랜드 추천 → 매장 경로 안내 → 진열대 도착 후 화장품 위치 안내 → 텍스트 OCR 또는 YOLOv8로 정확한 제품을 골랐는지 검증

1. 주요 기능

음성 인식 — 찾고자 하는 화장품 종류(ex. 토너, 에센스..) 단어를 음성으로 말하면 인식

GPT 브랜드 추천 — GPT-3.5 turbo 모델을 통해 관련 브랜드 3개 추천

매장 경로 안내 — DLOID SLAM 기반 맵 데이터를 좌표로 변환하여 Dijkstra 최단경로 안내 / 진열대 이미지를 학습시킨 YOLOv8 모델을 활용해 정확도 향상

진열대 제품 감지 — 찾는 브랜드 진열대 앞에 도착 시, OCR + GPT Vision으로 진열대 이미지 분석 및 정확한 제품 위치 안내 (ex. 맨위 오른쪽)

제품 검증 — 손에 집어든 제품을 Tesserect OCR → 인식 실패 시 YOLOv8 검증을 통한 2중 방식으로 올바른 제품 선택 여부 확인

대화 로그 저장 — 전체 대화 내용을 JSON으로 저장해 기록

2. 프로젝트 구조

model/

├── helper.py               # 전체 안내 시나리오 흐름 제어 모듈

├── brand_recommender.py  # GPT 브랜드 추천 모듈

├── ocr.py                # OCR을 통한 키워드 추출

├── product_mapping.py    # 제품 타입 매핑 + GPT Vision으로 위치 확인

├── yolo_detect.py        # OCR → YOLOv8 2단계 제품 검증

├── roadmap.py            # 실내 경로 그래프 생성 + 방향 안내

├── utils.py              # 음성 상호작용 모듈 (TTS, STT, JSON Logging)

├── directions.py         # 경로 안내 실행 모듈

└── indoor_path_with_pois.json  # DROID SLAM 기반 실내 맵 데이터 -> 좌표로 추출

3. 실행 방법

python helper.py

실행 시 자동으로 진행

4. 전체 안내 시나리오

  1. "어떤 제품을 찾고 계신가요?" 질문 → 사용자 음성 명령 (토너, 에센스 등 원하는 제품 카테고리를 단어로 입력)
  2. GPT가 브랜드 3개 추천 → 음성으로 번호 선택
  3. 매장 촬영 요청 → directions.py 실행 → 원하는 진열대까지 경로 음성 안내
  4. 진열대 도착 후 촬영 → OCR + GPT Vision으로 진열대 분석 및 원하는 제품의 정확한 위치 안내
  5. 제품 집고 재촬영 → OCR 1차 검증 → 실패 시 YOLOv8로 2차 검증하여 원하는 제품을 집었는지 확인
  6. 안내 완료 → 대화내역 JSON 기록

5. 주요 모듈 설명

helper.py

전체 대화 흐름(내비게이션 시나리오)를 순차적으로 제어하는 메인 모듈입니다. 각 모듈들을 호출해 자동으로 단계별 안내를 진행합니다.

brand_recommender.py

gpt-3.5-turbo API를 연동해 입력된 제품 카테고리에 맞는 브랜드 3개를 추천합니다. 응답 포맷을 정규식으로 검증하여, 이후 로직 실행을 위한 일정한 응답 형식을 생성합니다.

ocr.py

OpenCV 기반 이미지 전처리(업스케일 → 그레이스케일 → Adaptive Threshold) 후 Tesseract OCR로 텍스트를 추출합니다. 추출된 텍스트에서 지정 키워드를 매칭하는 기능도 포함합니다.

product_mapping.py

PRODUCT_TYPE_MAPPING(영어→한국어 제품 종류), BRAND_KEYWORDS(브랜드 별칭) 데이터를 관리합니다. OCR 키워드를 보조로 활용해 GPT Vision으로 이미지를 분석해 제품 정보와 위치를 JSON으로 추출합니다.

yolo_detect.py

사용자가 손에 든 제품이 올바른지 검증합니다. OCR로 1차 확인하고 실패 시, 각 카테고리와 브랜드 별 제품 이미지가 학습된 YOLOv8 모델로 2차 확인합니다.

roadmap.py

indoor_path_with_pois.json 기반으로 NetworkX 그래프를 구성하고, Dijkstra 알고리즘으로 최단경로를 계산합니다. 벡터 외적을 이용해 좌/우/직진 회전 안내를 제공합니다.

utils.py

TTS(gTTS + pygame), STT(Speech Recognition) 라이브러리를 활용해 사용자와 음성으로 상호작용하는 로직이 구현되어 있습니다. 대화 내용을 JSON으로 저장하는 로직도 포함되어 있습니다.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages