엔트리와 함께하는 인공지능 교실 > Chapter 6. 음성 분류 인공지능 모델(1)

[Session 01] 잘자라 우리 아가

 잘자라 우리 아가

생후 12개월 미만의 어린 아기를 재우는 것은 참으로 다양한 기술을 필요로 한다. 이번 세션에서는 아이가 잠들기 위한 좋은 소리들을 수집하고 미리 분류한 범주의 소리를 인공지능 모델이 분석하여 확인함으로써 가상의 아기가 포근 하게 잘 수 있는 환경을 만들어 주도록 한다.


학습 목표 

인공지능 음성 분류 모델 가상의 아기가 잘 수 있는 환경을 구축하여 구현할 수 있다.

학습 준비물

음성 녹음이 가능한 PC 또는 노트북

데이터 수집 아이디어

 



 1-1 인공지능 데이터 수집

인공지능이 입력된 음성을 인식하기 위해서 가장 중요한 것은 좋은 데이터를 수집할 수 있도록 하는 것이다. 이를 위해 엔트리 인공지능 서버처리의 부하를 줄이기 위해 편안함, 시끄러움 키워드로 대표되는 2개의 분류 범주로 구성하고 각각의 범주에 맞는 음성 데이터를 녹음하여 입력한다.

프로그램 제작에 필요한 음성 데이터는 사용자가 직접 녹음하거나 별도의 사운드 자료를 통해서 만들 수 있다. 인공지능 모델을 구성하기 위한 데이터 수집에서 중요한 것은 데이터의 품질이며 컴퓨터의 입장에서 구별하기 쉬운 데이터를 만들어 주는 것이 좋은 결과를 얻을 수 있는 방법임을 생각해 보아야한다. 편안함으로 정의된 키워드 범주에 포함되는 사운드 파일을 시끄러운 소리로 구성된 데이터들로 채워나가면 나중에 모델 학습이 완료되어 결과를 얻을 때 정반대의 결과를 얻을 수 있으니 이에 대한 고민이 필요하다.

 

1) 먼저 엔트리 프로그램에서 학습할 모델 선택하기를 클릭하여 다음과 같이 분류: 음성 유형의 데이터 학습 모델을 선택한다.


 

2) 다음으로 음성 모델 학습하기 화면에서 음성 모델 학습 이름을 설정한다.



 1-2 데이터 분류 및 테스트

 

1) 데이터 입력을 위해서 분류 범주인 키워드를 입력하고 다음과 같이 녹음 버튼을 눌러서 실제 음성 데이터 샘플들을 입력하도록 한다. 데이터 입력 길이는 3초이며 음성 데이터를 녹음한 후 재생버튼을 눌러서 데이터의 데이터의 품질이 좋은지 확인해야 한다. 또한 최소 5개 이상의 데이터 샘플을 녹음하여 인공지능 모델학습에 유용하게 사용할 수 있는 환경을 만들어야 한다. 먼저 ‘편안함’ 클래스를 생성하고 음성 데이터를 입력하도록 한다.


 

2) 다음으로 클래스 추가하기 버튼을 눌러서 ‘시끄러움’ 클래스를 추가하고 다음과 같이 음성 데이터를 녹음하도록 한다.


  

  

3) ‘편안함’, ‘시끄러움’ 클래스별로 샘플 음성 데이터가 각각 5개 이상 녹음되었으면 학습단계에서 모델 학습하기 버튼을 클릭하여 인공지능 음성 분류가 가능하도록 학습모델을 제작한다. 학습을 완료하는 데까지는 엔트리 서버의 상황에 따라 다소 시간이 걸릴 수 있으므로 인터넷 연결환경이 유지될 수 있도록 확인해야 하고 모델 학습결과를 확인하기 위한 음성 데이터 녹음 테스트를 해 보도록 한다.



 1-3 엔트리 프로그래밍

엔트리 프로그램 제작을 위해서 필요한 절차들을 순서대로 생각해보면 다음과 같다. 먼저 제작 목적에 맞는 기능을 생각해보고 구현하기 위한 방법들을 컴퓨팅사고의 문제분해 절차에 따라서 마인드맵 등의 방법으로 세부적으로 생각해 보아야 한다. 다음으로 프로그램 디자인을 통해서 기능 구현에 필요한 오브젝트 배치와 구성 환경 등에 대해서 생각해야 한다. 실제 엔트리 프로그램은 일반적인 블록형 프로그램으로 오브젝트에 종속되어 있는 블록들을 어떻게 구성하고 연결하는가에 대한 고민이 제일 중요하다. 따라서 오브젝트에서 구현되는 기능별 블록들을 배치하고 이를 연결할 수 있는 알고리즘을 제작한다. 또한 알고리즘에 따라 실제 필요한 블록의 기능을 이해하고 이것을 이벤트 중심으로 연결하는 것이 알고리즘에서 추상화된 절차를 실제 블록 프로그래밍으로 전이하는 과정인 것이다. 블록 프로그래밍 과정에서 앞서 제작한 인공지능 학습모델을 연결하고 이를 실행하기 위한 테스트 과정이 필요하며 이 과정을 통해서 보다 프로그램을 정교하게 제작하고 일반화할 수 있도록 한다. 요약하면 필요한 기능을 생각하고 적합한 프로그램을 디자인한 다음 만들어진 인공지능 학습모델을 연결하여 블록 프로그램으로 완성하며 최종적으로 테스트를 통해 발견된 수정사항이나 개선사항을 반영하여 제작 하는 단계로 진행하면 된다. 이제 실제 블록 프로그래밍 과정을 통해 따라해 보면 다음과 같다.


1) 첫째, 필요한 기능에 대해서 생각해 보면 다음과 같다. 주제에서 제시하고 있는 아기를 재우기 위해서는 사용자가 음성으로 녹음한 결과 데이터 분석 결과에 따라서 아기의 얼굴 모양을 변하게 하는 간단한 프로그램을 작성하는 것이다. 음성 데이터 분석 결과가 ‘편안함’ 클래스에 해당된다면 아기의 모습은 눈을 감고 자고 있는 모양을 설정하고 ‘시끄러움’ 클래스에 해당된다면 아기의 모습은 화난 표정을 짓게 할 수 있는 기능을 구현하도록 한다.

  

  

2) 둘째, 프로그램 디자인에서는 아기의 표정 변화를 위해 필요한 아기의 모양이 필요하다. 또한 프로그램의 사실성을 높여주기 위해서 엔트리 모양 추가하기 메뉴에서 배경을 하나 선택하도록 한다.


3) 또한 실제 아기의 얼굴을 만들어 주기 위해서 오브젝트 추가하기에서 사람 메뉴의 ‘얼굴모양’을 선택하여 3가지 모습의 아기 얼굴을 만들어 준다.


 

4) 교재에서 아기 얼굴의 모양 번호는 다음과 같이 일반, 화남, 평온 순으로 배치되었다.

 

5) 그리고 아기 얼굴을 화면에 적절하게 배치하여 구성하였다.


 

6) 셋째, 인공지능 학습모델과 연결부분으로 필요한 기능을 블록 프로그래밍으로 구현하는 단계이다. 먼저 아기의 상태를 정하기 위해서 시작 버튼을 클릭하면 평온한 모양으로 설정한다.


7) 다음으로 간단하게 아기가 사용자의 응답을 기다리고 있다는 표현을 제시한다.


 

8) 인공지능 학습모델을 적용한 블록을 다음과 같이 가져와서 결합한다.


 

 

 9) 학습한 모델로 분류하기 블록은 실제 사용자의 컴퓨팅 환경에서 음성을 녹음하거나 사운드 데이터를 업로드하여 학습모델이 분류할 수 있도록 제공되는 블록이다. 이를 통한 결과값은  블록을 통해 클래스 이름을 말하게 할 수 있다. 또한 다음과 같이 정의된 클래스에 대한 신뢰도를 표시하게 할 수 있다.

 

11) 넷째, 테스트 및 개선 단계에서는 만들어진 프로그램을 테스트 해보고 개선사항에 대해서 확인하는 단계에 해당한다. 이제 실제 프로그램을 실행하여 확인하면 다음과 같은 화면이 나타난다.


12) 잠시 기다리게 되면 음성 분류를 위한 데이터입력 창이 나타나며, 녹음을 선택하고 마이크 모양의 녹음 버튼을 클릭하여 테스트하고 싶은 클래스에 해당되는 데이터를 녹음하도록 한다. 녹음된 데이터를 재생 버튼을 클릭하여 들어보고 적용하기 버튼을 클릭하도록 한다.


 

 

13) 실제 다음과 같은 결과값을 얻을 수 있으나 해당 화면은 개선된 프로그램을 적용한 화면이다.


14) 어떠한 부분이 개선되어 있는지 한 번 생각해보고 적어보도록 한다. 또한 자신이 생각한 방법을 적어본 내용을 다른 사람들과 공유하는 과정도 중요하다.

프로그래밍에서도 관찰하는 능력이 대단히 중요하며 속에 포함되어 있는 단계를 유추할 수 있는 역량을 기르는 것이 절차 중심의 컴퓨팅사고를 향상시키는 데 유용하다.