본문으로 건너뛰기
웹·모바일 앱

웹·모바일 앱을 위한 음성 에이전트 API

앱에 음성 에이전트를 넣으려면 보통 필요도 없는 전화번호를 사거나, API 키가 기기에 남지 않도록 관리하면서 음성 인식, 모델, 음성을 직접 조합해야 합니다. 전화 회선이 아니라 자사 앱 안에 음성 에이전트를 두고 싶은 제품 팀을 위한 것입니다. 전화를 받는 것과 같은 에이전트, 엔진, 지식 베이스, 예약 기능을 브라우저 탭이나 모바일 앱에서 wss://api.voice.wixzel.com/v1/realtime으로 사용할 수 있습니다. 연결할 것도, 구매할 번호도 없습니다. 서버가 일회용 세션을 발급하므로 API 키는 클라이언트에 전달되지 않고, 세션은 같은 엔진의 통화와 똑같이 선불 잔액을 초 단위로 사용합니다.

최종 업데이트:

큰 초록색 마스코트가 있는 휴대폰 앱 화면. 위에는 말풍선 속 인사말이, 아래에는 대화하기 버튼이 있습니다.

Wixzel Voice로 웹·모바일 앱용 음성 에이전트를 어떻게 만드나요?

  1. 01
    POST /v1/agents

    에이전트를 만듭니다. 프롬프트, 첫 인사, 지식 베이스, 음성 엔진을 지정합니다. 전화 통화가 연결되는 에이전트와 같은 에이전트입니다.

  2. 02
    POST /v1/realtime/sessions

    서버에서 API 키로 호출합니다. 에이전트를 지정하고, 필요하면 허용할 브라우저 origin과 자체 메타데이터도 지정하면, 그 에이전트에 대해 1분 동안 한 번만 쓸 수 있는 client_secret을 돌려받습니다.

  3. 03
    wss://api.voice.wixzel.com/v1/realtime

    클라이언트가 이 secret으로 소켓을 열고 오디오를 스트리밍합니다. 브라우저에서는 wixzel-voice/realtime의 RealtimeSession이 마이크, 재생, 끼어들기를 처리합니다. Flutter에서는 wixzel_voice 패키지의 RealtimeConnection이 프로토콜을 처리하고, 마이크와 스피커는 앱이 제공합니다.

  4. 04
    GET /v1/calls/{id}

    모든 세션은 channel이 web인 통화 기록이 됩니다. 대화 기록, 길이, 비용, 지정한 메타데이터가 담기며, 세션이 끝나면 같은 callCompleted 웹훅이 전송됩니다.

  5. 05
    wixzel-voice/mascot, wixzel_voice_flutter

    선택 사항입니다. 에이전트가 말하는 동안 에이전트의 마스코트, 즉 움직이는 얼굴을 보여 줄 수 있습니다. 웹 페이지에서는 wixzel-voice/mascot의 mountMascot이 마스코트를 그리고, face.connect(session)이 입 모양을 맞춘 채 통화를 실행합니다. Flutter에서는 wixzel_voice_flutter 패키지의 AgentMascotView가 마스코트를 그리고, MascotRealtimeLink가 RealtimeConnection과 동작을 맞춥니다.

웹·모바일 앱 속 음성 에이전트에는 어떤 음성 엔진이 맞나요?

Wixzel Voice의 gemini-live 엔진을 쓰세요. 연결된 1분당 $0.0491입니다. 하나의 실시간 모델이 듣기, 생각하기, 말하기를 모두 처리하므로 왕복 지연은 Gemini 자체의 성능 그대로이며, 분당 가장 저렴한 엔진입니다. 인도 언어용 sarvam 파이프라인도 소켓으로 실행되고, 특정 ElevenLabs 음성이 필요할 때 쓰는 classic도 마찬가지입니다.

Wixzel Voice에서 웹·모바일 앱 속 음성 에이전트의 비용은 얼마인가요?

gemini-live 엔진에서 4분 세션에 드는 Wixzel Voice 엔진 시간 비용으로, 일반적인 발화 속도를 기준으로 하며 실제 사용량만큼 초 단위로 과금됩니다. 전화 회선이 없으므로 전화 통신 비용도 없으며, 세션이 짧으면 그만큼 비용이 줄어듭니다.

월간 세션 수연결된 시간(분)월간 엔진 비용
5002,000$98.20
2,50010,000$491
10,00040,000$1,964

선불입니다. $5부터 크레딧을 충전하면 세션이 그 크레딧을 씁니다. 내 사용량으로 견적 내기.

Wixzel Voice에서 웹·모바일 앱용 음성 에이전트를 만드는 방법은 어떤 가이드에 나와 있나요?

자주 묻는 질문

Wixzel Voice로 만든 음성 에이전트를 웹사이트나 모바일 앱에 넣을 수 있나요?

네. 서버가 API 키로 POST /v1/realtime/sessions를 호출해 client_secret을 받고, 페이지나 앱이 그 값으로 wss://api.voice.wixzel.com/v1/realtime을 열어 양방향으로 오디오를 스트리밍합니다. 에이전트, 엔진, 프롬프트, 지식 베이스는 전화 통화에 쓰이는 것과 같습니다. SIP 트렁크와 전화번호는 필요하지 않습니다.

브라우저나 앱에 API 키가 필요한가요?

아니요. 오히려 절대 있어서는 안 됩니다. 클라이언트는 서버가 발급한 client_secret만 가지며, 이 값은 한 에이전트에 대해 1분 동안 한 번만 쓸 수 있습니다. 브라우저용이라면 발급할 때 allowed_origins를 지정하십시오. 다른 사이트에서는 소켓 연결이 거부되므로, 페이지에서 복사한 secret은 다른 곳에서 쓸 수 없습니다.

실시간 API를 지원하는 SDK는 무엇인가요?

TypeScript SDK(npm의 wixzel-voice)에는 브라우저 클라이언트인 RealtimeSession이 들어 있어, 마이크 권한을 요청하고 오디오를 인코딩·재생하며 사용자가 에이전트의 말을 끊는 상황을 처리합니다. Dart SDK(pub.dev의 wixzel_voice)에는 Flutter와 Dart용 RealtimeConnection이 들어 있어 프로토콜을 처리하며, 마이크와 스피커는 앱이 제공합니다. 그 밖의 환경에서는 프로토콜을 직접 사용합니다. WebSocket 위의 JSON 프레임이며, 오디오는 8 kHz의 base64 G.711 µ-law입니다.

웹·앱 세션의 음질은 어떤가요?

전화 품질입니다. 세션이 통화와 같은 미디어 경로를 거치기 때문에 오디오는 양방향 모두 전화 회선과 같은 8 kHz G.711 µ-law입니다. 음성 대화에는 충분하지만, 브라우저 오디오가 광대역인 플랫폼과 비교하면 분명한 한계입니다. 나중에 알게 되기보다 여기서 미리 밝혀 둡니다.

웹·앱 세션은 어떻게 과금되나요?

같은 엔진의 전화 통화와 똑같습니다. 같은 분당 가격으로, 같은 선불 잔액에서, 초 단위로 과금되며 GET /v1/usage/events에 항목별로 기록됩니다. 전화 회선이 없으므로 통신 비용은 없습니다. 세션은 계정의 동시 통화 한도(기본 5건)에 포함됩니다. 세션 발급은 무료이므로, 사용자가 페이지를 열고 마이크 권한을 거부해도 비용이 들지 않습니다.

세션은 얼마나 오래 유지될 수 있나요?

기본값은 10분입니다. 세션을 발급할 때 max_duration_seconds를 10초에서 1시간 사이로 지정하면, 그 시점에 서버가 세션을 종료합니다. 에이전트나 클라이언트도 세션을 끝낼 수 있습니다.

Flutter에서도 작동하나요?

네. Dart SDK의 RealtimeConnection이 소켓과 프로토콜을 처리합니다. 앱은 아무 녹음 플러그인으로 8 kHz 16비트 PCM을 녹음하고, SDK가 제공하는 헬퍼로 µ-law로 변환한 뒤, 아무 PCM 플레이어로 에이전트의 오디오를 재생합니다. 에코 제거를 켜십시오. 그렇지 않으면 에이전트가 스피커로 나오는 자기 목소리를 듣게 됩니다.

에이전트가 말하는 동안 앱에 얼굴을 보여 줄 수 있나요?

네. 모든 Wixzel Voice 에이전트에는 마스코트가 있습니다. 에이전트의 mascot 필드에 있는 작은 스펙으로 그려지는 움직이는 얼굴입니다. 웹 페이지에서는 wixzel-voice/mascot의 mountMascot(npm의 wixzel-voice 0.10.0)이 캔버스에 마스코트를 그리고, face.connect(session)이 실시간 통화를 시작해 에이전트의 오디오에 맞춰 입을 움직입니다. Flutter에서는 pub.dev의 wixzel_voice_flutter 패키지에 있는 AgentMascotView가 마스코트를 그리고, MascotRealtimeLink가 RealtimeConnection에 맞춰 듣고, 생각하고, 말하는 모습을 보여 줍니다. Flutter에서는 둘 다 오디오를 녹음하거나 재생해 주지 않으며, 웹 헬퍼는 둘 다 처리합니다.

코드가 전혀 필요 없는 방법도 있나요?

웹사이트라면 있습니다. 마스코트 위젯입니다. 에이전트에서 위젯을 켜고, embed_origins에 사이트를 등록하고, script 태그 하나를 붙여 넣으면 방문자가 페이지 구석에서 에이전트에게 전화를 걸 수 있습니다. 내부적으로 같은 실시간 API를 사용하며 과금 방식도 같습니다. 웹사이트용 AI 음성 비서 페이지를 참고하십시오.

에이전시와 개발자는 Wixzel Voice로 또 무엇을 만드나요?

예약 접수

전화를 받아 예약 가능한 시간을 확인하고 예약을 잡는 에이전트를 자체 SIP 트렁크 위에 만들 수 있습니다. 예약 내용은 API로 기록됩니다.

발신 통화 리드 선별

리드를 업로드하고 캠페인을 시작하면, 에이전트가 자체 SIP 트렁크로 리드마다 전화를 걸어 선별 질문을 합니다. 모든 통화는 상태와 대화 기록이 담긴 기록으로 남고 해당 리드와 연결됩니다.

고객지원 수신 회선

업로드한 지식 베이스를 참고해 자주 묻는 질문에 답하고 모든 통화의 대화 기록을 남기는 에이전트로 고객지원 번호를 응대합니다.

인도 언어

인도 언어를 위해 만들어진 모델로 인도 언어 전화 에이전트를 운영합니다. sarvam 엔진이 음성 인식, 언어 모델, 음성 합성을 처음부터 끝까지 담당합니다.

웹사이트 음성 비서

script 태그 하나로 웹사이트에 말하는 AI 비서를 넣을 수 있습니다. 사이트 내용으로 만든 에이전트, 방문자가 브라우저에서 전화를 거는 움직이는 마스코트, 발신자 정보, 발신 허용 설정, 일일 한도를 제공합니다.

AI 에이전트의 전화 통화

Claude Code, Codex, Cursor 등 MCP 클라이언트를 계정에 연결하면, AI 에이전트가 통신사를 연결하고, 음성 에이전트를 만들고, 전화를 걸고, 캠페인을 실행하고, 대화 기록을 읽을 수 있습니다. 비용이 드는 도구는 모두 실행 전에 확인을 요청합니다.

저비용 AI 통화

분당 몇 센트로 AI 전화 통화를 운영할 수 있습니다. 선불 크레딧에서 초 단위로 과금하고, 구독이나 최소 금액이 없으며, 자체 SIP 트렁크를 통신 요금 마진 없이 사용하고, 모든 요금이 항목별로 기록됩니다.

말하는 AI 아바타

음성 에이전트에 얼굴을 줍니다. 에이전트의 말에 맞춰 입을 움직이는 애니메이션 아바타를 웹사이트, 공유 링크, 웹 앱, Flutter 앱에서 쓸 수 있으며, 아바타 요금은 없습니다.

에이전시용

고객마다 고객 자신의 계정과 통신사로, 고객의 언어로 전화 에이전트를 만들고, 초 단위로 과금되는 비용 위에 월 관리비를 청구할 수 있습니다.

Wixzel Voice의 모든 사실 정보

운영자, 가격, 한도, 환불, 데이터 위치를 한 페이지에 정리했습니다.

첫 음성 에이전트를 만드세요