8000 GitHub - dev-yoonho/DINEASY: 음성기반 시각보조 레스토랑 네비게이션 웹앱
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

dev-yoonho/DINEASY

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

다인이지 (DINEASY): 음성기반 시각보조 레스토랑 내비게이션 앱

❓어떠한 문제를 해결하는가

SNS, 텔레비전 등에서는 음식점에 관한 정보가 홍수처럼 넘쳐나고, ‘맛집 탐방’ ‘푸드파이터' 와 같은 키워드가 트렌드로 떠오르는 만큼, 식문화는 많은 사람들에게 즐거움을 선사합니다. 하지만 이러한 현상은 시각장애인들에게 괴리감을 선사하고, 심리/사회적 고립을 증진합니다. 이곳저곳 맛집에 관한 리뷰들이 즐비하지만, 이를 눈으로 볼 수 없고, 정보의 다양성도 부족하고, 직접 찾아가기도 어려운 시각장애인에게는 쉽게 접근하거나 즐기기 어려운 문화이기 때문입니다.

DINEASY는 시각장애인, 저시력자, 시니어 등 ‘시각의 보조'가 필요한 사용자를 위한 음성 기반 음식점 추천 및 내비게이션 모바일 웹앱입니다. 해당 앱은 Geolocation, TMAP, Speech Recognition API와 서대문구청 음식점 Open Database를 활용한 매시업 아키텍처 (Mash-Up Architecture)로 이루어졌으며, 기술혁신을 통하여 기존 사회적 취약계층이 직면했던 물리적 장벽을 허물고, 배리어프리 (barrier-free) 앱 서비스를 제공하여 시각적 취약계층의 편의와 자율성을 증진하고자 합니다. 궁극적으로 기존 시각의 보조가 필요한 사회적 약자들의 음식점 “정보의 접근성” 문제를 해결함으로써, DINEASY는 크게 두 가지 가치를 창출하여 타겟 유저들의 전반적인 안녕, 행복, 그리고 사회적 통합에 기여합니다.

1. 사회적 약자의 편의 증진
타인의 도움 없이 스스로 자신 있게 레스토랑을 발견하고, 선호도에 따라 정보에 입각한 선택을 할 수 있는 문을 열어줍니다. 부가적으로 사회활동의 폭을 넓히고, 다양한 요리 경험을 즐기고, 활동적인 생활방식을 유지하기 쉽게 함으로써 사회적 약자의 삶의 질을 향상하고 독립성을 독려합니다.

2. (지역) 산업사회 문제 개선
시각장애인들과 외식산업 사이의 격차를 해소함으로써 외식업계의 포괄성 및 접근성을 증진하고, 사회적 약자들이 더욱더 편리하고 즐거운 식사 경험을 할 수 있도록 하여 기회균등하고 향상된 사회 참여 환경을 제공해줍니다.

❗유사 서비스와의 차별성

1. 시각 약자들의 음식점 이용을 도와주는 특정 시나리오를 위한 서비스
현재 시각장애인의 보행에 도움을 주는 어플리케이션은 존재하지만, DINEASY와 같이 식품업소를 이용할 때 시각장애로 인해 생기는 특정 문제점을 파악하고 이를 개선하기 위하여 시나리오와 사용자들의 기준에 맞춘 음식점 길도우미 앱의 사례는 존재하지 않습니다. DINEASY는 현재 위치 기반 근처 음식점 찾기, 음성 명령/안내 기능, 음성 길안내 기능을 통해 고유 타깃 유저와 시나리오를 위한 맞춤형 솔루션을 제공함으로써 유사 서비스와의 차별성을 유지하고자 합니다.

2. 사용자 개인화를 통한 맞춤형(personalization) 서비스
시중에 나와있는 길찾기 어플리케이션 중 개인화를 통한 음식점 찾기 기능이 있는 앱은 없습니다. DINEASY에서는 음식점 검색시 사용자의 거리, 음식 종류를 파악하고, 맞춤형 음식점을 필터링합니다. 또한, 주메뉴를 사용자가 직접 고려하여 음식점을 선택할 수 있습니다. 이러한 개인화 측면은 맞춤형 지원을 제공하는 앱의 기능을 향상시킵니다.

3. 타겟 유저의 앱 편의를 고려한 UI/UX 구축
기존의 길 찾기 애플리케이션은 위치 정보에 관한 시각적인 데이터에만 제공하고 있어 시각약자들이 이용하기에 많은 어려움이 있습니다. 현존하는 시각장애인 타깃 어플리케이션 또한 유저 인터페이스 (UI) 가 저시력자 혹은 전맹이 이용하기에 많은 어려움이 존재합니다. DINEASY는 유사 앱 벤치마킹과 시각약자 관련 논문을 읽어보며 UX리서치를 한 후, 이에 따라 저시력자들이 이용하기 쉽고 편리한 인터페이스를 개발하여 ‘유니버설 디자인’을 구축하였습니다. 예시로 고대비 색상과 (빨간, 검정, 하얀색), 굵은 선으로 표현된 앱 디자인은 저시력자들이 보다 편하게 앱을 볼 수 있도록 돕습니다. 또한, 버튼의 위치, 음성 안내 기능등의 디테일을 통하여 기존 시각약자들의 패인포인트와 물리적인 장벽을 허물고, 편리하고 직관적인 어플리케이션을 개발하였습니다.

▶ 실현 비디오 (Demo)(서비스 시나리오)

https://www.youtube.com/watch?v=p_mGoO7FsWs&ab_channel=NakyungKim Thumbnail

📃매시업 아키텍처

Open API는 포털의 개방성을 높이기 위한 기술로, 다양한 응용프로그램에서 플랫폼을 활용할 수 있도록 인터페이스를 제공합니다. Open API 등의 공개된 디지털 콘텐츠들이나 기존 서비스들을 조합하여 새로운 콘텐츠나 서비스를 만드는 Mashup 방식은 보다 간단하고 효율적인 웹 어플리케이션 개발이 가능하게 합니다.

다음은 본 프로젝트에서 Mobile Mash-Up 개발을 위해 활용한 API와 데이터 가공 및 활용을 나타낸 것입니다.

다음은 사용자가 모바일 환경에서 Open API mashup으로 제공되는 서비스를 활용하는 모식도입니다. 사용자와 API, Web Application이 데이터를 주고받고 웹상에서 상호작용하는 과정을 확인할 수 있습니다.

⚙전체 시스템 구성

기본적인 어플리케이션 사용의 흐름 및 구성은 다음과 같습니다.

1. 어플 실행 및 현재 위치 확인

2. 현재 위치 기반 음식점 찾기, 혹은 카테고리 기반 음식점 찾기

2-1. 카테고리 기반 검색 시, 음성을 통해 사용자의 선호 음식 카테고리를 입력 받음.

3. 현재 위치 기반, 혹은 카테고리 기반으로 음식점 목록을 제공

4. 사용자가 선택한 음식점에 대한 정보를 제공

5. 사용자가 음식점의 길 안내를 원한다면, 경로 안내를 시작하며, 경로 안내가 필요한 지점에 도착하게 되면 음성 및 텍스트를 통해 경로를 안내 받음

아래는 해당 어플리케이션을 구현하기 위한 구성요소들이다.

1. HomeMap.js
function description
navigator.geolocation.getCurrentPos ition() 기기에 현재 위치 좌표를 요청하고 이를 위 경도 좌표로 반환
reverseGeo(lon, lat) 로컬스토리지에 저장되어 있는 사용자의 현재 경위도 좌표를 인자로 입력받아 지번주소로 바꾸고 문자열 형태로 저장
navigator.geolocation.watchPosition (success, error, options) 5초 간격으로 사용자의 위치를 확인해, 좌표의 변경이 있다면 변경된 좌표를 반환

2. map.js

function description
removeQuotesAndBrackets(sentence) 배열 형태로 저장된 목적지 좌표에서 괄호와 따옴표를 제거해 값을 재처리
initTmap() TMAP API 기능 기반인 지도와 마커를 초기 설정으로 생성하고, ajax를 이용해 경로 API를 추가로 불러와 경로 탐색 및 그리기 기능을 실행
window.localStorage.setItem / getItem() 데이터베이스 서버를 대체할 로컬스토리지에 값을 할당하거나, 저장된 값을 불러옴
getDistanceFromLatLonInKm() 현재 좌표와 목적지 좌표 간의 거리를 계산한다. 이후, 경로 안내 지점 도착 시 저장된 설명문을 읽는 데 사용
AddressToCoordinates() 한글 주소를 위경도 좌표로 반환

3. annyang.js
음성 인식은 기본적으로 Tal Ater가 Github에서 제공하는 annyang.js를 사용하였고, 참고하여 기능을 추가했습니다. 결과적으로, 사용자의 음성을 인식한 후, 선호하는(먹고 싶은) 음식점의 카테고리를 분류하여 값을 저장하게 됩니다. 아래는 추가된 함수들입니다.

function description
Vrecord(callback) 음성 인식 후 음성 텍스트에 포함된 카테고리를 분류하는 함수를 callback 함수로 구현
startRecording() Vrecord의 callback을 위한 함수
Rpause() Vrecord 분류가 완료되면 음성인식을 멈춤
handleCategoryChange(category) 분류된 카테고리의 값을 사용할 수 있도록 처리하고, 로컬 스토리지에 저장

4. sayThis.js

function description
speech(txt) txt를 읽음과 동시에 txt의 내용을 lastTxt 변수에 할당
sayAgain() lastTxt를 다시 읽어주는 함수

5. restaurant.js
이 파일은 사용자의 GPS 정보 혹은 음성 입력값을 기반으로 추천 식당 리스트를 생성합니다. 다음은 기능 구현을 위해 작성한 주요 함수들입니다.

function description
getAddress(locat) 지번 주소로부터 동 정보를 추출
getRestaurants() json 파일을 fetch하는 promise를 반환
categoryRest(), locationRest() 사용자 요청에 일치하는 식당을 필터링
restSelect(rest) 로컬스토리지에 사용자가 선택한 식당을 저장하고 식당 정보 화면을 보여줌


✔결론
1. 다인이지 (DINEASY): 음성기반 시각보조 레스토랑 네비게이션 앱
해당 서비스를 통해 시각 중심적인 기존의 어플리케이션 생태에서 벗어나, 간단한 조작, 간단한 음성 명령을 통해 음식점을 찾아다닐 수 있는 방법을 모색해보았습니다. 이를 통해 기존 시각약자들이 즐기기 어려웠던 식문화의 물리적 장벽을 허물고, 음성 기반 길안내를 통한 배리어프리 (barrier-free) 서비스를 제공하여 시각적 취약계층의 편의와 자율성을 증진하고자 할 수 있을 것으로 보입니다.

또한 시각약자를 위한 어플리케이션으로 설계되었지만, 서비스 시나리오 모든 과정에서 사용자의 편의를 고려하였습니다. 때문에 주위 맛집을 찾고 싶은 모든 개인 사용자의 활용이 가능할 것으로 보이며 향후 opendata를 추가하거나, 기능을 추가해 발전해 나갈 수 있을 것이라 예상합니다.

2. 진행 과정
다음은 서비스 개발 과정에서 겪은 시행착오입니다.

문제점 해결방안
Figma에서 디자인한 UI 파일 코딩 시 화면 깨짐 현상 Figma 컴포넌트 inspect를 활용, 아이콘/버튼은 따로 SVG 파일을 다운받아 이용
공공데이터포털 제공 API로는 데이터를 한번에 1000개씩 받아와야 해서 약 2만개의 데이터를 처리하는데 어려움이 발생 API 데이터를 JSON파일로 받아와 필요한 데이터만 가공하여 약 5천개로 줄이고 로컬에서 이용
SQL 서버 데이터베이스 구현 위한 시간 부족 자바스크립트에 내장된 localstorage를 이용하여 값을 저장하고 반환 + github Actions로 빌드

이와 같이 모바일 매쉬업 웹 어플리케이션을 직접 구현하며 고민하고, 문제를 해결하는 과정에서 웹 서비스 개발과 기존 서비스를 활용하여 가치를 창출하는 방식에 대한 이해를 높일 수 있었습니다.

3. 한계점 및 보완
DINEASY는 현재 서대문구에 위치한 식당을 대상으로만 서비스하고 있지만 추후 더 넓은 범위의 지역까지 확장시킬 예정입니다. 정보 제공 관점에서는 식당 이름과 주소, 음식점의 카테고리 분류 정도의 간단한 정보들만 제공하고 있는데 메뉴나 가격 등의 정보들도 추가적으로 제공할 수 있게 하고자 합니다. 또한 식당 도착에서 끝나는 것이 아니라 음식 주문, 키오스크 이용을 돕는 부가 서비스를 모색하고 있습니다.

팀원 별 프로젝트 기여 사항

조윤호(팀장)

  • TMAP API 가공(지도 생성 및 경로 그리기 기능 전반 구현, 경로 안내에 필요한 좌표 정보 및 길 안내 텍스트 추출, 출발지/도착지/현재 위치 좌표 추출 및 마커 생성)

  • geolocation api를 이용한 실시간 위치 추적 및 현재 위치 좌표 반환 기능 구현

  • 좌표를 지번주소로 전환하는 리버스 지오코딩 기능 구현

  • 협업용 깃허브 레포지토리 생성 및 깃허브 액션 서버 빌드 및 디버그

  • 각 기능 조합 및 전체 디버그 작업

  • 발표 자료(동영상) 촬영 및 1차 가공

김나경(UX/UI 디자이너)

  • 서비스 기획

  • UX 리서치, UI 디자인

  • 디자인 컴포넌트 생성(HTML, CSS)

  • 발표 자료 2차 가공(PPT + 동영상) 및 발표

정지윤(프론트엔드)

  • 음식점 Open Dataset API 가공

  • 필터링된 추천 식당 리스트 생성, 식당 상세정보 텍스트와 음성 제공 기능 구현 및 해당 부분 인터페이스 작업

  • 발표자료(PPT) 제작

정호수(프론트엔드)

  • 사용자 음성 인식 후 카테고라이징 기능 구현

  • 지오 코딩을 통한 한글 주소와 좌표 연동 기능 구현

  • 음성 및 텍스트로 목적지까지의 경로 안내 기능 구현

  • 각 기능 조합 및 전체 디버그 작업

  • 제안서 발표 영상 제작

About

음성기반 시각보조 레스토랑 네비게이션 웹앱

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

0