끼어들기 구현: 전화 AI가 말하다 멈추는 조건
끼어들기는 AI가 말하는 중 상대의 목소리가 감지되면 재생을 멈추고 듣는 동작입니다. 구현의 핵심은 멈추는 것보다 무엇을 사람 말로 볼지, 어디까지 읽었는지 엔진에 어떻게 알릴지에 있습니다.
는 AI가 말하는 도중 상대의 목소리가 감지되면 재생을 멈추고 듣기로 넘어가는 동작입니다. 멈추는 것 자체는 어렵지 않습니다. 어려운 것은 무엇을 사람 말로 볼지, 어디까지 읽었는지를 대화 엔진에 어떻게 알릴지, 어느 구간에서는 멈추지 말아야 하는지입니다. 이 셋을 순서대로 적었습니다.
멈추는 조건 세 가지
목소리 판단 소리가 들어온다고 다 사람 말은 아닙니다. 가 사람 말로 판단한 소리가 정한 길이 이상 이어질 때만 멈춥니다. 길이를 짧게 잡으면 기침과 배경 소음에 멈추고, 길게 잡으면 상대가 한참 말한 뒤에야 멈춥니다.
되돌아온 소리 제외 AI의 목소리가 상대 전화기의 스피커에서 마이크로 되돌아오면 시스템에는 소리가 들어옵니다. 이것을 사람 말로 보면 AI가 자기 목소리에 스스로 멈춥니다. 되돌아온 소리를 걸러내는 처리가 끼어들기의 전제입니다.
엔진의 허용 대화 엔진이 그 구간에 끼어들기를 허용했을 때만 멈춥니다. 허용 여부는 문장을 읽어 달라고 지시할 때 함께 보냅니다.
멈춘 뒤 엔진에 알려야 하는 것
재생을 멈추면 엔진은 상대가 어디까지 들었는지 알아야 다음 말을 정할 수 있습니다. 그래서 멈춘 시점에 읽은 위치를 엔진에 알립니다. 세 문장 가운데 두 번째 문장 중간이었다면 그렇게 알립니다. 엔진은 이 정보로 못 들은 부분을 다시 말할지, 상대의 말에 바로 답할지를 정합니다. 이 알림이 없으면 엔진은 상대가 전부 들었다고 보고 대화를 이어 가게 됩니다.
끼어들기를 꺼야 하는 구간
끝까지 들려줘야 하는 문장이 있습니다. 결제 금액과 동의 확인처럼 상대가 들었다는 사실 자체가 중요한 안내가 그렇습니다. 이런 구간은 엔진이 끼어들기를 끄고, 다 읽은 뒤에 듣기로 넘어갑니다. 상대가 그 사이에 말한 내용은 버리지 않고 다 읽은 뒤 처리하거나, 다시 말해 달라고 하는 흐름으로 설계합니다.
잘못 멈추는 경우와 대책
가장 흔한 오작동은 “네”, “아” 같은 맞장구에 멈추는 것입니다. 사람끼리는 맞장구가 끼어들기가 아닙니다. 짧은 소리는 무시하도록 길이를 두는 것이 첫 대책이고, 멈춘 뒤 상대의 말이 짧은 맞장구로 끝나면 읽던 문장을 이어 가는 것이 두 번째 대책입니다. 배경에 TV나 다른 사람 말소리가 있는 환경은 시험 녹음에 넣어 두어야 실제 운영에서 놀라지 않습니다.
시나리오에 적어 둘 표 한 장
문장마다 끼어들기 허용 여부를 적습니다. 문장, 허용 여부, 멈췄을 때 이어 갈지 다시 말할지. 세 칸이면 됩니다. 이 표가 있으면 엔진 쪽 구현과 시험이 같은 기준으로 진행됩니다. 문의에 쓰는 대화 엔진이 문장 단위로 지시를 보낼 수 있는지 적어 주시면 끼어들기 메시지 규격을 안내합니다.