Skip to content

hjzhhhj/SignLanguageTranslator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

수어 번역 프로그램 (Sign Language Translator)

실시간으로 수어를 인식하여 텍스트와 음성으로 번역하는 AI 기반 프로그램입니다.

주요 기능

  • 실시간 수어 인식: 웹캠을 통해 실시간으로 수어 동작을 인식
  • 양손 동작 대응: MediaPipe에서 감지한 좌·우 손을 자동 정렬해 128차원 특징 벡터로 변환
  • 텍스트/음성 번역: 인식된 수어를 한글 텍스트로 표시하고 음성으로 출력
  • 데이터 수집: 새로운 수어 동작을 학습시키기 위한 데이터 수집 기능
  • AI 모델 학습: LSTM 기반 딥러닝 모델로 수어 패턴 학습

기술 스택

  • MediaPipe: 손 관절 좌표 추출
  • TensorFlow: 딥러닝 모델 구축 및 학습
  • OpenCV: 영상 처리
  • pyttsx3: 텍스트 음성 변환

설치 방법

  1. 필요한 패키지 설치:
pip install -r requirements.txt
  1. 프로젝트 디렉토리 구조 확인:
Sign_language_translation/
├── src/
│   ├── hand_detector.py      # 손 인식 모듈
│   ├── sign_language_model.py # AI 모델
│   ├── sign_translator.py    # 실시간 번역기
│   └── data_collector.py     # 데이터 수집 도구
├── data/
│   ├── train/                # 학습 데이터
│   └── test/                 # 테스트 데이터
├── models/                    # 학습된 모델 저장
├── main.py                    # 메인 실행 파일
├── train_model.py            # 모델 학습 스크립트
└── requirements.txt          # 의존성 목록

사용 방법

⚠️ 중요: 최초 사용 시 필수 단계

프로그램을 처음 사용하거나 학습된 모델이 없는 경우, 다음 순서를 따라주세요:

1단계: 데이터 수집 (최소 2-3개 이상의 서로 다른 수어 단어 필요)

python3.11 main.py --mode collect
  • 최소 2-3개의 서로 다른 수어 단어를 수집해야 합니다
  • 각 단어당 최소 30개 시퀀스 권장
  • 예시: "안녕", "감사", "사랑" 등

왜 여러 개 필요한가요?

  • 클래스가 1개만 있으면 모델이 모든 동작을 그 단어로 예측합니다
  • 최소 2개 이상의 클래스가 있어야 구분 학습이 가능합니다

2단계: 모델 학습

python3.11 main.py --mode train

3단계: 실시간 번역 시작

python3.11 main.py

1. 실시간 수어 번역 (기본 모드)

python3.11 main.py

조작법:

  • Space: 번역 시작/중지
  • Q: 프로그램 종료
  • R: 버퍼 초기화
  • T: 인식 임계값 조정
  • S: 스크린샷 저장

2. 데이터 수집 모드

새로운 수어 동작을 학습시키기 위한 데이터 수집:

python3.11 main.py --mode collect
  1. 수집할 수어 단어 입력 (한글)
  2. 수집할 시퀀스 개수 설정 (기본값: 30)
  3. 스페이스바로 녹화 시작/정지
  4. ESC로 종료
  5. data/traindata/test 디렉터리에 저장된 .npy 파일의 레이블 이름이 학습/평가 시 일관되도록 유지

팁:

  • 동일한 수어를 다양한 각도/속도로 수집하면 인식률이 향상됩니다
  • 조명이 밝고 배경이 단순한 곳에서 수집하세요

3. 모델 학습 모드

수집한 데이터로 AI 모델 학습:

python3.11 main.py --mode train

학습 시간: 데이터 양에 따라 수 분~수십 분 소요

4. 학습된 모델로 번역

python main.py --model models/sign_language_model.h5

5. 비디오 파일 처리

python main.py --video input.mp4 --output output.mp4

지원 수어 단어 (기본)

기본적으로 다음 50개의 한국 수어 단어를 인식할 수 있습니다:

인사/감정:

  • 안녕하세요, 감사합니다, 사랑해요, 미안합니다
  • 좋아요, 싫어요, 괜찮아요

기본 동작:

  • 네, 아니요, 도와주세요
  • 먹다, 마시다, 가다, 오다
  • 앉다, 서다, 보다, 듣다, 말하다

명사:

  • 이름, 물, 밥, 집, 학교, 병원
  • 친구, 가족, 어머니, 아버지, 형제
  • 시간, 돈, 일, 공부, 책
  • 전화, 컴퓨터

시간:

  • 오늘, 내일, 어제

상태:

  • 아프다, 피곤하다, 배고프다, 목마르다
  • 춥다, 덥다, 크다, 작다, 많다, 적다

모델 구조

  • 입력: 30 프레임 × 128차원 시퀀스 (손 당 64차원: 21개 3D 랜드마크 정규화 + 손 크기 스칼라)
  • 모델: 3층 LSTM + Dense layers
  • 출력: 기본 50개 수어 단어 (사용자 학습 시 레이블 수에 맞게 자동 조정)

성능 최적화 팁

  1. 조명: 밝고 균일한 조명에서 최상의 성능
  2. 배경: 단순한 배경에서 인식률 향상
  3. 손 위치: 카메라에서 적당한 거리 유지 (30-60cm)
  4. 동작 속도: 너무 빠르거나 느리지 않은 자연스러운 속도

문제 해결

❌ 모든 동작이 같은 단어로 인식되는 경우:

  • 원인: 학습된 클래스가 1개뿐입니다
  • 해결: 최소 2-3개 이상의 서로 다른 수어 단어를 수집하고 재학습하세요
    python3.11 main.py --mode collect  # 여러 단어 수집
    python3.11 main.py --mode train    # 재학습

❌ 카메라가 작동하지 않는 경우:

# 카메라 권한 확인 (macOS)
tccutil reset Camera

❌ 모델 학습이 실패하는 경우:

  • 충분한 학습 데이터 확보 (각 단어당 30개 이상 시퀀스 권장)
  • 최소 2개 이상의 서로 다른 클래스가 필요합니다
  • GPU 메모리 부족 시 batch_size 줄이기
  • 학습/테스트 데이터의 레이블 이름이 동일해야 하며, 테스트 데이터에 새 레이블이 포함되면 자동으로 제외됨

❌ 음성 출력이 안 되는 경우:

# macOS에서 한국어 음성 설치
# 시스템 환경설정 > 접근성 > 음성 콘텐츠에서 한국어 음성 다운로드

❌ 인식률이 낮은 경우:

  • 조명을 밝게 하고 배경을 단순하게 유지하세요
  • 손을 카메라에 적당한 거리(30-60cm) 유지
  • 각 단어당 더 많은 시퀀스를 수집하세요 (50개 이상 권장)
  • 다양한 각도와 속도로 데이터를 수집하세요

개발 환경

  • Python 3.8+
  • macOS/Windows/Linux
  • 웹캠 필수

라이선스

이 프로젝트는 교육 목적으로 개발되었습니다.

기여 방법

  1. 새로운 수어 단어 데이터 수집
  2. 모델 성능 개선
  3. UI/UX 개선
  4. 버그 리포트 및 수정

향후 개발 계획

  • 양손 수어 지원 (좌·우 손 자동 패딩)
  • 문장 단위 번역
  • 동적 수어(움직임이 있는 수어) 인식
  • 웹 인터페이스 개발
  • 모바일 앱 지원
  • 다국어 수어 지원

문의

프로젝트 관련 문의는 Issues 탭을 이용해주세요.

SignLanguageTranslator

About

2025 Python Project - MediaPipe 수어 번역 프로그램 🪬

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages