LiveKit은 개발자가 애플리케이션에 영상, 음성, 데이터 기능을 구축할 수 있도록 하는 선도적인 실시간 플랫폼입니다. 2021년 WebRTC를 사용하는 오픈 소스 프로젝트로 시작한 LiveKit은 실시간 음성과 영상 AI의 선구자입니다. 현재 개인 개발자부터 OpenAI처럼 실시간 음성의 한계를 넓히는 대기업까지 수천 명의 개발자와 팀이 LiveKit 인프라를 사용합니다.
대부분의 기업이 영상 통화를 온라인 회의 도구로만 볼 때, LiveKit 창립자들은 실시간 음성과 영상이 모든 애플리케이션에 필수적이 될 미래를 그렸습니다. 이 비전은 2024년 1월 프로그래밍 가능한 멀티모달 AI 에이전트를 구축하는 획기적인 프레임워크 LiveKit Agents의 출시로 이어졌습니다.
여기에서 Cartesia로 구동되는 LiveKit Agent와 실시간 대화를 나눠 보세요.
과제
LiveKit은 사람 수준의 추론 능력을 갖춘 AI 에이전트를 만들고자 했으며, 이를 위해 여러 복잡한 기술적 과제를 해결해야 했습니다.
- 낮은 지연시간: 실시간 추론을 위해 사람 수준의 응답 시간을 갖춘 매우 빠른 처리가 필요했습니다. LiveKit은 오디오 외에도 영상과 텍스트 등 여러 AI 모드를 조율하므로 서버와 클라이언트 사이에서 데이터를 최대한 빠르게 전송해야 합니다.
- 자연스러운 음성: LiveKit 에이전트는 전화 통화 같은 상호작용에서 사람을 대신하는 경우가 많으므로 음성이 매우 생생해야 합니다.
- 다국어: LiveKit 고객은 전 세계에 분포하므로 에이전트가 여러 언어에서 원활하게 작동해야 했습니다.
- 확장성: 911 긴급 신고 접수용 음성 에이전트처럼 중요한 활용 사례에서는 많은 동시 사용자를 지원하면서 피크 사용량에서도 가동률과 성능을 보장해야 했습니다.
- 컨텍스트 창의 한계: 장시간 실행되는 LiveKit 에이전트는 오디오, 영상, 텍스트의 멀티모달 스트림을 실시간으로 처리하면서 일관된 대화와 맥락을 유지해야 합니다. 트랜스포머 모델은 맥락을 계속 다시 불러와야 하고 시퀀스 길이에 엄격한 한계가 있어 지속적인 상호작용이 불가능했습니다.
솔루션
LiveKit은 근본적으로 새로운 AI 아키텍처인 상태공간모델로 구축된 Sonic이 차세대 AI 에이전트에 대한 비전과 정확히 맞아 Cartesia와의 협력을 선택했습니다.
- 고급 아키텍처: SSM은 Sonic이 상태를 유지하고 스트리밍 데이터를 기본적으로 처리하게 하여, 에이전트가 성능 저하 없이 몇 시간 또는 며칠의 상호작용에 걸쳐 맥락을 유지하도록 합니다.
- 초저지연: Cartesia는 첫 오디오 도착 시간이 100ms 미만인 시장 최저 지연시간 모델을 제공하여 멀티모달 LiveKit 에이전트가 일관되게 뛰어난 종단 간 성능을 달성하도록 했습니다.
- 자연스러운 음성 생성: Cartesia 모델은 맥락을 이해하는 사람 같은 음성을 생성하며 긴 대화에서도 일관성을 유지합니다.
- 다국어: Cartesia는 영어 모델과 동일한 업계 최고 수준의 지연시간, 품질, 정확성으로 14개 언어를 제공합니다.
- 기업 수준의 확장성: 견고한 인프라가 대량의 업무 필수 애플리케이션을 지원합니다.
성과
Cartesia는 현재 LiveKit Agents의 통합으로 제공됩니다. 이 협력을 통해 LiveKit은 다음과 같은 다양하고 까다로운 용도에 에이전트를 배포할 수 있게 되었습니다.
- 긴급 서비스: 완벽한 신뢰성과 자연스러운 상호작용이 필요한 911 긴급 신고 접수용 AI 음성 에이전트
- 게임: 몰입형 게임 경험을 제공하는 AI 기반 NPC
- 자율주행 차량: 실시간 원격 측정 데이터 처리와 의사 결정
- 기업 솔루션: 기존 AI 시스템에 음성과 이미지 기능을 원활하게 통합
개발자를 위한 안내
LiveKit과 Cartesia를 함께 사용하면 LiveKit 글로벌 WebRTC 네트워크의 품질과 Cartesia Sonic 텍스트 음성 변환 모델의 속도를 모두 얻을 수 있습니다.
개발자는 개발 중에는 자신의 노트북에서 Agents 워커를 실행하고, 실제 서비스에서는 자체 서버에 배포할 수 있습니다. 에이전트는 Cartesia API에 직접 연결하고 LiveKit 네트워크로 사용자에게 오디오를 스트리밍합니다.
그 결과 개발자는 음성 에이전트에 최신 텍스트 음성 변환 모델을 사용하면서도 자신이 관리하는 코드에서 RAG나 데이터 조회 같은 비즈니스 로직을 제어할 수 있습니다. 가장 간단한 개념 증명용 음성 에이전트는 공백과 주석을 제외하면 코드 50줄에 불과합니다.
load_dotenv(dotenv_path=".env.local")
logger = logging.getLogger("voice-agent")
def prewarm(proc: JobProcess):
proc.userdata["vad"] = silero.VAD.load()
async def entrypoint(ctx: JobContext):
initial_chat_context = llm.ChatContext().append(
role="system",
text=(
"You are a voice assistant created by LiveKit. Your interface with users will be voice. "
"You should use short and concise responses, and avoid usage of unpronounceable punctuation. "
),
)
logger.info(f"connecting to room {ctx.room.name}")
await ctx.connect(auto_subscribe=AutoSubscribe.AUDIO_ONLY)
# Wait for the first participant to connect
participant = await ctx.wait_for_participant()
logger.info(f"starting voice assistant for participant {participant.identity}")
# Set up the Agent
agent = VoicePipelineAgent(
vad=ctx.proc.userdata["vad"],
stt=deepgram.STT(),
llm=openai.LLM(model="gpt-4o-mini"),
tts=cartesia.TTS(
model="sonic",
voice="794f9389-aac1-45b6-b726-9d9369183238",
),
chat_ctx=initial_chat_context,
)
agent.start(ctx.room, participant)
# Once connected, we start by hardcoding a greeting
await agent.say(f"Hey {participant.identity}! How can I help you today?", allow_interruptions=True)
if __name__ == "__main__":
cli.run_app(
WorkerOptions(
entrypoint_fnc=entrypoint,
prewarm_fnc=prewarm,
),
)
인터넷 애플리케이션은 미래에 우리가 컴퓨터를 사용할 방식을 위해 만들어지지 않았습니다. 그 컴퓨터는 우리처럼 보고 듣고 말할 것입니다. 우리는 서로 대하듯 컴퓨터와 상호작용할 것입니다. 이 새로운 패러다임의 애플리케이션을 쉽게 만들 수 있도록 LiveKit Agents 프레임워크를 설계했습니다. SSM 아키텍처의 선구자인 Cartesia는 실시간 멀티모달 AI 모델이 컴퓨팅의 중심이 될 것이라는 믿음을 공유하여 Agents 출시의 이상적인 파트너가 되었습니다.
LiveKit의 Russ와 David는 멀티모달 AI가 진정한 잠재력을 발휘하려면 새로운 아키텍처가 필요하다는 Cartesia의 비전을 공유합니다. LiveKit을 통해 고객은 단 몇 시간 만에 전화를 받는 정교한 에이전트를 만들 수 있습니다. 이전보다 더 복잡한 추론 작업을 수행하도록 Agents를 구동할 기회를 얻어 감사하게 생각합니다.
LiveKit과 Cartesia를 사용하면 자연스러운 음성의 신뢰할 수 있는 대화형 에이전트를 대규모로 효과적으로 배포하여 환자 접근성과 경험을 개선하고 고객을 24시간 지원할 수 있습니다.