우리 앱의 피지컬과 뇌를 해부해보자
나는 외국인들이 자연스럽게 한국어를 배울 수 있는 앱을 개발하는 데 미친 자이다(?)

1주간 프론트엔드, 백엔드, 데이터베이스가 어떻게 작동하는지 더욱 이해하고 싶었다. 0과 1로 이루어진 데이터를 통해 실제 대화가 이루어지는 과정을 이해하고 구현하는 것은 흥미로운 도전이다.
앱의 구조는 마치 사람의 신체와 같다. 프론트엔드는 얼굴이며, 백엔드는 뇌, 데이터베이스는 기억을 저장하는 장치라고 볼 수 있다.
1. 음성인식
우리 앱은 사용자가 마이크 버튼을 누르면 음성 인식이 시작된다. 목소리의 크기에 따라 입력 여부를 감지하고, 일정 수준 이하로 떨어지면 3.5초간 대기한 후 녹음을 종료한다. 이렇게 수집된 음성은 WAV 형식으로 변환되어 백엔드로 전송된다.
백엔드는 받은 음성 데이터를 OpenAI Whisper API로 전송하기 전에 먼저 데이터 크기를 검증한다. 96KB 이하의 데이터는 인식 오류를 일으킬 수 있어 필터링하여 MBC 오류 문제를 해결했다. 충분한 크기의 음성 데이터는 Whisper API를 통해 텍스트로 변환되고, 후처리를 거쳐 다시 사용자에게 전달된다.
사용자는 이 텍스트를 확인하고 필요하다면 수정한 후 전송할 수 있다.
2. 문장 및 음성 생성
자연스러운 대화를 위해서는 문맥에 맞는 응답 생성이 핵심이다. 이를 위해 프롬프트 엔지니어링을 4단계로 구성했으며, 각 단계를 종합해 LLM이 최종 응답을 생성한다.
생성된 텍스트는 다시 음성으로 변환되어야 하는데, 이 과정에서도 몇 가지 최적화를 진행했다. 너무 긴 응답은 음성 변환 시간이 지연되므로 적절한 길이로 문장을 분할하고, 각각을 순차처리하여 음성변환 시간을 단축했다.
응답의 자연스러움을 높이기 위해 AI 김민지에 대한 상세한 정보와 성격, 대화 주제, 제한사항, 말투 등을 함께 전달한다. 또한, 대화의 풍부함을 더하기 위해 각 대화를 메타데이터화하는 작업을 진행 중이다. 현재 시간, 사용자의 위치 정보뿐 아니라 사용자의 국적, 나이, 성별, 관심사 등도 포함할 예정이다.
1주 간 음성 인식 성능 개선을 위해 여러 방식을 실험해봤다. 위에서 언급한 Whisper MBC 버그 해결 외에도, 음성 인식 중단 문제를 해결하기 위해 사용자의 볼륨에 반응하는 이퀄라이저 바를 추가했다. 또한 응답 생성과 음성 변환 사이의 지연 시간을 줄이기 위해 문장 분할 방식을 도입했고, 음성 인식 감도와 무음 감지 시간도 최적화했다.
3. 할 거 쥰나 많누?
아직 가야 할 길이 멀다. 현재 가장 큰 과제는 음성 인식부터 음성 생성까지의 지연 시간이다. 이를 개선하기 위해 여러 방안을 검토 중이다.
OpenAI의 스트리밍 방식 도입, mp3 대신 opus 형식 사용, ElevenLabs의 자연스러운 음성 엔진 도입 등을 고려하고 있다. 또한, 소형 모델의 파인튜닝이나 다른 빅테크 음성 인식 API 도입도 검토 중이다. UI/UX 측면에서는 애니메이션을 통해 대기 시간의 체감을 줄이는 방안도 고려하고 있다.
개발 프로세스 개선도 중요한 과제다. 파이프라인 순서에 따른 코드 재작성, 협업시 소통 방법도 고민 중이다.
사용자 경험 강화를 위해 아바타나 프로필 사진 도입도 검토 중이다. Hugging Face의 최신 모델들을 지속적으로 모니터링하고, LangChain의 업데이트도 따라가야 한다. 필요하다면 Node.js로의 전환도 고려하고 있으며, 이를 위해 JavaScript와 React에 대한 이해도 높여야한다. SQL 외에도 NoSQL에 대한 지식도 쌓아야 한다ㅎㅎ.
이 모든 과정의 목표는 사용 시간, 대화 턴수, NPS, 리텐션 등 핵심 지표들의 획기적인 개선이다.
추가적으로 딥러닝에 대한 이해도 필요하고, 수학 지식도 업데이트해야 한다. 최신 LLM 기술을 이해하기 위한 논문 리서치 및 방법론 개선도 게을리할 수 없다. 이민 정책 동향과 경쟁사 분석을 통한 차별화 전략 수립, AI 비즈니스 트렌드 파악, 리더십, 자금 조달 방안 등 해결해야 할 과제가 산더미다.
할 게 정말 많지만 너무 재밌는 요즘이다.
외국인이 사랑하는 제품 만들어서 다문화다민족 국가로 전환되는 데 기여할 수 있다면 내 모든 것을 앗아가도 족하다는 생각으로 임하고 있다. 구라다ㅎㅎ
가즈아!
