Skip to content

zero1177/Voice-Navigation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

프로젝트 개요

대학교 졸업 설계프로젝트로써 "시각장애인을 위한 음성 상호작용 오프라인 매장 안내 서비스"를 구현했습니다.

음성 인식 → GPT를 이용한 브랜드 추천 → 매장 경로 안내 → 진열대 도착 후 OCR/GPT Vision으로 위치 분석 → 텍스트 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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages