AI 롤플레잉 대화 어플리케이션2

지난번에 시나리오를 기반으로 AI와 대화를 진행하는 것 까지 구현했고
이번에 중점적으로 살펴본것은:

  • 발화 -> STT -> LLM -> TTS 를 하는 과정에서 지연(latency)를 줄이는것

  • UI가 있는 웹 어플리케이션 형태로 만들기

  1. 지연 줄이기

    발화 -> STT -> LLM -> TTS 과정

    음성 인식 시스템의 프로세스를 보여주는 다이어그램
    • 이 문제를 해결하기 위해 첫번째로 Gemini로 변경시도: LLM이 오디오를 Input → Output 을 해준다면 처리하는 단계를 줄일수 있을거라 생각:
      Gemini API를 통해 오디오를 input으로 사용하여 테스트해본 결과, 응답속도가 너무 느리게 나와서 이 방법은 안쓰기로 했습니다.

    • Livekit Agent 기술을 활용:
      LiveKit은 애플리케이션에서 실시간 오디오 및 비디오 경험을 구축하고 확장하기 위한 무료 오픈 소스 인프라이고 Livekit Agent 는 실시간 멀티모달 AI 애플리케이션을 쉽게 구축할 수 있는 API, 서비스 및 도구 모음 입니다.

      이 기술의 특징:

      • 스트리밍 STT: 전체 음성이 끝날 때까지 기다리지 않고, 실시간으로 음성을 텍스트로 변환합니다. 이를 통해 LLM 처리를 더 빨리 시작할 수 있습니다

      • WebRTC 기반 통신: 음성 데이터의 빠른 전송

      • 턴테이킹 큐 감지: AI 모델이 사용자의 발화 종료를 예측

      • 끼어들기, 중단(interucption): 사용자가 AI의 응답 중에 말을 끊을 경우, 즉시 새로운 입력을 처리

      • 병렬 처리: STT, LLM 호출, TTS 과정을 가능한 한 병렬로 처리하여 전체 지연 시간을 줄임

      기본적으로 오픈소스이고 좋은건 클라우드로 서비스도 제공해주기 때문에 코어기술을 직접 개발할 필요 없이 가져다 쓸수 있었습니다.


      과정 도식화 이미지:

      webtc 서버와 stt의 다이어그램
  2. UI가 있는 웹 어플리케이션 형태로 만들기
    구현은 웹형태로 Nextjs로 개발했습니다.
    Livekit에서는 React를 포함하여 다양한 플랫폼 SDK를 제공해 주기 때문에 개발하기 쉬었습니다.

    구현된 화면: 대화가 완료 되면 대화내용을 참고하여 리뷰(오른쪽패널)를 받음

    한국어 MP3 플레이어 - 스크린샷


  3. 결과 및 인사이트
    몇가지 시나리오를 테스트 해봤을때 개인적으로 대화진행이 자연스럽다는 느낌을 받았습니다.
    간단한 시나리오(카페에서 주문받기, 호텔 프런트 데스크 스탭으로 손님 응대하기)는 저번에 보여드린것 처럼 자연스럽게 대화를 이어갈수 있었고, 조금 난이도 있는 시나리오(프론트엔드 개발자 면접진행하기)도 준수한 수준이었습니다.

    처음 생각한 제 사례의 목적은 "나만의 AI 언어(영어)선생님" 만들기 였는데 지금까지 스터디를 진행하면서 언어학습 외에도 다양한 분야 또는 상황에 접목하면 좋을것 같다는 생각이 들었습니다.

    추후 난이도 조절, 나만의 커스텀 시나리오 만들기, 학습진행도 및 성과기록, AI 피드백 고도화등의 개선이 이루어진다면 외국인 친구가 없어도 충분히 영어를 학습할수 있는 매력적인 나만의 언어학습 도구가 될것 같습니다.

    마지막으로 라마인덱스 스터디에서 라마인덱스를 하나도 쓰지 않고 다른 얘기만 드린것 같아서 죄송하단 말씀드립니다. 다음에 라마인덱스를 쓸 기회가 생긴다면 라마인덱스에 대한 개발경험도 꼭 공유드릴수 있는 기회가 오면 좋겠습니다.
    - 감사합니다.

10
5개의 답글

👉 이 게시글도 읽어보세요