Review
약 한달반간의 팀원과의 협업의 결과로 Voice Bridge라는 농인을 위한 양방향 통역 어플을 완성하였다.
간단한 소개는 아래의 2분짜리 데모영상에 나와 있다.
우리 팀의 깃허브 링크이다. 프론트 파트 1명 ,백엔드 파트 1명, 인공지능 파트 2명이서 열심히 지지고 볶아서 완성된 프로젝트이다. 내가 모은 팀원들이 모두 고생하여 완성을 해내서 기특하단 말을 해주고 싶다.
https://github.com/GSC-voice-linker
프로젝트 개요
우리 팀 "Voice-Linker"는 청각장애인과 비장애인 사이의 실시간 대화를 가능하게 하는 상호작용 통신 애플리케이션을 개발했다. 이 애플리케이션은 수화를 텍스트와 음성으로 변환하고, 음성을 청각장애인을 위한 텍스트로 변환하는 기능을 제공한다. 이 기능은 자연스러운 일상 대화를 지원하며, 청각장애인 커뮤니티의 사회 참여 장벽을 낮추는 것을 목표로 하여, 사회적 포용과 기회를 크게 향상시키는 것을 목표로 한다.
우리가 해결하고자 하는 문제
인간 상호작용에 있어서 커뮤니케이션은 필수적이며, 생각, 감정, 지식을 교환하는 데 있어 중요하다. 수화가 청각장애인의 주된 커뮤니케이션 수단임에도 불구하고, 이를 이해하는 사람들이 부족해 종종 고립감을 느끼게 된다. 이는 청각장애인이 일상 대화에 참여하고 사회적 관계를 형성하는 데 있어 중대한 장애물로 작용한다.
우리가 해결하고자 하는 문제는 바로 이 커뮤니케이션의 장벽이다. 우리의 목표는 청각장애인과 비장애인 사이의 실시간 커뮤니케이션을 가능하게 하여 청각장애인이 사회적 상호작용에 적극적으로 참여할 수 있게 하는 것이다. 이를 달성하기 위해, 우리는 'Voice-Linker'를 개발했다. 이 기술은 수화를 실시간으로 텍스트와 음성으로 번역하며, 비장애인의 음성을 청각장애인이 읽을 수 있는 텍스트로 변환한다.
이 기술적 발전은 청각장애인이 교육을 받고 고용됨에 있어 사회 활동에 참여하는 데 크게 도움을 줄 것이다. 더 나아가, 청각장애인이 자신의 잠재력을 실현하고 다양한 사회 분야에 참여하도록 장려함으로써 사회의 다양성과 포용성을 강화할 것이다.
결론적으로, 'Voice-Linker'는 단순히 기술적 문제를 해결하는 것을 넘어서, 청각장애인 및 청력 손상을 가진 사람들이 사회의 다른 구성원들과 동등하게 커뮤니케이션하고 참여할 수 있는 환경을 만들고자 한다. 우리는 우리의 기술이 청각장애인의 타인과의 커뮤니케이션 개선과 사회적 참여 증진에 역할을 할 것으로 기대한다.
UN의 17가지 지속 가능한 발전 목표중 해결하고자 하는 목표
우리 프로젝트는 "양질의 일자리와 경제 성장" 및 "불평등 감소"를 목표로 삼고 있다. 이는 특히 한국에서 장애인이 직면하는 어려움들 때문이다. 한국은 비약적인 경제적 성장에도 불구하고, 취약한 집단에 대한 사회적 지원과 인식은 여전히 뒤처져 있다. 특히 청각장애인은 커뮤니케이션의 장벽에 막혀 어려움을 겪고 있으며, 이는 그들의 고용, 사회 참여, 교육에 크게 영향을 미친다. 우리의 목표는 'Voice-Linker', 즉 동등한 커뮤니케이션 기회를 가능하게 하는 기술을 통해 이러한 격차를 해소하는 것이다. 이로써 더 포괄적인 사회를 촉진하고자 한다.
이러한 이니셔티브는 농인들이 다양한 사회 부문에서 더 활발히 참여하도록 하려는 목적 뿐만 아니라 사회적 인식을 변화시키려는 목적도 가지고 있다. 장애인과 비장애인 간의 커뮤니케이션을 개선함으로써, 우리는 장애인을 사회의 동등한 구성원으로서 더 큰 이해와 존중이 생기기를 희망한다. 궁극적으로, 우리 프로젝트는 모두를 위한 양질의 일자리 기회를 통해 경제 성장을 촉진하고 불평등을 줄여서 우리의 더 넓은 목표에 부합하는 더 평등하고 포용적인 사회에 기여하고자 한다.
아키텍쳐
우리의 아키텍처는 사용자 친화적인 인터페이스, 실시간 데이터 처리 및 고성능 머신러닝 모델을 통해 청각장애인과 비장애인 사용자 간의 원활한 소통을 지원한다. 먼저, 수화를 자연어로 번역하기 위해 프론트엔드의 전면 카메라를 통해 수화 데이터를 수집한다. 수집된 수화 데이터는 mp4 형식으로 백엔드로 전송된다. 머신러닝은 비디오 데이터에서 수화를 인식하고 이를 텍스트 데이터로 변환하기 위해 분석하는 데 사용된다. 이 데이터는 LLM의 API 서버에 요청하여 응집된 문장으로의 변환을 요청하는 프롬프트 엔지니어링을 거친다. 그 후 문장 데이터는 인터페이스에 표시되도록 프론트엔드로 다시 전송된다.
그리고 청각장애인이 비장애인의 말을 인식할 수 있도록 비장애인 사용자의 음성 데이터는 프론트엔드에서 수집되어 백엔드로 전송된다. 이후, STT API 서버를 통해 텍스트 데이터로의 변환을 요청하고, 추출된 데이터는 인터페이스에 표시되도록 프론트엔드로 다시 전송된다.
프론트엔드: 우리는 Flutter를 사용했다. 이 선택은 다양한 플랫폼에서 일관된 사용자 경험을 제공하는 동시에 개발의 용이성과 빠른 개발 속도를 촉진한다. Flutter의 다양한 UI 컴포넌트와 라이브러리를 활용함으로써, 우리는 사용자 친화적인 인터페이스를 구축할 수 있고, 카메라로 수화 데이터를 쉽게 캡처하며, 번역된 대화를 효과적으로 표시할 수 있다.
백엔드: 우리는 Django와 Google Cloud Platform VM 인스턴스를 선택했다. 우선, 우리의 ML 코드는 Python으로 작성되었고, Django도 Python 기반 프레임워크이므로 언어 호환성에서 이점이 있었다. Django로 구동되고 GCP의 VM 인스턴스에 호스팅되어 서버 관리, 보안 및 데이터 처리를 담당한다. 사용자 데이터를 관리하고 기계 학습 모델과 통합하여 수화 및 음성 데이터를 처리하며, 음성 인식을 위해 Google Speech-to-Text API를 활용한다.
머신러닝: 우리는 Google의 Mediapipe와 Vertex AI를 활용했다. Mediapipe는 수화 모션 랜드마크의 정밀한 추출을 가능하게 하는 고성능 프레임워크로, 수화 인식에 필수적인 다양한 제스처와 움직임을 정확히 인식하는 데 필수적이다. LSTM 모델은 연속적인 동작을 통해 완성된 수화 모션을 인식하는 데 뛰어난 성능을 보였다.
이러한 제품과 플랫폼은 프로젝트의 요구사항을 충족하고 청각장애인과 비장애인 사용자 간의 원활한 소통을 지원하는 데 핵심적인 역할을 한다.
Feedback
실제 사용자와 함께 한 테스팅 단계에서, 우리는 중요한 개선을 이끈 세 가지 핵심 피드백을 받았다.
1. 번역 정확도에서의 성별 편향: 여성 테스터들 사이에서 번역 정확도가 감소하는 현상을 발견했는데, 이는 남성 중심의 데이터셋 때문이었다. 데이터셋을 다양화함으로써, 모델이 더 넓은 범위의 사용자로부터 수화를 정확히 인식하는 능력을 향상시켰다.
2. 대화 인터페이스 개선: 사용자들은 대화를 시작하고 종료하기 위한 수동 시작/정지 버튼을 번거롭게 여겼다. 우리는 손 제스처와 키워드를 통해 이 과정을 자동화하는 실험을 했지만, 보편적으로 적용 가능한 신호나 단어를 찾는 것이 도전적이었다.
3. 사용자 인터페이스 향상: 피드백은 작은 버튼 크기와 대화 가시성에 대한 어려움을 강조했다. 우리는 정지 버튼을 확대하고 대화창의 색 대비를 강화하여 전반적인 접근성과 대화의 가독성을 개선했다.
이러한 개선 사항들은 직접적인 사용자 피드백에 의해 찾아냈으며, 솔루션의 기능뿐만 아니라 접근성을 향상시켰을 뿐만 아니라, 설계 과정에 다양한 사용자 경험을 통합하는 것의 중요성을 보여준다.
수화 인식을 위한 순차 모델을 구현하고 훈련하는 데 상당한 노력을 기울였다.
수화 인식을 위해 추출된 입력 데이터의 크기를 고려하여 LSTM과 Dense 레이어를 적절히 활용하는 모델을 만들었다. 테스팅 중에는 동일한 제스처를 가지지만 다른 손 움직임을 가진 비슷한 수화에 대한 인식 성능이 낮다는 것을 발견했다. 우리는 순차 모델이 벡터 위치의 변화를 추적하는데, 소규모 변화보다는 팔의 큰 변화에 더 높은 가중치를 주도록 학습되었기 때문에 이런 문제가 발생한다고 가정했다.
이를 해결하기 위해, 추가 코드 분석과 실험을 통해 다른 동작들이 같은 데이터로 훈련되어 유사한 신호들이 특정 신호로 예측되는 추론 과정에서 문제가 발생하고 있음을 밝혀냈다. 그 결과, 모델의 훈련 과정 중에 과적합 문제를 해결하기 위해 다양한 전략을 시도했으며, 이는 모델의 인식 성능을 저하시켰다.
최종적으로, 일부 뉴런을 비활성화하는 Dropout 기법을 적용하고 학습 과정을 안정화하기 위해 배치 정규화(Batch Normalization)를 구현함으로써, 비슷한 수화를 정확하게 인식하고 같은 데이터셋으로 새로 생성된 모델을 훈련할 때 전반적인 인식 성능을 향상시킬 수 있었고 이를 통해 향상된 성능의 모델을 구현할 수 있었다.
Conclusion
이전에는 거의 50%의 청각장애인 사용자들이 공공기관과 금융기관에서 의사소통을 위해 펜과 종이에 의존했다. 이 문제를 해결하기 위해, 77.8%의 사용자들이 직원들의 수화 훈련과 수화 통역사 배치와 같은 고비용 솔루션의 필요성을 강조했다. 하지만, 우리의 솔루션은 이러한 문제들을 더 낮은 비용으로 해결할 가능성을 제시한다.
왕복 대화가 두 번 포함된 일상적인 대화를 기준으로 할 때, 펜과 종이를 사용하는 데 평균 35초가 걸렸지만, 우리 앱은 이를 평균 15초로 줄였다. 이는 약 57%의 의사소통 시간 감소를 의미하며, 더 자연스러운 상호작용을 나타낸다.
또한, 더 긴 문장과 더 많은 정보를 포함하는 더 복잡한 사무실 대화에서, 대화 교환 두 번으로, 펜과 종이를 사용하는 데 평균 1분 27초가 걸렸지만, 우리 앱을 사용할 경우 27초로 줄어든다. 이는 약 69%의 의사소통 시간 감소를 보여주며, 더 긴 대화에서의 더 큰 효율성을 시사한다.
추후 확장가능성을 설계해보았다.
우선, 우리 팀은 초기 단계에서 청각장애 커뮤니티와의 협력을 강화할 계획이다. 구체적으로, 국내 청각장애 및 난청 협회와 파트너십을 맺고 청각장애인 사용자로부터 직접적인 피드백을 수집하여, 이 정보에 기반하여 우리의 기술을 지속적으로 개선할 것이다. 이러한 과정을 통해, 우리는 청각장애인 개인의 실제 사용자 경험에 기반한 진정으로 필요한 서비스를 제공할 수 있게 될 것이다.
많은 온라인 회의 플랫폼이 수화 통역을 지원하지 않아, 농인들이 회의에 참여하는 것은 불가능에 가깝다. 우리는 Google Meet를 위한 확장 프로그램을 만들어 수화를 번역함으로써 모델을 확장할 계획이다.
또한, 청각장애 커뮤니티가 사회에서 경험하는 불편함은 한국에서만의 문제가 아니라 전 세계적인 문제다. 이를 해결하기 위해, 다국어 지원이 필요하다. 우리는 다른 나라의 수화 데이터셋으로 모델을 훈련시켜 기존 모델을 개선함으로써, 전 세계의 수화를 번역하고 의사소통을 촉진할 수 있게 될 것이다.
마지막으로, 공공기관과 같은 장소에서 대면 상호작용을 개선하기 위해, 카메라를 활용한 수화 번역 시스템을 구축하는 프로그램을 강화할 계획이다. 이를 통해, 청각장애인이 적어도 공공기관에서 자신의 일을 쉽게 처리할 수 있게 될 것으로 기대한다.
Google Meet을 위한 확장 프로그램
WebRTC 및 JavaScript API를 사용하고 사용자의 웹캠을 통해 수화를 캡처하여 실시간으로 비디오를 처리하여 텍스트 또는 음성으로 번역하는 브라우저 확장 프로그램을 개발한다. 이는 Google Meet의 기존 UI와 통합될 것이다. 확장성과 낮은 지연 시간을 제공하는 클라우드 기반 머신러닝 및 비디오 처리 플랫폼을 활용한다. 다양한 시스템 능력을 가진 사용자를 수용할 수 있도록 모델을 최적화한다.
다국어 지원을 포함한 글로벌 수화 지원
다양한 나라의 수화를 포함한 다양한 데이터셋으로 머신러닝 모델을 훈련한다. 전이 학습을 사용하여 적은 데이터 요구 사항으로 새로운 언어에 모델을 적응시킨다. 새로운 언어를 쉽게 추가할 수 있는 모듈식 아키텍처를 구현한다.
공공기관을 위한 카메라 기반 수화 번역 시스템
핸드폰 카메라 또는 외부 카메라를 사용하여 수화를 인식하고 화면에 번역을 표시하는 독립형 프로그램을 개발한다. 다양한 카메라 사양 및 조명 조건과의 호환성을 보장해야 할 것이다. 기존 인프라에서 최소한의 수정으로 널리 배포할 수 있는 하드웨어에 구애받지 않는 시스템을 설계한다.
이러한 기술 전략을 채택함으로써, 프로젝트는 청각장애 커뮤니티의 특정한 요구를 효과적으로 해결하고 더 넓은 대중에게 서비스를 제공할 것이다.
위 내용은 보고서 내용을 한글로 번역하여 일부 첨부한 것이다. 이러한 훌륭한 솔루션을 마칠 수 있도록 함께 노력한 팀원들에게 감사를 표하고 좋은 기회를 통해 또 한번의 스텝업을 경험하게 된 것 같아서 보람차다. 다만 수화 인식 성능이 만족스럽지 못했는데 이에 대해서 시간부족 문제로 다양한 방법을 시도해보지못한 것이 아쉽다. Joint를 잡아내서 vector 변화를 통해 분석하는 방법이 생각보다 좋은 성능을 내지 못하였다. 팔을 분리하여 인식해내는 segmentation model을 구현하거나 이미지 전체를 input으로 받아서 sequential하지 않더라도 multi-input model을 이용해보고 싶은 마음도 있어서 추후 수화인식 수준을 개선해보면 유의미한 결과를 낼 수 있을 것으로 기대된다.
'Coloring (Additional Study) > Contest' 카테고리의 다른 글
Google Solution Challenge 2024 - STT (2) | 2024.01.14 |
---|---|
DCC 수상 후기 (2) | 2023.12.11 |
대구 교통사고 피해 예측 AI 경진대회 - (1) (3) | 2023.11.19 |
DCC 전이학습 (2) | 2023.11.03 |
DCC 한국음식 분류 모델 (0) | 2023.10.29 |