원문 캡처 · github.com
원문 캡처 · github.com

AI Phone 저장소는 컴퓨터에서 실행하는 AI 전화 에이전트다. macOS와 Apple Silicon을 지원하며, 전화 수신·발신이나 둘 다를 설정할 수 있다.

설치에는 Git, Homebrew, uv가 필요하다. 기본 4B 모델은 메모리 16GB, 9B 모델은 32GB를 권장하며, 8GB 시스템에서는 더 작은 2B 모델을 선택할 수 있다. 모델 다운로드에 수 GB의 저장 공간이 필요하고, 설정 과정에서 사용 가능한 디스크 공간을 확인한다. 인텔 맥, 리눅스, 윈도우는 현재 지원하지 않는다.

bash
git clone https://github.com/oxnw/ai-phone.git
cd ai-phone
./scripts/install.sh
uv run ai-phone setup

설정에서 수신·발신 방향을 고른 뒤 모델, 전화 회선, 음성을 구성한다. 감지된 메모리에 맞는 로컬 모델을 추천하고 필요한 모델 파일을 내려받는다. 일반 텍스트 프롬프트를 쓰려면 uv run ai-phone setup --plain을 실행한다. 현재 음성 처리 백엔드는 대화에 클라우드 모델을 사용하더라도 Apple Silicon의 MLX를 이용한다.

설정 후 uv run ai-phone run으로 데몬을 시작해야 전화를 받을 수 있다. 설정 과정에서 백그라운드 서비스를 설치하지는 않는다. 발신만 할 때는 필요할 때 실행하고 통화 뒤 Ctrl-C로 종료할 수 있다. 다음 명령은 지정한 번호로 전화를 걸어 지시에 따라 통화하며, 통화가 끝나면 대화 기록을 반환한다.

bash
uv run ai-phone call +15555550100 --json \\
 --prompt "Ask whether they have a table for two at eight tonight."

예시 번호는 실제로 걸려는 번호로 바꿔야 한다. 발신 통화는 AI임을 알리는 안내로 시작하고, 수신 통화에는 설정에서 정한 인사말과 지시를 사용한다. 현재 지원 언어는 영어이며 한 번에 한 통화만 처리한다. 무료로 로컬 테스트를 하려면 수신 통화를 켜고 설정에서 A SIP address를 선택한 뒤 이름을 agent로 유지한다.

bash
pjsua --local-port 5070 sip:agent@127.0.0.1

음성, 모델, 통화 방향, 발신자 ID를 바꾸려면 설정을 다시 실행한 뒤 데몬을 재시작한다. 셸 접근 권한이 있는 에이전트는 릴레이 모드에서 통화의 각 발화를 제어할 수 있다.

bash
uv run ai-phone call +15555550100 --relay --json
uv run ai-phone say "Hi, I'd like to book a table for two." --json
uv run ai-phone listen --json
uv run ai-phone say "Eight o'clock, please." --json
uv run ai-phone hangup --say "Thank you. Goodbye." --json

활성 통화가 없을 때 listen --json은 수신 통화를 기다렸다가 릴레이 모드로 처리한다. --json을 붙인 각 명령은 표준 출력으로 JSON 객체 하나를 반환하며, call의 진행 이벤트는 표준 오류로 보낸다. 릴레이 응답이 없으면 기본 25초 뒤 시간 초과된다. 자세한 내용은 명령어 참조에서 확인할 수 있다.

음성 인식에는 MLX로 로컬 실행하는 Parakeet을 쓴다. 언어 모델은 로컬 MLX 모델, Claude Code 또는 Codex 구독, OpenAI 호환 엔드포인트 중에서 선택할 수 있다. 음성 합성에는 영어 음성이 포함된 Phonon이나 미국식·영국식 음성과 속도 조절을 지원하는 Kokoro를 쓸 수 있다. 음성 인식과 합성은 로컬에서 처리하지만, 원격 언어 모델에는 통화의 텍스트와 지시, 대화 기록이 전달된다. 외부 에이전트의 클라우드 제공자도 에이전트에 전달된 대화 기록을 볼 수 있다. 전화 음성은 SIP/RTP로 전송되며 통신 요금과 구독 한도가 적용된다.

저장소에는 사용 안내서, 예시 설정, 아키텍처 설명, NAT 점검표가 있다. 설치와 설정은 새로 복제한 저장소에서 확인했고, 로컬 통화와 끼어들기 테스트도 진행했다. 실제 통신사 연결과 에이전트 종단 간 승인 테스트는 아직 진행되지 않았다. 최신 로컬 테스트는 메모리 압박이 큰 조건에서 첫 음성이 들리기까지 중앙값 1.50초를 기록해 목표인 1초를 넘겼다. 측정 조건과 이전 결과를 참고할 수 있다.

라이선스는 AGPL-3.0-or-later다. 함께 제공되는 PJSIP 인터페이스 파일에는 GPLv2-or-later가 적용되며, 자세한 내용은 라이선스 안내에 있다.