에이전트와 자동화

최종 업데이트

맥에서 AI가 전화를 받게 하기: ai-phone 설치와 4B·9B 모델 선택

메모리가 모델을 정해요. 16GB면 4B, 32GB면 9B를 권해요.

Apple Silicon 맥에서 음성인식·합성은 로컬 MLX1로 돌리고, 통화 내용만 모델에 넘기는 구조예요. setup이 감지한 메모리로 모델을 고르고, 실제 통화 지연은 1.50초 중앙값이었어요.

실행 조건과 핵심 내용
  • Apple Silicon 맥에서만 동작하고 음성인식·합성은 MLX로 로컬에서 처리해요.
  • setup이 메모리를 보고 모델을 추천해요. 8GB는 2B, 16GB는 4B, 32GB는 9B예요.
  • 최근 로컬 통화에서 첫 소리까지 중앙값 1.50초로, 1초 목표에는 못 미쳤어요.

맥이 전화를 받아 대화를 이어가요

ai-phone는 맥에서 SIP 전화를 받아 AI가 통화를 이어가는 프로그램이에요. 상대의 말을 음성인식으로 글자로 바꾸고, 로컬 모델이 답할 내용을 정하고, 음성합성이 그 답을 소리로 읽어요. 한 통화에서 이 세 단계가 반복돼요.

음성인식은 Parakeet, 음성합성은 Phonon이나 Kokoro를 MLX로 돌려요. 대화 내용을 만드는 모델만 로컬 MLX 모델, Claude Code·Codex 구독, OpenAI 호환 엔드포인트 중에서 고를 수 있어요. 원격 모델을 고르면 통화의 글자와 지시문이 그쪽으로 전송돼요.

작은 컴퓨터에서 브라우저, 달력, 대화 창으로 선이 이어져 있다
통화 한 건에서 음성인식·모델·합성이 차례로 이어져요.

준비물은 맥과 SIP 회선이에요

Apple Silicon 맥, Git, Homebrew, uv가 필요해요. 설치 스크립트가 파이썬 패키지와 SIP 라이브러리를 함께 준비해요. 인텔 맥과 리눅스, 윈도우는 지원하지 않아요.

전화를 받으려면 SIP 주소나 SIP 트렁크, Telnyx·Twilio 계정이 있어야 해요. 상대가 일반 휴대폰이어도 통화는 SIP로 연결되고 통화료는 회선 사업자 기준으로 붙어요. 걸기만 할 때는 필요할 때 실행하고 끝나면 종료하면 돼요.

설치하고 모델을 고르는 순서

저장소를 받고 설치 스크립트를 실행한 뒤 setup을 시작해요. setup이 전화를 받을지 걸지, 어떤 회선과 목소리를 쓸지 물어보고, 감지한 메모리에 맞는 모델을 추천해 가중치를 내려받아요. 모델 파일 때문에 수GB의 저장공간이 필요해요.

기본값은 4B 모델이고 9B를 고르면 메모리를 더 써요. 8GB 맥은 2B 모델을 제안받아요. setup을 다시 실행하면 회선·목소리·모델을 바꿀 수 있고, 바꾼 뒤에는 데몬을 재시작해야 반영돼요.

메모리 크기에 따른 권장 모델
메모리권장 모델쓰임
8GB2B짧은 통화, 메모리 여유가 없을 때
16GB4B(기본)기본 구성
32GB9B긴 대화, 더 나은 문장
install
git clone https://github.com/oxnw/ai-phone.git
cd ai-phone
./scripts/install.sh
uv run ai-phone setup
uv run ai-phone run
setup에서 회선과 모델을 고르고, run으로 수신 대기를 시작해요.

전화를 걸고 받는 방법

걸기는 프롬프트2 한 줄로 시작해요. 통화가 끝나면 대화 기록을 돌려받아요. 발신 통화는 AI가 말한다는 안내로 시작해요.

에이전트가 한 턴씩 직접 조종하려면 relay 모드를 써요. call로 연결하고 say와 listen을 번갈아 호출하면 모델 없이도 통화를 진행할 수 있어요. 응답이 없으면 25초 뒤에 턴이 끝나요.

call
uv run ai-phone call +15555550100 --json \
  --prompt "Ask whether they have a table for two at eight tonight."
번호는 국가번호를 포함해 넣고, 프롬프트에 통화 목적을 적어요.
노트북 앞 작업자 주변에 문서, 표, 폴더, 이미지, 설정 창과 작은 로봇이 연결돼 있다
setup이 감지한 메모리로 모델을 고르므로, 맥을 고를 때 메모리를 먼저 봐요.

첫 소리까지 1.50초, 1초 목표에는 못 미쳤어요

이 프로그램의 최근 로컬 통화 측정에서 첫 가청 응답까지 중앙값이 1.50초였어요. 메모리 압박이 큰 조건이었고, 1초 목표에는 미달했어요. 상대가 말을 마친 뒤 모델이 답을 만들고 합성해 재생하기까지 걸리는 시간이에요.

통화 지연은 모델 크기와 메모리 여유에 직접 영향을 받아요. 32GB 맥에서 9B를 쓰면 문장은 좋아지지만 첫 소리는 늦어질 수 있어요. 짧은 예약·확인 통화라면 4B로 시작해 실제 통화에서 지연을 재는 편이 안전해요.

영어 통화만, 한 번에 한 건

현재 지원 범위는 영어와 한 번에 한 통화예요. 한국어 통화를 받으려면 음성인식·합성·모델을 모두 한국어로 바꿀 수 있어야 하는데, 이 프로그램은 그 구성을 기본으로 제공하지 않아요.

코드는 AGPL-3.0-or-later이고 함께 쓰는 PJSIP 인터페이스는 GPLv2-or-later예요. 회선 사업자 요금과 구독 한도는 별도로 붙어요. 상시 수신을 하려면 맥을 켜 두고 데몬을 유지해야 해요.

사용자가 데스크톱의 진행 표시와 문서 처리 창을 바라보고 있다
회선과 모델을 바꾼 뒤에는 데몬을 다시 시작해야 적용돼요.

용어 각주

  1. MLX — Apple이 개발하는 머신러닝 프레임워크로, Apple Silicon의 CPU와 GPU가 공유하는 메모리를 활용해 모델을 실행합니다.

    본문으로 돌아가기
  2. 프롬프트 — 모델에 보내는 입력문입니다. 생성 모델에서는 만들 결과를 설명하는 문장이 되어 출력의 구성과 내용을 크게 좌우합니다.

    본문으로 돌아가기

자주 묻는 질문

이 글에서 가장 먼저 확인할 것은 무엇인가요?
Apple Silicon 맥에서 음성인식·합성은 로컬 MLX로 돌리고, 통화 내용만 모델에 넘기는 구조예요. setup이 감지한 메모리로 모델을 고르고, 실제 통화 지연은 1.50초 중앙값이었어요.
필요한 메모리는 어느 정도인가요?
저장소를 받고 설치 스크립트를 실행한 뒤 setup을 시작해요. setup이 전화를 받을지 걸지, 어떤 회선과 목소리를 쓸지 물어보고, 감지한 메모리에 맞는 모델을 추천해 가중치를 내려받아요. 모델 파일 때문에 수GB의 저장공간이 필요해요.