Running Deeper C/C++/Java

Other Projects

TreasureSharky

A detailed design document for a speech recognition based subway helper app in South Korea.

애플리케이션 기획안

 

기획 및 개발 목적

시각 장애인 들의 대중교통 이용의 접근성이 너무 떨어져서 지하철, 버스의 사용이 너무 불편하여 사용이 적습니다. 이를 위한 앱들이 많이 있지만, 앱들은 시각장애인들의 능동적인 행동보다는 다른 사람들의 도움 (콜택시, 도우미, 예약버스 등등) 을 받아서 이용하게 설계되어 사용률을 높이지 못하고 있습니다. 그래서 음성 베이스로 시각장애인 분들이 능동적으로 사용이 가능한 지하철 앱을 구현하였습니다.


기술 요약

본 애플리케이션은 Android 플랫폼을 대상으로 하고, Kotlin 언어를 이용합니다. (Java 등 다른 JVM 기반 언어도 필요에 따라 이용가능) 백엔드는 필요로 하지 않으며, 주요 사용 기술은 다음과 같습니다.

  • API

1) 음성 인식

시각장애인을 대상으로 하는 애플리케이션이기 때문에 UX에 반드시 필요합니다. Google Cloud Speech-To-Text를 사용하는 것으로 계획하고 있으나, 성능상의 큰 차이가 없다면 다른 기술을 사용해도 무방합니다.

2) 경로 안내

본 애플리케이션은 서울 지하철을 교통수단으로 이용하고, 지하철 이용 전후로 도보로 이동하는 경로에 대한 안내를 목표로 하고 있기에 해당 경로에 대한 API 사용이 필요합니다.
- 지하철 안내: 서울교통정보센터의 대중교통환승조회를 이용하여 지하철 경로를 탐색합니다.
- 도보 안내: Tmap API의 보행자 경로탐색을 이용하여 경로를 취득합니다.

  • 위치 정보
    경로 안내를 위해 앱 사용중 위치정보를 지속적으로 갱신해야 합니다. 위치정보를 필요로 하는 시나리오는 다음과 같습니다.

1) 시작지, 목적지 설정 시 현재 위치의 파악
2) 도보 안내 시 경로 이탈 여부 판단, 경로 안내 중 현재 이동 단계 판단
3) 지하철 내 이동 중 현재 이동 단계 판단, 지하철 탑승/하차 여부 판단

위치 보간 등 위치 정보를 보다 정확하게 취득할 수 있는 기술을 사용하면 바람직하나, LocationManager에서 제공하는 수준 이상으로 개발할 필요는 없습니다.



 

액티비티 1: 로딩 스크린

1. 디자인

배경색, 화면 중앙에 로고

2. UI 상호작용

N/A

3. 액티비티 시작 시 필요한 정보

앱 버전, 현재 앱스토어 앱 버전

4. 음성 상호작용

  1. 처음 액티비티에 진입했을 떄의 음성 상호작용
    업데이트 필요: “새로운 버전이 나왔습니다. 업데이트를 해 주시기 바랍니다.”

인터넷 에러: “인터넷이 연결되지 않았습니다.”

무에러/버전 동일: “안녕하세요! 지하철 도우미 입니다.”

  1. 액티비티에 있을 때 가능한 대화 흐름
    “앱을 업데이트 하여야 합니다. 추후에 업데이트 하시겠어요, 아니면 업데이트 후 진행할까요?”

1. 업데이트: “업데이트를 다운로드 중입니다.” “업데이트가 완료 되었습니다.”

2. 추후: “다음에 앱을 시작할때 업데이트를 다운받도록 하겠습니다.”

 

5. 능동적인 상호작용

N/A

액티비티 2: 경로 선정

1. 디자인

화면 상단: 텍스트 박스 두개, 입력 가능, 나머지는 가능한 경로 디스플레이

2. UI 상호작용

텍스트 박스: 출발, 도착지점 입력 가능

가능한 경로 디스플레이: 터치시 액티비티 2 / 3 으로 연계

3. 액티비티 시작 시 필요한 정보

저장된 로케이션: 집 등등

4. 음성 상호작용

  1. 처음 액티비티에 진입했을 떄의 음성 상호작용
    도착점 선정: “어디로 안내해 드릴까요?”

인터넷 에러: “인터넷이 연결되지 않았습니다.”

  1. 액티비티에 있을 때 가능한 대화 흐름


“어디로 안내해 드릴까요?”

“신촌역”                                                      / “___구 __동 __번지”

“신촌역으로 안내하겠습니다.”                        / “___구 ___동 ___번지가 정확한가요?”

                            옵션: 1                           / “맞아요(맞습니다)” / “아니요(틀립니다)"  

                                                                         “다시  입력하시기 바랍니다.”

                     “맞습니다”

 

“현재 지점에서 출발하시겠어요? 현재 역이시라면 역의 이름을 말해 주세요.”

“응 ”    / “아니” /      “__역”

                                   /          “출발 지점을 말씀해 주세요.”        / “__역에서 출발하겠습니다.”

/                   “___ ___ ___” /

/         “___에서 출발하겠습니다.” /

                    

 

“경로를 선택하세요. 1. 환승 수 최소. 2. 보행 거리 최소. 3. 시간 최소.”

 1 / 2 / 3

모든 경우 “___역 ___출구에서, ___역 ___출구로 안내하겠습니다. 보행 시간은 ___분, 환승은 __번 입니다. ”

옵션 1 경우 액티비티 4로 연계, 아니면 액티비티 3으로 연계

 

5. 능동적인 상호작용

리스너: “출발점/도착점 재선정/다시 고르기” 입력되면 액티비티 재시작

액티비티 3: 보행

1. 디자인

화면: 지도, 경로는 파란색 선, 상단이 북쪽, 나침반

2. UI 상호작용

화면 줌 가능, 백버튼: 액티비티 2로 감

3. 액티비티 시작 시 필요한 정보

도착지 정보, 출발지 정보, 사용자 현재 로케이션

4. 음성 상호작용

  1. 처음 액티비티에 진입했을 떄의 음성 상호작용
    도착점(역/목적지) 안내: “___로 안내하겠습니다. ”

  2. 액티비티에 있을 때 가능한 대화 흐름

경로 취소: ”취소” “경로를 취소하시겠습니까?” “취소/응” “경로를 취소하였습니다.” 액티비티 2 연계

경로 안내: “___미터 전방에 ___방향으로 _회전 하시기 바랍니다.”
남은 시간 안내: “몇분 남았어?” “현재 5분 정도 남았습니다.”

경로 재탐색: “경로 재탐색해.” “경로를 재탐색 하겠습니다.”

도착: “도착점에 도달하였습니다.” 액티비티 4로 연계/혹은 경로 완료(역에서 나오는 경우)

5. 능동적인 상호작용

리스너: 사용자 경로 이탈시 “경로를 이탈하였습니다. 새 경로를 탐색중입니다. 새 경로를 탐색하였습니다.”

횡단보도: “횡단보도에 도달하였습니다. 천천히, 조심히 건너시기 바랍니다.” 

(교통 안전 정보가 API안에 내장되어 있는지 확인 필요)

액티비티 4: 역 안내

1. 디자인

화면: 지도, 하단에 지하철 호선, 방면 정보 크게 디스플레이, 역무원 전화 버튼

2. UI 상호작용

화면 줌 가능, 백버튼: 액티비티 2로 감, 버튼: 역무원에게 전화

3. 액티비티 시작 시 필요한 정보

도착지 정보, 출발지 정보, 사용자 현재 역, 경로(출구 번호, 등등)

4. 음성 상호작용

  1. 처음 액티비티에 진입했을 떄의 음성 상호작용
    열차:  “___호선, __방면으로 가는 열차를 타시면 됩니다.”

환승 가능 역의 경우: “이 역은 환승이 가능한 역이므로 도움을 청하여 찾아가시기 바랍니다. __호선 __방면 열차를 타시면 됩니다.”

안내: “지하철을 승차하시면 말해 주시기 바랍니다.”

안내: “역무원에게 전화를 하시겠습니까?”

  1. 액티비티에 있을 때 가능한 대화 흐름

경로 취소: ”취소” “경로를 취소하시겠습니까?” “취소/응” “경로를 취소하였습니다.” 액티비티 1 연계

경로 안내: “무슨 열차 타야 되?” “___호선 ___방면 ___열차를 타면 됩니다.”

경로 재탐색: “경로 재탐색해.” “경로를 재탐색 하겠습니다.”

열차 탑승: “열차 탔어.” 액티비티 4로 연계

역무원: “역무원에게 전화를 하시겠어요?” (전화 연결, 현재 출구 장소 연결), 상시 연결 가능, 지하철 타고 난 이후에도 가능

액티비티 5 연계

5. 능동적인 상호작용

N/A

 

액티비티5: 지하철 탑승 후

1. 디자인

화면: 지도, 하단에 지하철 호선, 방면 정보 크게 디스플레이, 역무원 전화 버튼

2. UI 상호작용

화면 줌 가능, 백버튼: 액티비티 2로 감, 버튼: 탑승한 역 역무원에게 전화

3. 액티비티 시작 시 필요한 정보

도착지 정보, 출발지 정보, 사용자 현재 장소, 경로(출구 번호, 등등), 환승 여부

4. 음성 상호작용

  1. 처음 액티비티에 진입했을 떄의 음성 상호작용
    열차:  “___호선, __방면으로 가는 열차를 탑승하신 것이 맞는지 확인하시기 바랍니다.”

도착역: “__역에서 내리셔야 합니다.”

환승: “___역에서 내리신 후에 환승을 하셔야 합니다.”

안내: “역무원에게 전화를 하시겠습니까?”

  1. 액티비티에 있을 때 가능한 대화 흐름

경로 취소: ”취소” “경로를 취소하시겠습니까?” “취소/응” “경로를 취소하였습니다.” 액티비티 1 연계

경로 안내: “무슨 역에서 내려야 되?” “__역에서 내려야 합니다.”

역무원: “역무원에게 전화를 하시겠어요?” (전화 연결, 현재 출구 장소 연결), 상시 연결 가능, 지하철 타고 난 이후에도 가능

액티비티 6/7 연계

5. 능동적인 상호작용

지하철과 현재 GPS정보 비교(오류 가능성 큼), 명백히 방향이 다르면 경로 재탐색, 역 잘못된 안내

 

액티비티6: 환승

1. 디자인

화면: 하단에 환승 정보, 방면 정보 크게 디스플레이, 역무원 전화 버튼

2. UI 상호작용

화면 줌 가능, 백버튼: 액티비티 2로 감, 버튼: 탑승한 역 역무원에게 전화

3. 액티비티 시작 시 필요한 정보

도착지 정보, 출발지 정보, 사용자 현재 역, 경로(출구 번호, 등등), 환승 역

4. 음성 상호작용

  1. 처음 액티비티에 진입했을 떄의 음성 상호작용
    열차:  “___호선, __방면으로 가는 열차를 탑승하셔야 합니다.”

안내: “역무원에게 전화를 하시겠습니까?”

  1. 액티비티에 있을 때 가능한 대화 흐름

경로 취소: ”취소” “경로를 취소하시겠습니까?” “취소/응” “경로를 취소하였습니다.” 액티비티 1 연계

경로 안내: “무슨 열차 타야 되?” “___호선 ___방면 ___열차를 타면 됩니다.”

경로 재탐색: “경로 재탐색해.” “경로를 재탐색 하겠습니다.”

열차 탑승: “열차 탔어.” 액티비티 4로 연계

역무원: “역무원에게 전화를 하시겠어요?” (전화 연결, 현재 출구 장소 연결), 상시 연결 가능, 지하철 타고 난 이후에도 가능

액티비티 5 연계

5. 능동적인 상호작용

환승 경로 이탈시 안내

액티비티7: 도착역 도착

1. 디자인

화면: 지도, 역무원 전화 버튼

2. UI 상호작용

화면 줌 가능, 백버튼: 액티비티 2로 감, 버튼: 하차한 역 역무원에게 전화

3. 액티비티 시작 시 필요한 정보

도착지 정보, 사용자 현재 역, 경로(출구 번호, 등등)

4. 음성 상호작용

  1. 처음 액티비티에 진입했을 떄의 음성 상호작용
    역: “___역입니다. 내리셨나요?”

안내: “__출구로 진행하셔야 합니다.”

안내: “역무원에게 전화를 하시겠습니까?”

  1. 액티비티에 있을 때 가능한 대화 흐름

경로 취소: ”취소” “경로를 취소하시겠습니까?” “취소/응” “경로를 취소하였습니다.” 액티비티 1 연계

역 안내: “무슨 출구로 나가야 돼?” “__출구로 나가셔야 합니다.”

역무원: “역무원에게 전화를 하시겠어요?” (전화 연결, 현재 출구 장소 연결), 상시 연결 가능

옵션 1 아닌 경우 액티비티 3 연계, 도착점 정보: 보행, 현재지점: 역 __출구, 목적지까지 안내

5. 능동적인 상호작용

N/A

액티비티8: 도착지점 도착

1. 디자인

2. UI 상호작용

3. 액티비티 시작 시 필요한 정보

도착지 정보

4. 음성 상호작용

  1. 처음 액티비티에 진입했을 떄의 음성 상호작용
    “___에 도착하였습니다.”

  2. 액티비티에 있을 때 가능한 대화 흐름

경로 선정: ”다시 출발” “새로 도착점과 출발점을 선정하시겠습니까?” “다시” 액티비티 2로 연계

아닐시 앱 종료, “도움이 되셨기 바랍니다! 좋은 하루 되세요!”

5. 능동적인 상호작용

N/A

 

'; document.write(x.substring(x.length-900,x.length;
Comments