앨리스코퍼레이션

LLM 음성봇에 전화를 연결하는 방법: SIP 트렁크부터 음성 스트리밍까지

LLM은 전화망을 모릅니다. 전화를 붙이려면 통신사 회선, 음성 전달, 음성인식·합성, 대화 엔진 네 구간을 잇는 소프트웨어가 필요합니다. 구간마다 무엇이 오가는지 정리했습니다.

으로 만든 대화 엔진에 전화를 붙이려면 네 구간이 필요합니다. 통신사와 잇는 , 음성을 나르는 , 말을 글자로 바꾸고 글자를 말로 바꾸는 와 , 그리고 그 사이에서 모든 것을 잇는 소프트웨어입니다. LLM 자체는 글자만 읽고 쓰므로 이 네 구간 가운데 어느 것도 대신하지 않습니다. 구간마다 무엇이 오가고 어디서 막히는지 순서대로 적었습니다.

구간 1: 통신사와 잇는 SIP 트렁크

실제 전화번호로 걸고 받으려면 통신사 전화망에 연결된 회선이 있어야 합니다. 통신사가 기업용으로 제공하는 인터넷 전화 회선이 SIP 트렁크입니다. 전화를 걸고 받고 끊는 신호는 로, 통화 음성은 RTP로 오갑니다. 트렁크를 계약할 때 동시 통화 수, 발신번호 등록, 접속 방식을 정하고, 이 동시 통화 수가 곧 AI 전화가 한 번에 처리할 수 있는 통화 수의 상한입니다.

구간 2: 음성을 20ms씩 나르는 RTP

통화 음성은 전화 표준인 형식으로, 보통 20ms 분량씩 한 꾸러미가 되어 RTP로 흐릅니다. 1초에 50개입니다. 꾸러미는 늦게 오거나 순서가 바뀔 수 있어서, 받는 쪽은 짧게 모아 두었다가 고르게 재생합니다. 이 음성은 이라 녹음 파일과 조건이 다르고, 음성인식 엔진에 넣을 때 그 점을 알고 있어야 합니다.

구간 3: 음성인식과 음성합성

상대의 말은 짧게 잘라 실시간으로 음성인식에 넘깁니다. 통화가 끝난 뒤 한 번에 넘기는 방식으로는 대화가 되지 않습니다. 상대의 말이 끝났는지는 이 침묵 길이로 판단하고, 그 결과가 글자가 되어 대화 엔진으로 갑니다. 엔진이 답을 정하면 음성합성이 목소리로 바꿉니다. 만들어지는 대로 바로 내보내는 스트리밍 방식이면 첫 소리까지의 시간이 줄어듭니다.

구간 4: 대화 엔진이 받는 것과 주는 것

대화 엔진은 전화망을 몰라도 됩니다. 받는 것은 “상대가 받았다”, “상대가 이렇게 말했다”, “통화가 끝났다” 같은 알림이고, 주는 것은 “이 문장을 읽어 주고 다시 들어라”, “번호를 받아라”, “상담원에게 넘겨라”, “끊어라” 같은 지시입니다. 이 메시지를 주고받는 통로로는 연결을 열어 두고 양방향으로 흘리는 같은 방식이 흔히 쓰입니다. 엔진 쪽에서 할 일은 이 메시지를 받고 답하는 서버 하나입니다.

끼어들기와 버튼 입력은 어느 구간의 일인가

둘 다 전화 쪽, 즉 네 번째 소프트웨어의 일입니다. 는 AI가 말하는 도중 상대의 목소리가 감지되면 재생을 멈추고, 어디까지 읽었는지를 엔진에 알리는 동작입니다. 버튼 입력은 신호로 받습니다. 인터넷 전화에서는 버튼 소리를 음성과 별도의 신호로 보내는 규격(RFC 4733)을 쓰므로, 음성인식과 상관없이 정확히 받을 수 있습니다.

직접 만들지 게이트웨이를 쓸지 정할 때 볼 것

네 구간을 직접 만들면 통신사 접속, 음성 전달, 끝점 검출, 끼어들기를 모두 운영해야 합니다. 를 쓰면 엔진 쪽은 네 번째 구간의 메시지만 다룹니다. 어느 쪽이든 먼저 정할 것은 세 가지입니다. 엔진이 어떤 방식으로 글자를 받고 답하는지, 수신인지 발신인지, 동시에 몇 통을 처리할지. 이 셋을 문의에 적어 주시면 연동 규격을 안내합니다.

AI 보이스 게이트웨이, 이런 것도 되나요?

대상이 누구이고 어떤 업무인지 한두 줄이면 됩니다.

도입 문의하기

견적은 업무 내용을 확인한 뒤에 드립니다.