Gemini Live와 Reachy Mini로 나만의 대화형 로봇을 만들어보세요!

by DD
1개월 전
조회수 6

Gemini Live API를 활용하여 Reachy Mini 로봇이 실시간 음성 대화, 춤, 표정 표현 등을 수행하도록 구현

fastrtc 라이브러리를 통해 음성 데이터를 LLM으로 스트리밍하고, Gemini Live 또는 OpenAI Realtime 백엔드 선택 가능

Tool dispatch layer를 통해 춤, 표정, 머리 움직임 등 다양한 동작을 제어하며, 60Hz 제어 루프를 통해 부드러운 움직임 구현

사용자 정의 프로필을 통해 로봇의 성격을 변경하고, 오픈 소스(Open Source)로 제공되어 자유로운 커스터마이징 가능

Reachy Mini 대화형 로봇의 아키텍처 분석

본 시스템은 4개의 레이어(Layer)로 구성되어 있으며, 각 레이어는 상호 협력하여 동작한다.

음성 입력(Microphone)은 fastrtc 라이브러리(Library)를 통해 Gemini Live 또는 OpenAI Realtime 백엔드로 전송

Tool dispatch layer는 LLM의 명령을 받아 춤, 표정, 머리 움직임 등의 동작을 수행

MovementManager는 60Hz 루프(Loop)로 로봇의 움직임을 제어하며, Primary move와 Secondary offset을 혼합하여 자연스러운 움직임 구현

Reachy Mini는 로봇 하드웨어(Hardware) 또는 시뮬레이터(Simulator)를 통해 동작하며, 오픈 소스(Open Source)로 제공되어 커스터마이징이 용이하다.

Gemini Live 세션의 작동 원리

Gemini Live 세션은 시스템 프롬프트(System Prompt), 음성 선택, 도구 선언, 입력 및 출력 음성 변환을 포함하는 LiveConnectConfig로 시작된다.

사용자의 음성 데이터는 fastrtc를 통해 16kHz로 리샘플링(Resampling)되어 Gemini로 전송

Gemini는 오디오 청크(Audio Chunk), 입력/출력 변환, 도구 호출(Tool Call) 등을 포함하는 응답 스트림(Response Stream)을 반환

도구 호출은 BackgroundToolManager를 통해 백그라운드(Background)에서 실행되어 오디오 스트림을 차단하지 않음

결과적으로, 실시간 음성 처리(Real-time Voice Processing)와 로봇 제어(Robot Control)를 효율적으로 통합한다.

도구 호출(Tool Calling) 메커니즘 심층 분석

LLM이 로봇에게 특정 동작을 지시하면, BackgroundToolManager가 해당 작업을 백그라운드에서 실행한다.

LLM은 'dance(name='macarena')'와 같은 함수 호출을 생성

BackgroundToolManager는 해당 함수를 실행하기 위한 태스크(Task)를 시작

MovementManager는 큐(Queue)에 동작을 추가하고, 실행 결과를 LLM에 반환

내장된 도구(Built-in Tools)는 춤, 표정 표현, 머리 움직임, 카메라 제어 등을 포함

이러한 구조를 통해 LLM과 로봇의 물리적 동작(Physical Action)을 효과적으로 연결한다.

Reachy Mini의 움직임 시스템 심층 분석

MovementManager는 60Hz 제어 루프(Control Loop)를 사용하여 로봇의 움직임을 관리하며, 두 가지 유형의 모션을 혼합한다.

Primary move는 큐(Queue)에서 순차적으로 실행되며, 한 번에 하나의 동작만 재생

Secondary offset은 Primary move에 추가되어, 음성 반응(Speech-reactive), 얼굴 추적(Face Tracking) 등을 구현

로봇이 유휴 상태(Idle State)일 때는 호흡 애니메이션(Breathing Animation)을 통해 자연스러운 모습을 유지

이러한 레이어드(Layered) 방식은 로봇의 움직임을 부드럽고 자연스럽게 만들어준다.

사용자 정의 프로필(Custom Profile)을 통한 로봇 성격 변경

사용자는 plain text 파일을 통해 로봇의 성격을 쉽게 변경할 수 있다.

profiles/ 디렉토리 아래에 새로운 폴더를 생성하고, instructions.txt 및 tools.txt 파일을 작성

instructions.txt 파일은 로봇의 정체성(Identity)과 응답 규칙(Response Rule)을 정의

tools.txt 파일은 로봇이 사용할 수 있는 도구를 지정

REACHY_MINI_CUSTOM_PROFILE 환경 변수를 설정하거나 Gradio UI를 통해 실시간으로 프로필을 변경 가능

이러한 유연성은 로봇의 다양한 성격(Personality)을 구현하고, 사용자 경험을 풍부하게 만든다.

Build a Talking Robot with Gemini Live and Reachy Mini