기타

매직 미러 만들기_1(매직 미러 설치 및 기타 모듈 설치)

flutter 개발하자 2021. 1. 12. 10:22

매직 미러는 스마트 미러의 일종으로 거울을 모니터로 사용한 라즈베리로 작동되는 모니터임

- 스마트 미러는 PC모니터나 스마트폰 액정 역할을 하는 거울처럼 보이는 스마트 디스플레이임.

 

매직 미러 사이트

https://magicmirror.builders/

 

매직 미러 설치 방법

bash -c "$(curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/master/installers/raspberry.sh)"

 

(설치된 매직 미러는 MagicMirror디렉터리에 들어있음.)

 

매직미러 실행 방법

cd MagicMirror

npm start

 

매직 미러 실행 정지 방법

ctrl + Q 

-> 여기서 사용되는 프로세스 관리도구는 pm2임.

(pm2 - Node.js의 프로세스 관리자)

*(npm(NodePackagedManager) - Node.js로 만들어진 package(모듈)을 관리해주는 툴)

 

매직 미러 자동실행 방지 방법

pm2 stop MagicMirror

 

다음 부팅때에도 매직 미러 자동실행 방지 방법

pm2 stop MagicMirror

pm2 delete MagicMirror

nano ~/MagicMirror/installer/mm.sh

(nano - vi처럼 편집기 역할해줌.)

cd ~/MagicMirror

#DISPLAY=:0 npm start

 

매직 미러를 자동으로 실행하게 하는 방법

pm2 start ~/MagicMirror/installers/pm2_MagicMirror.json

pm2 save

 

**********************************************

매직 미러에서 음성인식을 사용하려면 MMM-HotWord 모듈이 필요하다.

MMM-Hotword란?

MMM-HotwordSnowBoy 를 이용한 hotword 감지 모듈임.

MMM-Hotword is a hotword detector using snowboy.

 

Hotword란?

"알렉사","헤이구글","시리야"등 인터페이스를 음성으로 깨우는 동작을 하는 중요한 키워드를 의미함. -> 핫워드로 앱을 실행하기 위해서는 ASR(Automatic Speech Recognition(음성인식))을 실행해야 하는데, 이는 많은 리소스를 소요함. ->이를 해결하기 위해 나온게 SnowBoy

 

SnowBoy란?

SnowBoy실시간으로 사용자 정의 가능한 #HotWord 검색 엔진임.

 

SnowBoy설치 방법

sudo apt-get install python-pyaudio python3-pyaudio sox

sudo apt-get install python-pip libatlas-base-dev (종속성 설치)

sudo pip install pyaudio

sudo pip3 install pyaudio  (PortAudio의 파이썬 바인딩을 설치)

 

rec temp.wav(마이크를 통해 녹음할 수 있는 지 확인)

**

위의 명령어에서 에러가 발생한다면, 마이크를 재설치 해야한다. 

sudo pip install requests

wget -O snowboy.tar.bz2 https://go.pimylifeup.com/napoRs/snowboy

tar xvjf snowboy.tar.bz2

mv rpi-arm-raspbian-8.0-1.1.1/ snowboy/

**

SnowBoy API

SnowBoy는 사용하려면, api가 필요하다.

docs.kitt.ai/snowboy/#introduction 

 

Snowboy, a Customizable Hotword Detection Engine — Snowboy 1.0.0 documentation

Docs » Snowboy, a Customizable Hotword Detection Engine View page source Snowboy, a Customizable Hotword Detection Engine Important New! Snowboy now offers Hotword as a Service. You can programmatically use our RESTful API Calls to train a hotword model i

docs.kitt.ai

api 만들 수 있는 주소 - https://snowboy.kitt.ai/

 

api를 만든 후 training_service.py를 만든다.

파일을 만든후 

python training_service.py 1.wav 2.wav 3.wav

cp saved_model.pmdl ./snowboy/saved_model.pmdl
cd snowboy

python demo.py saved_model.pmdl
위의 명령어 들을 실행한 후, Detection이 되는 지 확인한다.

**********************************************

 

Electron이란?

Electron 은 Node.js에 기반을 둔 데스크톱 어플리케이션 플랫폼으로 html, css, javascript를 이용해 크로스 플랫폼에서 돌아가는 데스크톱 어플리케이션을 만들 수 있음.

 

매직미러는 Electron 을 사용하는데, 최신 버전 Electron 은 OpenGL 드라이버를 사용하지 않으면 과하게 CPU를 사용하게 되어 라즈베리 파이의 과열 문제가 발생함 -> 이를 해결하기 위해 데스크탑 OpenGL드라이버를 사용해야한다.

(이 작업을 하기전에 GUI raspberry pi configuration 에서 해상도 작업을 한번 해주기를 권고 한다.)

Open GL드라이버 사용법

sudo raspi-config

순서 - Advanced options à GL Driver à GL (Full KMS) OpenGL desktop driver with full KMS

화면 회전 설정

1)OpenGL을 사용하지 않을 때

sudo nano /boot/config.txt

마지막 줄 밑에 다음 내용을 입력한다.

display_rotate=1

avoid_warnings=1

2)OpenGL을 사용할 시 

nano ~/.config/lxsession/LXDE-pi/autostart

마지막 줄 밑에 다음 내용을 입력한다.

@xrandr --output HDMI-1 --rotate right