2 minute read

95% 정확도라는 함정

전화번호 딱 한 자리 틀렸을 뿐인데 예약 시스템 전체가 폭파되는 기적(?)을 보았다.

요즘 STT(음성인식) 모델들 성능표를 보면 기가 막힌다. 대충 웅얼거려도 찰떡같이 알아듣고, 일상 대화 녹음본은 거의 완벽하게 받아적는다. WER(단어 오류율) 5% 미만, 정확도 95% 이상이라는 화려한 숫자가 화면을 도배한다. 하지만 이 녀석을 믿고 실제 돈이 오가는 비즈니스 전화 음성 에이전트에 붙이는 순간 지옥문이 열린다.

r/LocalLLM에 실전 음성 에이전트를 프로덕션에 올려본 엔지니어들의 피눈물 나는 경험담이 올라왔다. 요지는 단순하고도 치명적이다. 100개 단어를 기가 막히게 받아적어도, 전화번호 딱 한 자리를 삐끗하는 순간 그 뒤에 붙은 모든 워크플로우가 쓰레기통으로 직행한다는 거다.

고객이 “010-1234-5678”이라고 정갈하게 말했다. 그런데 STT가 끝자리를 9로 잘못 들었다. 에이전트는 해맑게 잘못된 번호로 예약 완료 문자를 쏘고, 엉뚱한 사람에게 리마인드 전화를 건다. 원래 고객은 예약이 누락되어 매장에 와서 길길이 날뛰고, 사장님은 연락 안 되는 유령 고객과 싸워야 한다. 단 하나의 글자 오차가 서비스 신뢰도를 밑바닥까지 추락시킨다.

“don’t”가 사라지면 워크플로우가 뒤집힌다

전화번호만 문제가 아니다. 날짜와 시간도 대형사고의 단골손님이다. “세 시 반”을 “세 시”로 잘못 들으면 손님이 30분 일찍 와서 문 두드리고, “오늘 오후”를 “내일 오후”로 치환하면 일정 전체가 꼬여버린다.

더 끔찍한 건 부정어(Negation) 누락이다. 고객이 다급하게 “약속 절대 취소하지 말라”고 소리쳤는데, STT가 앞부분 잡음을 씹고 “약속 취소해달라”로 전사해 버리면 어떻게 될까. 에이전트는 칼같이 위약금을 물리고 예약을 취소해 버린다. “안” 자 하나, 영어에서 “don’t” 한 단어가 날아가는 순간 서비스 로직이 180도 정반대로 폭주한다.

레딧 댓글 중에 명언이 하나 달렸다. “잘못 전사된 전화번호는 단순한 오타가 아니라, 실패해서 사망한 제품 그 자체다.” 뼈를 때리는 말이다. 음성 봇에서 전화번호, 시간, 금액, 부정어 같은 핵심 엔티티는 단순한 글자가 아니라 비즈니스 로직의 절대적인 입력값(Argument)이다. 인자가 오염됐는데 함수가 정상 작동할 리가 없다.

WER으로는 이걸 잡을 수 없다

그렇다면 왜 기존 벤치마크에서는 이 문제가 안 보였을까.

업계에서 STT 모델을 평가할 때 신줏단지 모시듯 쓰는 지표가 WER(Word Error Rate)이다. 100단어 중 5단어 틀리면 WER 5%다. 숫자만 보면 “오, 95%나 맞췄네! 훌륭하다!” 싶다.

하지만 그 틀린 5개 단어가 “음…”, “어…”, “그니까” 같은 추임새라면 서비스에 아무 지장이 없다. 반대로 추임새는 100% 다 맞췄는데 고객 전화번호 뒷자리와 “취소하지 마라”의 부정어를 틀렸다면? WER은 여전히 아름다운 5%지만 비즈니스는 파탄 난다.

글쓴이는 여기서 엔티티 정확도(Entity Accuracy)라는 개념을 들고나왔다. 전체 텍스트를 몇 개 맞췄냐는 평균의 함정에 빠지지 말고, 비즈니스에 직결되는 핵심 엔티티를 얼마나 정확하게 낚아챘는지를 따로 채점해야 한다는 거다. 챗봇이나 일반 LLM도 마찬가지다. “대체로 똑똑하다”는 것과 “실제 돈 버는 서비스에 쓸 수 있다”는 건 완전히 다른 차원의 이야기다.

그래서 어떻게 할 것인가

현업 개발자들이 털어놓은 궁여지책들도 꽤 실용적이다.

가장 흔히 쓰는 건 이중 확인(Dual Confirmation) 루프다. 전화번호나 시간 같은 핵심 정보를 인식하면, 에이전트가 건방 떨지 않고 반드시 되묻게 만든다. “010-1234-5678 맞으신가요?” 하고 고객의 육성 컨펌을 받아내는 식이다. 안전빵이긴 하지만 통화 시간이 길어지고 고객이 피로감을 느끼는 단점이 있다.

또 다른 방법은 STT와 에이전트 사이에 정규식이나 소형 검증 모델을 둔 후처리 엔티티 필터 레이어다. 번호 패턴이나 시간 표현, 부정어 문맥을 한 번 더 걸러서 비즈니스 로직으로 쏴주는 구조다. 지연 시간(Latency)이 조금 늘어나더라도 사고 터지는 것보단 백배 낫다.

왜 이 논의가 지금 중요한가

음성 AI가 웹 브라우저 화면을 벗어나 콜센터와 실제 전화망으로 침투하는 순간, STT 정확도는 기술 자랑이 아니라 법적 분쟁과 직결되는 임계 지표가 된다. 텍스트 챗봇이야 오타 나면 사용자가 “아니 그거 말고” 하고 다시 치면 그만이지만, 음성 전화는 잘못된 정보가 실시간으로 백엔드 API를 때린다. 수습 비용이 어마어마하다.

정리하며

“전체 문장의 95%를 맞췄지만, 남은 5%의 치명타 때문에 서비스를 접어야 했다.”

지금 음성 에이전트를 실전에 띄우려는 엔지니어들이 마주한 차가운 현실이다. 논문이나 마케팅 자료에 적힌 WER 수치에 취해있으면 안 된다. 진짜 중요한 데이터가 오염되지 않도록 2중, 3중의 안전장치를 거는 것, 결국 실전 엔지니어링의 승부는 그 보이지 않는 5%의 방어선에서 갈린다.