수어번역 서비스 손누리개발 프로젝트
📅 2024.10 ~ 2024.11👥 5명🛠 Chrome Extension, FastAPI, JavaScript, MongoDB, RIFE AI🎯 팀장 · 익스텐션/백엔드


청각장애인을 위한 한국어 ⇒ 수어 번역 프로젝트 손누리
1. 프로젝트 개요
-
목표:
청각장애인을 위한 한국어 문장을 수어로 번역하여 실시간으로 제공하는 크롬 익스텐션 개발.
-
배경:
정보 접근성의 한계를 느끼는 청각장애인들을 위해, 웹 페이지의 텍스트를 한국 수어로 번역하여 보다 원활한 의사소통과 정보 이해를 돕기 위해 기획된 프로젝트.
-
주요 기능:
- 웹 페이지 텍스트를 선택하면 실시간으로 수어로 번역.
- 한글로 된 텍스트를 드래그 하여 버튼을 클릭하는 형태로 문장 번역.
- 수어 번역 결과를 시각적으로 표현하거나 동영상 형태로 제공.
2. 담당 역할 및 기여
- 기여:
- 팀장
- 익스텐션 개발 전담
- 백엔드 구조 및 데이터 흐름 설계와 구현
- 기여:
- 크롬 익스텐션 개발: 브라우저 상에서 직접 실행 가능한 환경 구축.
- 한국어-수어 번역 API 통합: FastAPI 기반의 백엔드와 연결.
- 프론트엔드 설계: React Extension Boilerplate를 사용해 사용자 인터페이스 구현.
- JavaScript 기반의 데이터 처리: 웹 페이지에서 텍스트 선택 및 번역 요청 처리.
3. 사용 기술 및 이유
- 사용 기술:
- JavaScript: 크롬 익스텐션 및 데이터 처리.
- React Extension Boilerplate: 컴포넌트 기반 UI 설계와 재사용성 증대.
- FastAPI: 번역 요청을 처리하는 빠르고 효율적인 백엔드 구축.
- MongoDB: 번역 데이터를 효율적으로 저장 및 관리.
- RifeAI: 영상이 자연스럽게 움직이게 보이게 하기 위한 프레임생성을 위해 사용
- 키위AI: 한국어 단어를 형태소 단위로 분석하여 DB와 1:1매칭하기 위해 사용
- Fast2Text: 단어의 뜻의 유사도를 판별하여 비슷한 뜻이 있는 경우 해당 단어와 매칭하기 위해 사용
- ChatGPT: 문장이 들어왔을 때, 한국어를 한국수어 문법으로 변환하여 번역하기 위해 사용. 타 모델보다 정확도가 높았음
4. 구현 사항
- **크롬 익스텐션:**웹 페이지에서 텍스트를 드래그하면 번역 요청이 자동으로 서버로 전송.
- **번역 기능:**FastAPI와 연동하여 실시간으로 번역 결과 제공.
- **시각적 출력:**수어 번역 결과를 동영상 및 텍스트 형태로 사용자에게 제공.
- **데이터 관리:**MongoDB를 통해 사용자 번역 기록 저장 및 관리.
5. 프로젝트 성과 및 결과
-
성과:
- 단어장 기능의 경우, 서버를 거치지 않고 스크립트 상에서 저장해두고 가져오는 형태로, 자주 업데이트 되지 않는 DB의 특성을 이용하여 서버 요청을 하지 않는 형태로 구현하여 속도를 크게 향상시킴
- 이미 저장된 문장에 대한 번역은 S3서버에 저장되고, 데이터베이스에 키 밸류 형태로 URL을 저장하여 재요청시 더 많은 시간이 걸리지 않도록 유도함
- 크롬 익스텐션으로 번역 서비스 제공, 사용자 친화적인 인터페이스 구현.
- React Extension Boilerplate와 FastAPI를 활용해 빠르게 짧은 기간내 빠른 구현.
-
결과:
청각장애인들이 웹 페이지의 한국어 텍스트를 손쉽게 수어로 번역해 접근성을 크게 향상.
6. 주요 문제와 해결 방법
⚙️ 문제 1: 실시간 번역 속도 확보 (브라우저에서 끊김 없는 경험)
상황:
익스텐션이 텍스트 선택마다 Fast2Text + ChatGPT + KiwiAI 파이프라인을 순차 호출해 응답이 3~5초 걸려 “실시간 번역” 느낌이 사라짐.
해결 방법:
- MongoDB+S3 번역 캐시
- 문장 ↔ 번역 결과(URL) 매핑 저장, 동일 문장 재요청 시 모델 호출 없이 즉시 반환
- 단어장 로컬 캐시
- 자주 쓰는 단어는 브라우저(LocalStorage)에서 바로 응답, 서버 경유 최소화
결과:
평균 응답 3.8s → 1.1s, 체감상 끊김 없는 번역 경험.
🧩 문제 2: 수어 영상이 어색하게 이어짐 (자연스러운 흐름 필요)
상황:
단어 단위로 수어 영상을 붙이니 전환부(transition)에서 손 움직임이 어색하게 튐.
해결 방법:
- RifeAI 프레임 보간
- 단어 영상 사이에 중간 프레임을 생성해 자연스럽게 연결
- 수어 문법 순서로 재배열 후 합성
- ChatGPT로 “한국어 → 한국수어 문법(주어-동작-대상)” 순서 변환 뒤 영상 생성·결합
결과:
영상 끊김 80% 이상 감소, “자연스러운 수어 흐름” 피드백 확보.
🧠 문제 3: 문장 번역 일관성 (항상 같은 문장에 같은 수어 출력)
상황:
같은 문장이라도 AI 응답이 조금씩 달라 일관된 수어 표현을 보여주기 어려웠음.
해결 방법:
- 형태소 분석 기반 매핑(KiwiAI)
- 문장을 형태소 단위로 분리 후 표준 수어 DB 매핑, ChatGPT는 문장 구조 변환만 담당
- Fast2Text 유사도 활용
- 유사도 0.8 이상이면 기존 매핑을 재사용, 변동 최소화
결과:
동일 문장 재번역 시 같은 수어 표현 유지, 신뢰도 향상.
🚀 문제 4: 영상 생성 리소스·시간 부담
상황:
새 영상 생성에 GPU 리소스와 시간이 많이 들어, 새 문장 번역이 느려짐.
해결 방법:
- 빈도 높은 문장은 미리 생성해 S3+DB에 저장, 재요청 시 즉시 제공
- 생성 파이프라인을 배치/비동기로 분리해 프론트 응답과 분리
결과:
자주 쓰는 문장은 대기 없이 제공, 새로운 문장도 사용자 체감 대기시간 감소.
Last updated on