← 전체 프로젝트

늘곁에

고령층이 전화하듯 말로 주문하는 음성 기반 배달 앱

기간
2025.06
구성
팀 프로젝트 — 음성 인식·이해(STT·NLU) 담당
내 역할
STT 음성인식 모델 · NLU 의도분류 모델 — 데이터 구축·파인튜닝·평가 (구현은 AI 페어)
PythonPyTorch · TransformersWhisper (STT)KLUE-RoBERTa (NLU)LoRA · PEFTONNX · INT8 양자화

한눈에

늘곁에 음성 입력 화면
음성 입력 화면 — 어르신은 마이크 버튼을 누르고 말하기만 하면 된다. 이 화면 뒤에서 내 STT가 말을 글로 바꾸고, NLU가 그 뜻을 읽는다. (화면·앱 UI는 팀원 작업)

내가 맡은 범위

팀이 음성 주문 앱을 나눠 만들었고, 나는 시스템의 “귀와 이해” — 말을 글로 바꾸는 STT 모델과, 그 글의 의도를 읽는 NLU 모델을 데이터 수집부터 학습·평가까지 맡았다.

앱(안드로이드)과 서버(Node.js), 대화 흐름 제어(FSM), 가게 추천 챗봇(RAG·크롤링)은 다른 팀원들이 맡았다. 사용자가 말한 음성은 앱이 서버로 보내고, 서버에서 내 두 모델을 거쳐 의도가 정해지면 그 뒤 단계가 이어진다.

내가 내린 설계 결정

사투리에 맞춰 다시 가르치기 — Whisper LoRA 파인튜닝

표준어 위주로 학습된 음성인식은 어르신의 방언 섞인 발화에서 형편없다 — 그냥 Whisper-medium은 우리 방언 평가셋에서 단어 오류율(WER) 50.1%, 글자 오류율(CER) 25.2%로 절반 가까이 틀렸다. 그래서 AI-Hub의 중·노년층 한국어 방언 음성 1,167시간으로 추가 학습시켰다. 모델 전체를 다시 학습하면 무겁고 오래 걸려, LoRA(핵심 일부 층에 작은 행렬만 더해 학습하는 방법)로 전체의 약 1%만 학습해 학습 시간을 324시간에서 54시간으로 줄였다. 그 결과 WER은 50.1% → 18.7%, CER은 25.2% → 6.9%로 오류를 1/3 수준으로 줄였고, 같은 방언 평가셋에서 이 모델은 범용 음성인식(GPT-4o·Google)보다도 정확했다(WER 18.7 vs 37.7 vs 68.3).

특정 지역에 치우치지 않게 — 데이터 균등화

원본 방언 데이터는 여성과 특정 지역에 쏠려 있었다(남 27% : 여 73%). 그대로 학습하면 모델이 한쪽 발음에 치우친다. 그래서 나이(60–89세 노년층)·성별·5개 지역(경상·전라·강원·충청·제주)을 고르게 샘플링해 1,167시간 학습셋을 새로 구성했다(남 52% : 여 48%, 지역도 고르게). 덕분에 특정 지역 사투리에만 강한 모델이 되지 않게 했다.

폰에서 가볍게 돌리려고 — 모델 경량화

이 앱은 어르신의 휴대폰에서 가볍게 도는 것을 목표로 했다. 그래서 파인튜닝한 모델을 ONNX로 변환하고 INT8로 양자화(실수 가중치를 정수로 바꿔 크기·연산을 줄이는 방법)해 모바일에 맞게 경량화하는 작업까지 했다.

237문장을 21,875개로 — NLU 데이터 증강

의도 학습 데이터가 처음엔 237문장뿐이었다. 그대로는 모델이 다양한 말투를 못 버틴다. 그래서 사투리·맞춤법 오류·띄어쓰기 오류를 일부러 섞어 21,875문장으로 늘렸다(“짜장면 한 개랑 짬뽕 두 개 주세요” → “짱깨 둘 짬뽕 하나 주이소”처럼). 어르신과 방언 발화에 강건하도록 학습 데이터를 만들었다.

정확도만큼 속도도 — NLU 모델 선택

의도 분류 모델로 KLUE-RoBERTa-largeKoBigBird-RoBERTa-large를 같은 데이터로 비교했다. 정확도는 96.3% 대 96.0%로 비슷했지만, 초당 처리량이 183문장 대 32문장으로 차이가 컸다. 실시간 대화 응답이 중요하므로 정확도가 비슷하면서 훨씬 빠른 KLUE-RoBERTa를 채택했다. 최종 8개 의도 분류 정확도는 96.3%다.

늘곁에 대화 — 메뉴 선택 화면 늘곁에 주문 완료 화면

대화 흐름 — 사용자가 말한 문장이 글로 전사되고(STT), 그 의도에 따라 메뉴 선택에서 주문 완료까지 이어진다(NLU). 답변 문구·주문 상태 표시·UI는 팀원 몫(RAG·FSM·앱)이다.

정직하게 — 내가 한 일

이 프로젝트에서 내가 만든 것은 STT·NLU 두 모델이고, 데이터 구축·파인튜닝·평가까지를 맡았다. 모델 코드는 AI를 페어로 구현했다. 앱·서버·대화 흐름 제어(FSM)·가게 추천 챗봇(RAG/LLM·크롤링)은 팀원들이 맡았다.