← 블로그 목록
가이드2026-03-10

AI 자동 전화 시스템, 개발자가 직접 구축하는 법

AI 자동 전화 시스템, 개발자가 직접 구축하는 법

AI 자동 전화 시스템 아키텍처

한번은 직접 다 만들어봤는데, 솔직히 다시 하고 싶진 않습니다.

AI 자동 전화 시스템이 뭔가 복잡해 보이지만, 구조 자체는 단순합니다. 레이어 5개가 순서대로 연결되는 파이프라인입니다. 문제는 각 레이어를 실제로 구현할 때 터지는 이슈들입니다.

전체 아키텍처

┌─────────────────────────────────────────────────────┐
│                    전화 상대방                         │
└──────────────────────┬──────────────────────────────┘
                       │ PSTN/SIP
┌──────────────────────▼──────────────────────────────┐
│  [1] SIP Gateway                                     │
│  SIP/2.0 (RFC 3261) · SRTP 암호화 · DTMF 처리       │
│  070-XXXX-XXXX 번호 바인딩 · SBC 연동                │
└──────────────────────┬──────────────────────────────┘
                       │ 오디오 스트림 (RTP)
┌──────────────────────▼──────────────────────────────┐
│  [2] STT (Speech-to-Text)                            │
│  음성 → 텍스트 변환                                   │
│  ex) 한국어 특화 STT 엔진                              │
└──────────────────────┬──────────────────────────────┘
                       │ 텍스트
┌──────────────────────▼──────────────────────────────┐
│  [3] LLM (Language Model)                            │
│  대화 맥락 유지 · 응답 생성                            │
│  ex) gpt-4o                                          │
└──────────────────────┬──────────────────────────────┘
                       │ 응답 텍스트
┌──────────────────────▼──────────────────────────────┐
│  [4] TTS (Text-to-Speech)                            │
│  텍스트 → 음성 변환                                   │
│  ex) 한국어 TTS 엔진                                   │
└──────────────────────┬──────────────────────────────┘
                       │ 오디오 스트림 (RTP)
┌──────────────────────▼──────────────────────────────┐
│  [5] SIP Gateway (응답 전송)                          │
│  생성된 음성을 상대방에게 스트리밍                      │
└─────────────────────────────────────────────────────┘

한 사이클이 이겁니다: 상대방이 말하면 → SIP으로 오디오 수신 → STT로 텍스트 변환 → LLM이 응답 생성 → TTS로 음성 변환 → SIP으로 송신. 이 루프가 500ms 안에 돌아야 자연스러운 대화가 됩니다. 음성 AI 레이턴시 최적화에서 이 지연 시간을 줄이는 기법을 다룹니다.

레이어별 설명

[1] SIP Gateway — 제일 고통스러운 부분

SIP(Session Initiation Protocol, RFC 3261)은 인터넷 전화의 표준 프로토콜입니다. 한국에서 070 번호를 쓰려면 SIP 트렁크를 통신사에서 받아야 합니다. 한국 SIP API 연동 가이드에서 더 상세하게 다뤘습니다.

직접 구축하면 이런 걸 다 처리해야 합니다:

  • SBC(Session Border Controller) 연동: 통신사 SBC랑 SDP 네고시에이션. 코덱 호환, 미디어 포트 협상이 패킷 레벨에서 안 맞으면 통화 자체가 안 됩니다
  • NAT Traversal: 서버가 사설 IP 뒤에 있으면 SIP INVITE가 제대로 라우팅 안 됩니다. STUN/TURN 세팅 필수입니다
  • SRTP 암호화: 통화 내용 암호화. 보안을 위해 필수입니다
  • DTMF 지원: ARS 메뉴 선택 시 톤 신호 처리

보통 FreeSWITCHAsterisk를 설치해서 세팅하는데, 이것만 3~5일 잡아야 합니다. SIP 디버깅은 tcpdump 뜨면서 SDP 패킷 분석하는 거라 경험 없으면 더 오래 걸립니다.

[2] STT — 한국어가 문제입니다

영어는 Whisper로 충분한데 한국어는 다릅니다. 테스트해보면 Whisper 한국어 인식률이 기대 이하입니다. 특히 전화 음질(8kHz, narrow-band)에서는 더 떨어집니다.

한국어 전화 음성에 최적화된 STT 엔진을 사용하면 정확도가 확실히 높습니다. 실시간 스트리밍 STT를 지원하는 엔진이어야 전화 통화에 바로 붙일 수 있습니다.

[3] LLM — 레이턴시가 관건입니다

GPT-4o 기준으로, 응답 생성에 200~400ms 걸립니다. 스트리밍 응답으로 첫 토큰이 오는 즉시 TTS로 넘기면 체감 레이턴시를 줄일 수 있습니다. system prompt에 대화 시나리오를 잘 잡아주는 게 중요합니다.

[4] TTS — 자연스러움

한국어 음성 자연스러움 기준으로 최적의 TTS 엔진을 선택해야 합니다. 실시간 스트리밍 합성이 되어야 레이턴시가 안 쌓입니다.

[5] 다시 SIP — 응답 전송

TTS에서 나온 오디오를 RTP 패킷으로 포장해서 상대방한테 보냅니다. 코덱 매칭, 패킷 타이밍, 지터 버퍼 관리까지 신경 써야 합니다.

직접 구축 vs ClawOps 전화 인프라 API

구성요소직접 구축ClawOps
SIP 서버FreeSWITCH 설치 + SBC 연동 (3~5일)API 한 줄
070 번호통신사 계약 (1~2일)POST /v1/accounts/{accountId}/numbers
STT/TTS개별 연동 + 스트리밍 파이프라인 (2~3일)개발자가 직접 선택 (예시 SDK: OpenAI Realtime API 사용, 추천)
보안SRTP 직접 설정 + PIPA 검토기본 적용 (국내 서버 데이터 처리, SRTP 암호화)
전체 소요최소 1~2주10분

Python으로 하면 이렇습니다:

import requests

API_KEY = "your-api-key"
ACCOUNT_ID = "your-account-id"
BASE = f"https://api.claw-ops.com/v1/accounts/{ACCOUNT_ID}"
headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

# 070 번호 발급
number = requests.post(f"{BASE}/numbers", headers=headers,
    json={"webhookUrl": "https://your-server.com/voice"}).json()
print(f"발급된 번호: {number['number']}")

# 전화 발신
call = requests.post(f"{BASE}/calls", headers=headers,
    json={
        "to": "01012345678",
        "from": number["number"],
        "webhookUrl": "https://your-server.com/status"
    }).json()

SIP 레이어 전체가 API로 제공되어서 SDP 네고시에이션이나 SRTP 같은 건 신경 안 써도 됩니다. STT/TTS/LLM은 개발자가 직접 선택해서 연동합니다. 예시 SDK에서는 OpenAI Realtime API를 사용했고 이를 추천합니다. webhook으로 call.transcript, call.ended, call.recording.ready 이벤트 받으면 통화 후처리도 자동화할 수 있습니다.

발신 분당 116원이고, 수신은 무료입니다. Starter가 월 19,900원(60분, 전화회선 1개), Growth가 49,900원(300분, 전화회선 3개, 동시통화 3건), Business가 149,000원(1000분, 전화회선 10개, 동시통화 10건). 수신통화 무제한 무료. 약정 없습니다.

직접 구축해보면 왜 전화 인프라 API가 필요한지 바로 체감됩니다. SIP 서버 구축은 한번 해보는 건 추천하는데, 프로덕션에서 유지보수까지 감당하려면 솔직히 빡셉니다. ClawOps는 전화 인프라만 제공하고, STT/TTS/LLM은 개발자가 원하는 걸 선택해서 사용하는 구조입니다.

참고 링크

https://claw-ops.com

관련 글 더 보기

ClawOps AI 전화 API로 시작하기

070 번호 발급부터 AI 음성 통화까지, REST API 몇 줄이면 됩니다.