Play With AI > Chapter 4. 스마트홈 만들기

[실습하기] 나만의 스마트홈 인공지능 프로그램 만들기(1)

  만들어볼까요?

지금부터 엔트리의 오디오 감지 기능을 사용하여 나만의 스마트홈 인공지능 프로그램을 만들어보겠습니다.


[STEP 1] 엔트리봇 오브젝트에서 음성인식 시작하기

 

 1) 엔트리 공유 주소 http://naver.me/FsFiGILF 에 접속한 후, 코드보기를 클릭합니다. 

 

 2) ‘인공지능’ 블록 꾸러미에서 ‘AI블록 불러오기’를 클릭합니다.

 

 

 3) ‘오디오 감지’를 선택한 뒤 ‘추가하기’를 클릭 합니다.


4) 먼저 엔트리봇 오브젝트를 클릭하여 블록을 조립하겠습니다. ‘안녕을 4초 동안 말하기’ 블록을 가져와 다음과 같이 내용을 수정합니다.



5) 나만의 스마트홈 프로그램은 엔트리봇을 클릭했을 때 음성인식을 시작합니다. ‘오브젝트를 클릭했을 때’ 블록을 가져온 뒤, ‘안녕을 4초 동안 말하기’ 블록을 붙여 다음과 같이 블록을 조립합니다.



6) 엔트리봇 오브젝트를 클릭하면 먼저 마이크가 연결되어 있는지를 확인하고 음성 인식을 시작합니다.




[STEP 2] 음성 명령을 인식하여 적절히 대답하도록 만들기

 

 7) 음성을 인식하면, 엔트리봇이 인식된 말을 문자로 바꾸어 말해줍니다. ‘인공지능’ 블록 꾸러미의 ‘음성을 문자로 바꾼 값’ 블록과 ‘생김새’ 블록 꾸러미의 ‘안녕을 말하기’ 블록을 가져와 다음과 같이 조립합니다.


 

 8) 1초 기다린 뒤, 만약 음성을 문자로 바꾼 값에 ‘열어’ 라는 말이 포함되어 있다면 창문이 열리고, ‘닫아’ 라는 말이 포함되어 있다면 창문이 닫힙니다. 먼저 ‘2초 기다리기 블록’와 만일 ~라면 아니면~‘ 블록을 가져옵니다.


 


 

 9) 음성을 문자로 바꾼 값에 ‘열어’라는 말이 포함 되어 있는 경우를 다음과 같이 블록으로 나타낸 뒤, ‘만일 ~라면 아니면~’ 블록의 조건 부분에 넣어줍니다.

 

 체크체크!

Q. 음성 인식된 말 속에 특정 단어가 포함되어 있는지 어떻게 알 수 있나요?



위 그림처럼 블록을 조립한 뒤 실행하여 ‘안녕 반가워’라고 말해 보면, 결과가 ‘4’라고 나옵니다. 어떻게 나온 결과일까요? 아래 그림을 봅시다.

 

 음성 인식한 결과를 문자로 바꾸었을 때, 그림과 같이 앞에서부터 순서대로 한 글자마다 숫자가 매겨집니다. 이때, 공백(띄어쓰기)도 한 글자처럼 숫자가 매겨집니다. 그림에서 볼 수 있듯이 엔트리에서는 가장 먼저 나온 글자의 위치가 ‘1’로 정해져 있습니다. 따라서 ‘안녕∨반가워’라고 이야기 하면 ‘반가워’의 시작 위치는 ‘4’가 됩니다.

그렇다면 이 블록을 활용해서 음성 인식한 말 속에 특정 단어가 포함되어 있는지를 판단하려면 어떻게 해야 할까요? 다음과 같이 특정 단어의 시작 위치가 0보다 큰지를 확인하면 됩니다.


음성 인식을 한 결과를 문자로 바꾸었을 때, 가장 처음에 나온 글자의 위치는 ‘1’입니다. 그렇다면 어떤 단어의 시작 위치가 0보다 크다는 건 어떤 의미일까요? 맞습니다. 그 단어가 문장의 어딘가에는 존재하고 있다는 것을 나타내죠. 따라서 어떤 단어가 음성 인식한 결과에 포함되어 있는지를 판단하려면 시작 위치가 0보다 크다고 하면 된답니다. 

 

 10) 음성 인식 결과 ‘열어’라는 말이 포함되어 있다면, 엔트리봇이 ‘창문을 열겠습니다’라고 말을 합니다.


 

 11) 이어서 음성 인식 결과에 ‘닫아’라는 말이 포함되었을 때, 엔트리봇이 ‘창문을 닫겠습니다.’라고 말하도록 해보겠습니다. 먼저 ‘만일~라면’ 블록을 가져온 뒤 다음과 같이 블록을 조립합니다.



[STEP 3] 음성 인식 결과에 따라, 창문 오브젝트 모양이 바뀌도록 만들기

 

 12) 이번에는 각 명령어에 따라 창문 오브젝트의 모양이 바뀌는 것을 표현해보겠습니다. 먼저 창문 오브젝트에 보낼 신호를 만들어야 합니다. 속성에서 신호 추가하기를 눌러 ‘열림’, ‘닫힘’ 신호를 만듭니다.


13) 음성 인식 결과에 ‘열어’가 포함되어 있으면 ‘열림’ 신호를 보내고, ‘닫아’가 포함되어 있으면 ‘닫힘’ 신호를 보냅니다. ‘시작’ 블록 꾸러미에서 ‘~신호 보내기’ 블록을 가져와 다음과 같이 조립합니다.



 

 14) 이제 창문 오브젝트에 코딩을 하겠습니다. 창문 오브젝트는 프로그램이 시작될 때는 닫혀 있는 모습이어야 합니다. 다음과 같이 블록을 조립합니다.


 

 15) ‘열림’ 신호를 받았을 때 ‘창문_열림’ 모양으로 바꾸고, ‘닫힘’ 신호를 받으면 ‘창문_닫힘’ 모양으로 바뀌도록 블록을 조립합니다.




 

 16) ‘시작하기’ 버튼을 클릭하여 프로그램이 잘 동작하는지 확인합니다.


 프로그램에 대해 이야기해봅시다.
Q. 이번 시간에 만든 작품은 엔트리의 어떤 인공지능 관련 기능을 사용하였나요?
Q. 작품을 만들면서 어떤 생각이 들었나요?