현재 생성형 AI를 어떻게 사용하고 계시나요?
아마 대부분 웹 브라우저나 앱 또는 개발 환경에서 텍스트를 입력해 쓰는 분이 많을 것입니다. 텍스트 위주의 커뮤니케이션이면 충분할까요? 앞으로는 음성이 꽤 중요한 수단이 될 것 같습니다.
스마트폰에서 생성형 AI를 잘 활용하는 분들은 이미 음성으로 대화를 이어 가는 것의 편리함을 잘 알 것입니다. 이런 경험이 작업 환경 더 나아가 업무 환경까지 이어지지 말라는 법은 없습니다. 관련해 이번 포스팅에서는 Gemini Live API와 ADK를 활용해 음성으로 소통하는 실시간 양방향 옴니 앱을 만드는 방법을 알아보겠습니다.
텍스트만으로는 부족한 이유
텍스트 채팅은 편리하지만 한계가 분명합니다. 손이 자유롭지 않은 현장 작업자는 입력창에 문장을 쓰기 어렵습니다. 운전 중이거나 장비를 다루는 상황도 마찬가지입니다. 고객 상담처럼 대화의 흐름이 중요한 업무에서는 입력하고 기다리는 과정 자체가 불편합니다.
사용자가 원하는 것은 사람과 대화하듯 AI와 대화하는 경험입니다. 말하는 도중에 끼어들 수 있어야 하고 답이 곧바로 돌아와야 합니다. 화면이나 카메라로 보여 주는 상황도 AI가 함께 이해해야 합니다. 구글 클라우드가 소개한 모터 정비 사례가 좋은 예입니다. 작업자가 카메라로 장비를 비추면 AI가 장비와 매뉴얼 정보를 알아보고, 소리로 결함 여부를 가려내고, 수리 절차까지 시작합니다.
에이전트가 텍스트 프롬프트만 기다린다면 눈도 귀도 없이 사용자와 소통하는 셈입니다. 에이전트가 채팅 창 안에 갇혀 있는 것이죠. 반면에 듣고 보고 기억하고 실시간으로 행동할 수 있다면? 모든 내용을 입력한 뒤가 아니라 업무가 흘러가는 도중에 일할 수 있습니다.
일반 챗봇과 옴니 앱은 무엇이 다를까?
듣고, 보고, 기억하고, 말하고, 행동하는 새로운 유형의 소프트웨어를 옴니 앱이라고 부릅니다. 일반 챗봇은 텍스트가 들어가고 텍스트가 나옵니다. 한 번의 차례에 하나의 답을 냅니다. 옴니 앱은 여러 감각으로 받아들이고 여러 방식으로 표현합니다. 이 순환이 실시간으로 계속 열려 있습니다. 더 나은 챗봇 답변과는 차원이 다른 변화입니다.
옴니 앱도 일반 AI 앱처럼 인지, 추론, 표현을 과정을 거칩니다. 하지만 차이가 있습니다. 일반 AI 앱은 순차적으로 처리하는 반면에 옴니 앱은 양방향(Bidirectional)으로 반응합니다. 이게 무슨 소리냐하면 사용자와 AI가 서로 동시 상호작용할 수 있다는 것입니다. 예를 들어 볼까요. 사용자가 말하는 동안 에이전트가 듣습니다. 에이전트가 말하는 동안에도 세션은 열려 있습니다. 카메라는 프레임을 보내고 에이전트는 도구 호출을 내보냅니다.
| 단계 | 역할 |
| 인지(Perceive) | 음성, 카메라, 화면, 메모리, 문서, 이미지를 받아들임 |
| 추론(Reason) | 무엇이 중요한지, 어떤 도구를 부를지, 다음에 무엇을 할지 판단 |
| 표현(Express) | 말하고, 쓰고, 미디어를 만들고, 실제로 행동 |
음성 구현 방식에서도 차이가 드러납니다. 텍스트 음성 변환(TTS)은 읽어 줄 수는 있지만 들을 수는 없습니다. 라이브 방식은 세션이 열려 있는 동안 계속 듣고, 오디오로 답하고, 말하는 도중에 끼어들 수 있습니다. 이 끼어들기가 녹음을 듣는 느낌을 실제 대화로 바꾸는 순간입니다.
구글 클라우드의 Gemini Live API와 ADK는 이러한 실시간 멀티모달 경험을 구현할 기반을 제공합니다. 음성을 텍스트로 바꾼 뒤 LLM에 보내고 다시 음성으로 합성하는 직렬 파이프라인을 넘어, 음성과 이벤트가 양방향으로 계속 흐르는 구조를 만들 수 있습니다.
실시간 양방향 아키텍처를 설계하는 방법
이제 옴니 앱을 구현하는 방법을 살펴보겠습니다. 기본 아키텍처는 브라우저 또는 모바일 앱, 백엔드, ADK 실행 계층, Gemini Live로 구성할 수 있습니다. 사용자 단말은 마이크와 카메라로 입력을 수집하고 스피커와 화면을 통해 응답을 전달합니다. 단말과 백엔드는 WebSocket으로 연결하며, 백엔드는 인증과 정책을 적용합니다. ADK는 에이전트, 러너, 세션을 관리하며 Gemini Live와 실시간으로 데이터를 주고받습니다.

이 구조에서 중요한 것은 각 구성 요소를 연결하는 것에 그치지 않고, 음성·영상·텍스트와 도구 호출이 동시에 오가는 흐름을 끊김 없이 관리하는 일입니다. 이를 위해 다음과 같은 다섯 가지 설계 원칙을 고려해야 합니다.
- 송신과 수신 분리: 마이크는 짧은 간격으로 오디오 조각을 보내고, 모델도 음성, 자막, 도구 요청을 연속해서 보냅니다. 어느 한쪽의 처리가 다른 쪽을 막으면 대화가 끊기거나 응답이 늦어집니다. 따라서 ADK의 LiveRequestQueue와 같은 큐를 두고, 사용자 입력을 보내는 작업과 모델의 응답을 처리하는 작업을 서로 독립적인 비동기 작업으로 운영해야 합니다.
- 연속적으로 들어오는 입력과 전송이 끝난 입력 구분: 마이크 음성처럼 끝나는 시점이 정해지지 않은 입력은 실시간 전송 방식(send_realtime)으로 계속 보냅니다. 이때 무음도 발화가 끝났는지를 판단하는 신호가 되므로 임의로 제거해서는 안 됩니다. 반면 사용자가 전송 버튼을 누른 텍스트나 한 장의 이미지는 완성된 콘텐츠 전송 방식(send_content)으로 보냅니다. 두 입력을 같은 방식으로 처리하면 모델이 발화 종료 시점과 응답 시작 시점을 정확히 판단하기 어렵습니다.
- 이벤트를 중심으로 화면과 도구의 동작 제어: 모델이 음성 조각을 보내면 즉시 재생하고, 자막 이벤트가 도착하면 화면에 표시합니다. 도구 호출 이벤트가 발생하면 백엔드는 사용 권한을 확인한 뒤 해당 업무 함수를 실행합니다. 사용자가 응답 도중 말을 시작해 끼어들면 현재 재생 중인 음성을 즉시 멈춥니다. 이러한 이벤트 처리가 유기적으로 이어져야 대화와 애플리케이션의 동작을 하나의 실시간 경험으로 제공할 수 있습니다.
- 세션 관리와 응답 지연 사이 균형 잡기: 실시간 오디오 조각을 받을 때마다 원격 세션 저장소에 기록하면 네트워크 왕복이 반복돼 음성 응답이 늦어질 수 있습니다. 대화 중에 필요한 상태는 메모리에 유지하고, 대화 요약과 감사 기록은 일정한 주기에 따라 비동기로 저장하는 편이 좋습니다. 다만 인스턴스 장애와 수평 확장에 대비해 세션 복구 방법을 마련하고, 민감정보의 보존 기간도 함께 정해야 합니다.
- 운영 과정에서 필요한 안전장치 마련: Gemini Live API는 오디오 전용 세션을 15분, 오디오와 비디오를 함께 사용하는 세션을 2분으로 제한하며, 연결 하나의 수명도 약 10분입니다. 더 긴 대화를 지원하려면 세션 재개(Session Resumption)와 컨텍스트 창 압축(Context Window Compression)을 설정하고, 서버가 보내는 종료 예고 메시지(GoAway)를 감지해 재연결을 준비해야 합니다.
이외에도 연결당 비용 한도를 설정하고, 네트워크 품질이 낮아지면 텍스트 방식으로 전환하는 대체 경로를 마련해야 합니다. 중요한 도구를 실행하기 전에는 사용자 승인을 받고, 유해 콘텐츠와 개인정보를 통제하는 정책도 적용해야 합니다. 특히 음성 로그에는 개인을 식별할 수 있는 음성 특징과 감정 상태가 담길 수 있으므로 수집 목적과 동의 절차, 암호화 방식, 접근 권한, 보관 기간과 삭제 기준을 명확히 정해야 합니다.
음성 기반 AI 서비스 도입을 검토하고 있다면?
멀티모달 전환은 모든 화면에 음성 버튼을 넣는 프로젝트가 아닙니다. 먼저 사용자의 손과 눈이 바쁜 순간, 텍스트 입력이 대화를 방해하는 순간, 이미지나 음성이 판단에 꼭 필요한 순간을 찾아야 합니다. 사용 시나리오마다 주 모달리티와 보조 모달리티를 정하고 실패했을 때 돌아갈 수단을 준비해야 합니다.
음성은 첫 응답 시간, 끼어들기 성공률, 대화 중단률을 봅니다. 영상과 이미지는 업로드 시간, 인식 정확도, 개인정보 노출을 봅니다. 텍스트는 기록성과 수정 가능성을 살려 최종 확인과 승인에 활용할 수 있습니다. 여러 모달리티를 무조건 동시에 쓰기보다 각 방식이 가장 잘하는 역할을 나누는 편이 자연스럽습니다.
모든 서비스를 한 번에 멀티모달로 바꿀 필요는 없습니다. 먼저 텍스트 에이전트의 도구와 정책을 안정화하고, 음성 입력과 출력을 더해 지연과 끼어들기를 검증합니다. 이후 이미지와 화면 맥락을 연결하고, 마지막으로 채널을 바꿔도 세션과 업무 상태가 이어지는 경험을 설계합니다. 모달리티별 평가 기준을 통과하며 단계적으로 넓혀 가는 것이 좋습니다. Gemini Live API와 ADK를 활용해 사용자의 상황에 맞춰 보고 듣고 행동하는 옴니 앱을 구현하고 싶다면 메가존소프트 문의 포털을 통해 상담을 남겨 주세요.




