CallZip · 상담 지원 AI 시스템
STT·화자분리 파이프라인
도메인 어휘가 많은 상담 통화를 정확하게 전사하고 고객·상담사 발화를 구분했습니다.
- Python
- Whisper
- LoRA
- vLLM
핵심 기여
- Whisper large-v3에 LoRA와 매장·상품 어휘 사전을 적용해 CER 약 5.0%에서 4.5%로 개선
- 과거 상담 통화 약 9.5만 건을 LLM 2단계 화자분리로 전수 처리
- 표본 1,000건 점검 기준 화자분리 정확도 86.7%에서 94.9%로 개선
문제: 상담 통화는 받아쓰기 어렵다
상담 통화에는 매장 이름, 상품명, 회원 등급처럼 일반 음성 인식 모델이 모르는 말이 많습니다. 고객과 상담사가 한 녹음에 섞여 있고, 조용한 구간에서 모델이 같은 문장을 반복해 만들어 내는 반복 환각도 자주 생겼습니다.
처리 흐름
들어온 음성을 먼저 검사·정규화하고, 발화 구간만 잘라 Whisper에 넘깁니다. 개인정보는 전사 직후 마스킹하고, 검색과 답변 생성에는 마스킹된 글만 넘깁니다.
다이어그램을 불러오는 중...
한 일
- 입력 검사: 실제 컨테이너 형식, 코덱, 채널 수, 길이를 확인하고, 길이 정보가 없는 브라우저 녹음(WebM)은 변환한 PCM의 실제 길이로 다시 재서 너무 긴 파일을 막았습니다.
- 채널 처리: 2채널 녹음은 고객·상담사 채널을 나눠 따로 전사하고, 모노 입력은 섞어서 전사하도록 규칙을 정했습니다.
- 도메인 적응: Whisper large-v3에 LoRA와 매장·상품 어휘 사전을 적용했습니다. 전체 오류율과 별도로 핵심어가 실제로 더 잘 잡히는지를 같이 보고 채택 여부를 정했습니다.
- 반복 환각 대응: 발화 길이에 맞춰 생성 길이에 상한을 두고, 반복이 감지되면 한 번만 재시도한 뒤 그래도 실패하면 그 구간을 버리도록 했습니다. 잘못된 전사가 답변 근거로 흘러가는 것보다 비워 두는 쪽이 안전하다고 판단했습니다.
- 과거 통화 화자 분리: 채널 정보가 없는 과거 통화는 LLM으로 두 단계에 걸쳐 고객·상담사 발화를 나누고, 표본을 사람이 점검해 정확도를 확인했습니다.
- 바뀐 동작마다 계약 시험(예: 발화 길이별 생성 상한)을 추가하고, 서버에 올리기 전 원격 파일을 백업한 뒤 시험이 끝나면 원래대로 돌려놓았습니다.