음성 에이전트 — Pipecat과 LiveKit

음성 에이전트(voice agent)는 2026년에 프로덕션의 한 축으로 자리 잡은 범주입니다. Pipecat은 Python 기반 프레임 파이프라인(frame-based pipeline)을 제공합니다. 흐름은 VAD → STT → LLM → TTS → 전송(transport)입니다. LiveKit Agents는 WebRTC를 통해 AI 모델과 사용자를 연결합니다. 프리미엄 스택의 프로덕션 지연 시간 목표는 전체 구간(end-to-end) 기준 450-600ms 수준입니다.

유형: Learn 언어: Python (stdlib) 선수 학습: Phase 14 · 01 (Agent Loop), Phase 14 · 12 (Workflow Patterns) 소요 시간: 약 60분

학습 목표

  • Pipecat의 프레임 기반 파이프라인을 설명합니다. DOWNSTREAM은 소스(source)에서 싱크(sink)로 흐르고, UPSTREAM은 제어(control)를 다룹니다.
  • 표준 음성 파이프라인 단계와 Pipecat이 지원하는 전송 방식을 말할 수 있습니다.
  • LiveKit Agents의 두 음성 에이전트 클래스인 MultimodalAgentVoicePipelineAgent를 설명하고, 각각이 언제 맞는지 구분합니다.
  • 2026년 프로덕션 지연 시간 기대치를 요약하고, 그것이 아키텍처 선택을 어떻게 밀어붙이는지 설명합니다.

문제

음성 에이전트는 텍스트 루프에 TTS를 덧붙인 것이 아닙니다. 지연 시간 예산(latency budget)은 가혹합니다. 목표는 약 600ms이고, 부분 오디오(partial audio)가 기본이며, 턴 감지(turn detection) 자체가 하나의 모델입니다. 전송 방식도 전화망 SIP(telephony SIP)부터 WebRTC까지 다양합니다. 결국 프레임 기반 파이프라인(Pipecat)을 직접 만들거나, 플랫폼(LiveKit)에 기대야 합니다.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.Pipecat에서 표준 음성 파이프라인의 단계 순서는 무엇인가요?

2.LiveKit의 MultimodalAgent와 VoicePipelineAgent의 차이는 무엇인가요?

0/2 답변 완료

개념

Pipecat (pipecat-ai/pipecat)

  • Python 프레임 기반 파이프라인 프레임워크입니다.
  • FrameFrameProcessor 체인으로 구성됩니다.
  • 흐름 방향은 두 가지입니다.
    • DOWNSTREAM — 소스 → 싱크입니다. 오디오가 들어오고, TTS가 나갑니다.
    • UPSTREAM — 피드백과 제어입니다. 취소(cancellation), 지표(metrics), 말 끼어들기(barge-in)를 다룹니다.
  • PipelineTask는 이벤트(on_pipeline_started, on_pipeline_finished, on_idle_timeout)와 지표/추적/RTVI용 관찰자(observer)를 통해 생명주기(lifecycle)를 관리합니다.

전형적인 파이프라인은 다음과 같습니다.

VAD (Silero) → STT → LLM (컨텍스트가 user/assistant 역할을 번갈아 가짐) → TTS → transport

지원 전송 방식은 Daily, LiveKit, SmallWebRTCTransport, FastAPI WebSocket, WhatsApp입니다.

Pipecat Flows는 구조화된 대화(structured conversations), 즉 상태 머신(state machines)을 추가합니다. Pipecat Cloud는 관리형 런타임(managed runtime)입니다.

LiveKit Agents (livekit/agents)

  • WebRTC를 통해 AI 모델과 사용자를 연결합니다.
  • 핵심 개념은 Agent, AgentSession, entrypoint, AgentServer입니다.
  • 음성 에이전트 클래스는 두 가지입니다.
    • MultimodalAgent — OpenAI Realtime 또는 그에 준하는 모델을 통해 오디오를 직접 처리합니다.
    • VoicePipelineAgent — STT → LLM → TTS 캐스케이드(cascade)입니다. 텍스트 수준 제어(text-level control)를 제공합니다.
  • 트랜스포머 모델(transformer model)을 통한 의미 기반 턴 감지(semantic turn detection)를 제공합니다.
  • MCP 통합이 기본으로 제공됩니다.
  • SIP를 통한 전화망 연동을 지원합니다.
  • LiveKit Inference를 쓰면 API 키 없이 50개 이상의 모델을 사용할 수 있고, 플러그인을 통해 200개 이상의 모델을 더 쓸 수 있습니다.

상용 플랫폼

Vapi는 최적화된 프리미엄 스택에서 약 450-600ms를 목표로 하고, Retell은 180개 테스트 통화에서 전체 구간 약 600ms를 보고합니다. WebRTC 팀 없이 관리형 음성 스택을 원한다면 이런 플랫폼을 고릅니다.

이 패턴이 잘못되는 지점

  • 말 끼어들기 처리(barge-in handling)가 없는 경우. 사용자가 중간에 끼어들어도 에이전트가 계속 말합니다. Pipecat에서는 UPSTREAM 취소 프레임(cancel frames)이 필요하고, LiveKit에도 그에 해당하는 처리가 필요합니다.
  • STT 신뢰도(confidence)를 무시하는 경우. 신뢰도가 낮은 전사(transcript)를 마치 복음처럼 LLM에 넣습니다. 신뢰도 기준으로 게이트를 두거나 확인을 요청해야 합니다.
  • TTS가 문장 중간에서 끊기는 경우. 파이프라인이 발화 중간에 취소되면, TTS가 그 사실을 알아야 하거나 오디오를 잘라야 합니다.
  • 지연 시간 예산을 무시하는 경우. 모든 구성 요소가 50-200ms를 더합니다. 출시하기 전에 체인의 합계를 계산해야 합니다.

2026년의 일반적인 지연 시간

  • VAD: 20-60ms
  • STT 부분 결과: 100-250ms
  • LLM 첫 토큰: 150-400ms
  • TTS 첫 오디오: 100-200ms
  • 전송 왕복 시간(transport RTT): 30-80ms

전체 구간 450-600ms는 프리미엄 수준입니다. 800-1200ms는 흔합니다. 1500ms를 넘으면 고장 난 것처럼 느껴집니다.

만들어보기

code/main.py는 다음을 포함한 프레임 기반 장난감 파이프라인입니다.

  • Frame 유형입니다. audio, transcript, text, tts_audio, control이 있습니다.
  • process(frame)을 가진 Processor 인터페이스입니다.
  • 스크립트형 처리기로 구성된 5단계 파이프라인입니다. VAD → STT → LLM → TTS → transport입니다.
  • 말 끼어들기를 보여주기 위한 UPSTREAM 취소 프레임입니다.

실행합니다.

python3 code/main.py

추적 출력은 정상 흐름과, TTS를 발화 중간에 멈추는 말 끼어들기 취소를 보여줍니다.

사용해보기

  • Pipecat은 완전한 제어가 필요할 때 씁니다. 커스텀 처리기, Python 우선 구조, 교체 가능한 공급자(provider)를 사용할 수 있습니다.
  • LiveKit Agents는 WebRTC 우선 배포와 전화망 연동에 적합합니다.
  • Vapi / Retell은 WebRTC 팀 없이 호스팅 음성 에이전트를 쓰고 싶을 때 적합합니다.
  • OpenAI Realtime / Gemini Live는 오디오 입력/오디오 출력(direct audio-in/audio-out), 즉 MultimodalAgent 방식에 적합합니다.

산출물 만들기

outputs/skill-voice-pipeline.md는 VAD + STT + LLM + TTS + 전송, 그리고 말 끼어들기 처리를 포함한 Pipecat 형태의 음성 파이프라인을 스캐폴딩합니다.

연습문제

  1. 장난감 파이프라인에 지표 관찰자(metrics observer)를 추가하세요. 초당 단계별 프레임 수를 세어봅니다. 지연 시간은 어디에 쌓이나요?
  2. 신뢰도 게이트가 있는 STT(confidence-gated STT)를 구현하세요. 임계값보다 낮으면 "다시 말씀해 주시겠어요?"를 요청합니다.
  3. 의미 기반 턴 감지를 추가하세요. 단순 규칙으로, 전사 문장이 "?"로 끝나면 턴이 끝났다고 봅니다.
  4. Pipecat의 전송 문서를 읽어보세요. stdlib 전송을 SmallWebRTCTransport 설정으로 바꾸는 스텁(stub)을 작성합니다.
  5. 같은 질의에 대해 OpenAI Realtime과 STT+LLM+TTS 캐스케이드를 측정하세요. 텍스트 수준 제어는 어떤 지연 시간 비용을 갖나요?

핵심 용어

용어흔한 설명실제 의미
프레임(Frame)"이벤트(event)"파이프라인 안에서 이동하는 유형 있는 데이터 단위입니다. 오디오, 전사, 텍스트, 제어가 될 수 있습니다.
처리기(Processor)"파이프라인 단계"process(frame)을 가진 핸들러(handler)입니다.
DOWNSTREAM"앞으로 흐르는 흐름"소스에서 싱크로 가는 흐름입니다. 오디오가 들어오고 음성이 나갑니다.
UPSTREAM"피드백 흐름"취소, 지표, 말 끼어들기를 위한 제어 흐름입니다.
VAD"음성 활동 감지(Voice activity detection)"사용자가 말하고 있는지를 감지합니다.
의미 기반 턴 감지(Semantic turn detection)"스마트한 발화 종료 감지"사용자의 말이 끝났는지를 모델 기반으로 판단합니다.
MultimodalAgent"직접 오디오 에이전트"오디오가 들어가고 오디오가 나옵니다. 중간에 텍스트가 없습니다.
VoicePipelineAgent"캐스케이드 에이전트"STT + LLM + TTS 구조입니다. 텍스트 수준 제어가 가능합니다.

더 읽을거리

  • Pipecat docs — 프레임 기반 파이프라인, 처리기, 전송 방식
  • LiveKit Agents docs — WebRTC와 음성 기본 요소
  • Vapi — 관리형 음성 플랫폼
  • Retell AI — 관리형 음성과 지연 시간 벤치마크

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

voice-pipeline

Scaffold a Pipecat-shaped voice pipeline (VAD + STT + LLM + TTS + transport) with barge-in, confidence gating, and latency budget enforcement.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.음성 에이전트가 사용자가 끼어들려 해도 계속 말합니다. 파이프라인에서 무엇이 빠져 있나요?

2.2026년 프리미엄 음성 에이전트의 전체 구간(end-to-end) 지연 시간 목표는 450-600ms입니다. 1500ms 이상이면 어떻게 되나요?

3.음성 에이전트가 낮은 신뢰도(low-confidence)의 STT 전사(transcript)를 확인 없이 LLM에 직접 전달합니다. 이것은 어떤 문제를 만드나요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다