입만 열면 기록되는 육아 일기, 보이스 대나무 숲 보니

육아 코칭 AI 보니(bonny) 개발기

by dean
image.png



1. 들어가며: "학원 셔틀 돌면서 타자 칠 여유가 어딨어?"


보니(Bonny) 서비스를 개발하면서 가장 헤비 유저는 바로 저 자신입니다.


7살, 10살 두 아이를 키우다 보니 퇴근 후는 또 다른 출근입니다. 첫째 숙제 봐주랴, 둘째 학원 픽업(라이딩) 하랴 정신이 하나도 없죠.


아이들이 학교나 학원에서 있었던 일을 조잘조잘 이야기하고 나면, 저도 어딘가에 이 복잡한 속마음을 털어놓고 싶어집니다.


"오늘 첫째가 학교에서 친구랑 다퉜다는데 속상하네...", "둘째가 숙제하기 싫다고 떼쓰는데 욱할 뻔했어."


그런데 막상 보니 앱을 켜고 텍스트를 치려고 하면 엄두가 안 납니다.


운전 중이거나 설거지하는 중에 스마트폰 키보드를 두드리는 건 불가능하니까요. 그렇다고 나중에 쓰자니 그 감정이 휘발되어 버리고요.


'육아 코칭'도 중요하지만, 당장 내 스트레스를 풀어줄 '대나무 숲'이 필요한데 텍스트 입력은 너무 귀찮은 일이었습니다.




2. 왜 그냥 '녹음 버튼'이나 'TTS'가 아닌가?


처음엔 일반적인 음성 메시지나 AI 스피커 방식을 고려했습니다. 하지만 제 상황엔 맞지 않았습니다.



계속 눌러야 하는 버튼 (UX): 운전 중이거나 집안일 할 때, 말할 때마다 [녹음 버튼]을 누르고 떼는 건 흐름을 끊습니다. 그냥 옆에 있는 친구한테 말하듯 툭 던지고 싶었죠.

부담스러운 TTS (Audio Output): 이게 제일 중요했습니다. 저는 AI 목소리가 시끄럽습니다. 아무리 자연스러워져도 기계음이 계속 들리면 피로하고, 무엇보다 아이들이 주변에 있을 때 제 하소연에 대한 대답이 소리로 나오는 게 싫었습니다. (엄마/아빠가 자기들 흉보는 걸 들키면 안 되니까요! �)


그래서 내린 결론:


"입력은 편하게 말로 하고(STT), 대답은 조용히 눈으로 읽자(Text). 그리고 버튼 따윈 누르지 말자(VAD)."


이 기능은 보니의 핵심 기능인 '주간 리포트(Weekly Report)'를 위해서도 필수였습니다.


제가 말로 쏟아낸 방대한 하소연("오늘 첫째가 수학 학원 가기 싫다고...")이 데이터로 쌓여야, 보니가 이번 주 우리 아이의 상태와 저의 양육 태도를 정확하게 분석해 줄 수 있으니까요.



image.png 프로토타입 v0




음성채팅2.png 현재 서비스


3. 기술적 도전: VAD (Voice Activity Detection)와 Socket.io


핵심은 "사용자가 언제 말을 시작했고, 언제 말을 끝냈는지"를 기가 막히게 알아내는 것입니다.

이를 위해 VAD(Voice Activity Detection) 기술과 Socket.io를 접목했습니다.


3-1. 아키텍처 구조


HTTP 요청은 오버헤드가 커서 실시간 대화의 '맛'을 살리기 어렵습니다. Socket.io를 활용해 양방향 통신을 구현했습니다.

Client (Web/App): 마이크 권한 획득 -> 오디오 스트림 캡처 -> VAD 라이브러리(WebAssembly)로 음성 구간 감지.

Socket.io Event: 발화가 감지되면(speech_start) 서버로 스트림 전송 시작.

Server: 전송받은 오디오 청크(Chunk)를 버퍼링하여 STT 엔진으로 전달.

Silence Detection: 사용자가 말을 멈추면(speech_end), 자동으로 "발화 끝"으로 인식하고 추론 시작.


3-2. VAD 튜닝의 고통 (반나절의 사투 �)


VAD 세팅은 생각보다 까다로웠습니다. 7살, 10살 아이들이 있는 집은 조용하지 않거든요. TV 소리, 아이들이 "엄마!/아빠!" 부르는 소리...


Threshold (임계값): 생활 소음과 내 목소리를 구분하는 기준점 잡기.

Speech Pad (여유 구간): 말을 하다가 "음... 그니까..." 하고 잠깐 생각할 때 끊기지 않도록 0.X초의 여유를 주는 것.

이걸 잘못 잡으면 숨만 쉬어도 녹음되고, 반대로 너무 둔하면 첫마디가 잘려 나갑니다. 반나절 동안 값을 계속 바꿔가며 테스트한 끝에, 버튼 없이도 자연스럽게 대화가 이어지는 포인트를 찾아냈습니다. 아주 만족스럽습니다.



a33.png


4. UX 개선: Depth 줄이기


기능이 좋아도 접근하기 힘들면 안 씁니다. 등교시키고 돌아오는 차 안이나, 아이들 재우고 지쳐서 누웠을 때 바로 쓸 수 있어야 합니다.


AS-IS: [아이 선택] -> [채팅방] -> [상단 음성 버튼] -> [전환] (3단계)

TO-BE: [아이 선택] -> [보이스 톡] (2단계)


이제 아이 프로필을 누르고 '보이스 톡'만 누르면, 핸드폰을 옆에 툭 던져두고 운전하면서, 혹은 설거지하면서 주절주절 떠들 수 있습니다. 보니는 조용히 듣고 텍스트로 답해주죠.




5. 마치며: '한풀이'의 질이 달라지다


VAD 도입 후, 제가 보니를 쓰는 패턴이 완전히 바뀌었습니다.


텍스트로 칠 때는 귀찮아서 "오늘 첫째랑 싸움" 정도로 짧게 남기던 기록이, 음성으로 하니 "아니 오늘 첫째가 학교에서 돌아오자마자 가방을 던지는데, 내가 거기서 화를 안 낼 수가 없잖아. 근데 또 생각해보니 걔도 힘들었을 텐데..."라며 구체적인 맥락과 감정이 담기기 시작했습니다.


덕분에 주간 리포트의 퀄리티도 훨씬 좋아졌습니다. 아이와의 갈등 원인이나 제 감정 패턴을 훨씬 정교하게 분석해 주더군요.


역시 육아는 장비 빨(?), 아니 기술 빨입니다. 앞으로도 '말 많은 초딩 부모'의 마음을 찰떡같이 알아주는 보니를 만들어 가겠습니다.


매거진의 이전글보니 + 육아 코칭 6,000개의 영상