앱 인벤터 appinventor

CHATBOT 앱 인벤터 코딩과 음성 명령에 의한 라즈베리파이 LED ON OFF

coding art 2017. 10. 25. 15:21
728x90

안드로이드 스마트 폰을 통해 대화가 가능한 오픈소스 채팅봇 앱을 코딩해 보자. 스마트 폰은 자체 적으로 음성 처리 기능을 보유하고 있으므로 인식되어 텍스트화된 정보를 라즈베리 파이에 송신하여 분석 후 결과를 돌려받아 스마트 폰에서 결과를 출력한다. 이러한 앱 기능은 현재에도 인공지능과의 입출력 수단으로 많이 사용되고 있으며 특히 라즈베리 파이에서 구동되는 소스코드가 인공지능 분야에서 많이 사용되는 파이선이므로 한번 코딩 경험을 가져볼 필요가 있다. 이 오픈소스 채팅봇 코드는 유튜브에 “Make A Python powered ChatBot #Raspberry pi” 로 소개되어 있다. 한번 사용법을 시청해 보기 바란다.

 

 

처음 이 코드를 얼핏 보았을 때에 여러 가지 코딩 기법이 섞여 있어 엄두를 내기 어려웠으나 바로 앞의 음성 인식 앱을 하고 난 후 다시 관심을 가지게 되었다.

한 가지 지적해야 할 점은 지금까지 블로그에 소개해 왔던 아두이노 ESP8266 WiFi  코딩이라든지 또는 라즈베리 파이에서의 Flask 모듈에 의한 WiFi  와는 달리 일종의 라이브러리나 모듈과 같이 느껴지는 ClientSocketA12Ext를 사용하고 있다는 점이다. 이 Extension이 어디서 유래했는지는 잘 알 수 없으나 기존의 WiFi 기법의 일종인 듯 하므로 그 사용법을 익혀두면 유익할듯하다.

 

 

 

 

 

 

 

 

이 Chatbot 앱을 구성하는 Non visible 요소로서는 ClientSocketA12Ext를 비롯하여 Notifier, 음성인식엔진, TTS 가 있다. Notifier 란 팝업 창에 해당한다. SpeechRecognizer 즉 음성인식엔진은 구글 것을 사용하는데 우리나라의 음성엔진이라 한영혼합으로 인식하는 경향이 커 LED를 한번 켜고 끌려면 상당 시간 훈련이 필요한듯하다. 코딩이 익숙해지면 명령어를 간단하게 “ON” 또는 “OFF” 로 축약해 보는 것도 좋을 듯하다.

 

 

앞서의 앱 인벤터 예제와는 달리 블록 코드 양이 다소 많은 듯 하므로 반드시 다운 받아서 저장 경로를 파악하여 확장자명이 .aia 로 끝나는 파일을 불러들이도록(import from my cimputer) 한다.

(첨부된 파일을 다운로드 받아 사용하기 바람)

 

chatbot.aia
0.04MB

 

 

짧은 앱 인벤터 코드는 퍼즐형 코드를 보고 직접 코딩하면 되지만 다소 길이가 긴 앱 인벤터 오픈 소스의 경우엔 copy 하는 것이 좋을 듯하다. 실제로 카피하면 원 파일명에 자동적으로 copy 라는 단어가 덧붙여진다.

한편 이 chatbot 코드를 실행하려면 라즈베리 파이 상에서 파이선 코드인 server3.py를 실행시켜야 한다.

다음의 압축파일을 라즈베리 파이에 다운받아 압축을 풀어서 사용하기 바란다.

 

python server code-20171024T051719Z-001.zip

 

Chatbot 코드를직접 실행하기 전에 일단 라즈베리 파이3의 가상 ip를 확인할 필요가 있다. LXTerminal에서 ifconfig 명령을 사용하면 아래와 같이 192.168.0.10 이라는 가상 ip 주소를 확인할 수 있다.

 

 

 

 

 

이 가상 ip 주소 데이터는 앱 인벤터 디자이너 코딩단계에서 아래의 2곳에서 사용되므로 반드시 수정해주도록 한다.

 

 

 

 

 

 

 

실제 코드를 실행해 보면 처음에 “Hello”는 잘 반응하지만 What is your name 은 여러 번 시행착오가 필요하다. 라즈베리 파이에 LED를 설치하고 이를 영어로 on OFF 하기 위해서는 정말 꾸준한 연습이 필요한 듯하다.

Light on 이나 Light Off 보다는 Led on Led off 가 보다 쉽게 인식이 됨을 참조하자. 아울러 자신의 라즈베리 파이에 설치된 LED 의 GPIO 핀 번호를 확인할 필요가 있으며 아울러 GPIO.ouput(17,True) 와 GPIO.ouput(17,False)로 코딩되어 있는데 True와 False를 GPIO.HIGH와 GPIO.LOW 로 수정하도록 하자.

 

음성인식 연습에 있어서 잘되는 단어로는 Hello-헬로, LED on-엘이디온, LED OFF-엘이디오프가 있으며 name,time,date는 각각 엔에이엠이,티아이엠이,디에이티이로 하면 잘 인식된다.



 
python server code-20171024T051719Z-001.zip
0.0MB
 
chatbot.aia
0.04MB