1) 프로젝트 정보
- 디지털 휴먼 프로젝트 입니다.
- 사용자 질문 -> STT -> Chat GPT -> TTS -> 딥러닝 서버-> Unity 클라이언트 버텍스 애니메이션 출력 프로세스를 거칩니다.
2) 업무 내용
- STT를 이용해 문장을 인식하여 open AI API(Chat GPT)에 질문을 보내고 답변을 받아 다시 회사 내 서버로 보내는 프로세스를 개발하였습니다.
- 안드로이드 내장 API로 AndroidStudio를 사용해 ****STT Plugin을 만들었습니다.
- 서버 팀과 협력하여 LEST API로 통신하는 기능을 개발하였습니다.
- 입 모양 버텍스 애니메이션을 받아와 Unity에서 디지털 휴먼에 적용하는 기능을 도중부터 개발하였습니다.
3) 문제 해결
- 버텍스 애니메이션을 적용하는 부분을 인수인계 받았으나 샘플로 사용하던 디지털 휴먼과 프로젝트에서 사용하는 디지털 휴먼이 달라 때문에 하드 코딩 되어있던 부분들이 틀어졌습니다.
- 버텍스 수가 하드 코딩 되어있어, 서버에서 버텍스 수 정보도 받아와 동적으로 적용 시켰습니다.
- 그러나 적용 시킬 대상의 버텍스 정보가 달라 다른 사람의 얼굴 형이 되어서 디지털 휴먼 얼굴의 obj 파일을 이용해 버텍스 인덱스 정보를 뽑아 적용하였습니다.
- 여전히 정상적으로 작동하지 않았습니다. 딥러닝 팀에서는 예전 버전, 클라이언트 팀에서는 최신 버전을 사용하고 있었던 것입니다. 결국 관련 부서들과 버전을 맞춰 다시 적용하여 해결하였습니다.
- 사용자 질문 -> STT -> Chat GPT -> TTS -> 딥러닝 서버-> Unity 클라이언트 버텍스 애니메이션 출력 이라는 긴 프로세스를 진행해야 하는데 이걸 실시간처럼 보이기 위해 리스폰 시간을 대폭 단축해야 하였습니다.
- 제일 오래 걸리는 부분은 버텍스 애니메이션을 받아오는 시간, 버텍스 정보를 애니메이션으로 변환하는 데 걸리는 시간이었습니다. 특히 서버에서 받아오는 시간은 통신 상태에 따라 한계가 존재했습니다.
- 바이너리 데이터를 받아옴과 동시에 애니메이션 변환을 하도록 비동기로 처리했습니다. 두 작업이 거의 동시에 마무리되었기 때문에 원래 7~8초가량 걸리던 작업을 5초 내로 줄일 수 있었습니다.
4) 개발 후기
- 발표 용 버전을 만든 뒤 회사를 나가게 되어 프로젝트의 완성은 보지 못했습니다.
- 유니티 클라이언트 부분은 거의 혼자 도맡아서 하게 되었기 때문에 다른 팀과 직접적으로 소통하며 진행해야 했습니다. 특히 서버 팀과 깊은 협업을 해야 했기 때문에 커뮤니케이션 능력이 대폭 상향되었습니다.