home

음성인식과 발음평가를 이용한 디즈니러닝+ 서비스 구축기

안녕하세요. 아이들나라Backend팀 백엔드 개발자 민경수입니다. 아이들에게 인터렉티브한 컨텐츠 제공을 위해 노력했던 아이들나라의 경험을 공유하고자 합니다.

프로젝트의 시작

실제로 사내에서는 카카오톡으로 커뮤니케이션을 하지 않는다는 점 사전 안내 드립니다

우리는 무엇을 하고 싶었던 것 일까요?

아이들나라 디즈니러닝+ 서비스는 디즈니와 함께하는 우리 아이 첫 영어 말하기 서비스 를 지향합니다.
아이들나라는 디즈니러닝+를 통해 아이들과 부모님 모두에게 베네핏을 주려고 합니다.
아이들에게는 아이들이 좋아하는 디즈니 스토리와 캐릭터를 통해 흥미를 유발하고, 음성인식 / 발음평가 를 접목한 게임형 학습으로 아이 스스로 생각하며 즐겁게 목표를 달성하는 인터렉티브 서비스 제공이 목적이며,
부모님께는 국제 기준 영어학습 레벨 (CEFR 6개 등급) 에 근거한 체계적인 커리큘럼에 음성인식 / 발음평가의 유아 발음을 점수화 하고, 이를 리포팅하여 영어 홈스쿨링 니즈를 충족하는게 목적입니다.
디즈니러닝+ 메인 페이지
AI Game (음성 인식)
AI 말하기 (음성 평가)

How does it understand me?

음성 인식과 발음 평가가 핵심기능이라고 하는데, 아이들나라는 유아 발화 음성을 어떻게 인식하고 평가할까요?
모바일에서 녹음된 음성파일이 실시간으로 서버에서 분석되고 (STT, 발음평가) RDS 및 S3 에 결과가 저장됩니다.

STT (Speech-To-Text)

아이들나라 음성인식도 일반적으로 많이 사용되는 형태의 STT 엔진으로 구성되었습니다.
하지만 아이들나라만의 모델링에서 특화된 부분이 존재하는데, 유창성이 떨어지고 문법, 표현 오류가 많이 포함 될 수 있는 유아 발성에 특화된 음성 인식을 위해, (원어민, 비원어민) 어린이 데이터를 기반으로 기본 모델링을 진행한 뒤 아이들나라에서 발생한 1,000 시간 이상의 유아발화 음성 데이터 바탕으로 유아 음성 인식에 특화된 모델을 추출하였습니다.
추가로 언어모델, 음향모델, 발음사전 등을 별도로 학습하는 방식에서 벗어나 오류감소율(ERR, Error Reduction Rate)에 큰 개선이 있는 종단형(end-to-end) 학습 방식을 적용하여 진행하고 있습니다.
GMM-HMM -> DNN-HMM: 20~50%↑ -> LSTM-HMM: 10~20%↑ -> E2E-Transformer: 20~50%↑

발음평가

아이들나라는 음성 인식된 결과를 바탕으로 발음 유창성 평가를 진행합니다.음향 음성학적 특징을 추출하여 학습된 평가 모델을 바탕으로 학습자 발성에 대한 유창성 평가를 합니다.
Feature 정보ETS feature — Educational Testing Service (USA): 음성 구간의 평균 길이 및 표준 편차, 발화 속도 및 시간, 휴지(pause) 길이 및 표준편차, 묵음(silence) 전체 및 평균 길이 등의 약 30개의 특징으로 구성Goodness of Pronunciation(GOP) featureAcoustic Model(AM) feature : L1 & anti-model AM score, L2 & anti-model AM scoreProsody feature : shape(fluctuation & its range), rhythm(mean, standard deviation), accent/intonation 등
평가 루브릭전문가 유창성 평가, 5개 항목에 대해 5개 등급으로 평가평가 항목(1) Holistic 평가(2) 4개 Analytic 평가Speech RateIntonationStress & RhythmSegmental Feature

서버 구축

모델링 및 디코딩을 위한 환경은 dockerizing 되어 있습니다.
anaconda 가상환경
pytorch, espnet
dockerizing 에서 사용되는 음성 엔진 관련 파일은 모두 github 으로 관리 됩니다. 이에 분석 모델만 변경 후 쉽게 배포 적용 가능한 프로세스입니다.
scale-out, scale-up 또한 자유롭습니다.
모바일과 서버는 실시간 소켓으로 데이터를 주고 받습니다. 또한 모델 서버는 multi processing, multi thread 로 병렬로 파일을 분석 처리 하기 때문에 전체 음성 파일 녹음 시간에 0.2 ~ 0.4배 정도의 latency로 서비스 가능합니다.
음성파일은 모두 AWS S3에 저장되며 추후에 모델링에 사용 됩니다. 따라서 데이터가 쌓일 수록 더 정확한 유아 발음 평가가 가능해 집니다.
음성 엔진 서버는 Datadog 으로 apm, trace, log 모니터링 되고 있습니다.

내 점수는요?

그래서 저장된 발음 평가 결과는 부모님에게 어떻게 제공 될까요?
부모님은 주간 / 월간 리포트를 통해 아이의 발음 평가 점수를 확인 할 수 있습니다.
아이의 영어실력이 느는 모습을 전주와 비교 가능하고, 강점을 한번에 알기 쉽게 그래프 형태로 확인 가능하며, 각 발화 특징에 맞는 피드백이 제공됩니다.
주간 리포트
월간 리포트

한정된 일정과 자원 그리고 Phase 2

디즈니러닝+는 고객에게 빠르게 서비스를 제공하고 빠르게 피드백을 받아 발전 시켜 나가는 방향으로 프로젝트가 진행되었습니다. 그러다 보니 한정된 일정과 자원으로 인해 아키텍쳐적으로 간략하게 가져간 곳들이 있습니다.
대표적으로, 음성파일 저장 하는 부분에서 현재는 모바일에서 비동기로 presigned url 을 통해 s3 에 적재하고 있는 부분이 있는데, 서비스 오픈과 동시에 음성 평가 엔진 서버에서 s3 에 직접 파일을 업로드 하는 작업을 진행 중에 있습니다.
서비스 적으로도 커리큘럼의 신규 레벨을 적용하고, 새로운 컨텐츠를 제작하는 등 계속해서 새로운 시도를 하고 있습니다.
이처럼 아이들나라는 멈추는 법 없습니다. 지금 이 시간에도 한 걸음 한 걸음 나아가고 성장하고 있습니다.

마치며

지금까지 디즈니러닝+ 프로젝트를 진행하면서 음성인식 / 발음평가 엔진을 이용하여 서비스를 구축 했던 이야기를 해 보았습니다.
개인적으로는 아이들나라에서의 첫 프로젝트로 새로운 것들을 접할 수 있고 업무적으로 적응하는데도 많은 도움이 되고 재미있게 작업한 프로젝트였습니다.
음성 엔진에 대한 이야기를 하다보니, 음성 엔진을 구축 하면서 진행한 성능테스트나 부모님께 리포트를 제공하기 위한 시스템 구축, Argo Workflows 를 통한 배치 시스템 구축 등 더 많은 재미있는 이야기들이 있으나, 추후에 새로운 글로 올라 갈 것이라 기대하면서 이만 마치도록 하겠습니다.
아이들나라Backend팀에서는 이런 다양한 시도를 통해 고객에게 베네핏을 주기 위해 쉼없이 노력하고 있습니다. 성장하고 싶은 많은 개발자 여러분들의 관심 / 지원 부탁드리겠습니다.

참고자료

ETRI