라즈베리파이에 구글 어시스턴트 설치하기 (model ID 포함)
라즈베리파이, 오렌지파이

라즈베리파이에 구글 어시스턴트 설치하기 (model ID 포함)

반응형

[2019-02-23 몇가지 오류를 수정했다.]

 

[주의]

해당 방법은 2019년 6월 28일 이후로 더이상 지원되지 않는다.

잘못된 정보 전달을 막고자 댓글 불허로 전환한다.

 

라즈베리파이에 구글 어시스턴트를 설치하면 마치 인공지능 스피커처럼 사용이 가능하다.

그렇게 만드는 방법은 

https://developers.google.com/assistant/sdk/guides/library/python/embed/config-dev-project-and-account

에 자세히 나와있지만 영어로 되어있기도해서 다시 한번 정리해 보기로 했다. 인터넷에 올라온 작년 자료들은 대부분 model ID를 설정하는 부분이 빠져있어 이부분도 같이 정리해 봤다.

 

우선 Google Action Console에 접속한다.

 

 

Add/import project 클릭

 

 

프로젝트 이름을 영어로 입력하고 CREATE PROJECT 클릭 (언어나 국가 설정은 건드리지 않아도 됬던걸로 기억한다.) 

언어는 한국어로, 국가는 한국으로 설정하면 별도의 설정 없이 한국어 구글 어시스턴트를 사용할 수 있다.

 

그러면 아직 이 창을 닫지 말고 Google API Console에 접속한다. 왼쪽의 메뉴바를 활성화 시키면 결제 탭이 있는데, 자신의 신용카드 또는 체크카드로 결제 수단을 만들어야 한다. 단 처음 만들면 1년간 무료이며, 카드는 해외 결제가 가능한 비자 또는 마스터 카드이여야 한다. 카드를 등록하면 1달러가 자동으로 결제되고 잠시후 바로 돌려준다. 

 

상단 메뉴에서 방금전 만든 프로젝트를 클린한 뒤 API 및 서비스 검색에서 Google assistant를 검색해 찾는다.

 

 

찾았다면 클릭한 뒤 API 사용설정을 눌러 활성화 시킨다. 

그 다음 왼쪽 메뉴의 사용자 인증 정보 클릭후 OAuth 동의 화면 클릭, 이메일 주소, 사용자에게 표시되는 제품의 이름 (영어)를 작성한뒤 아래의 저장 버튼을 누른다.

 

 

다음 https://myaccount.google.com/activitycontrols에 접속 하여 Web & App Activity, Device Information, Voice & Audio Activity를 활성화 시킨다.

 

이제 다시 Google Action Console로 돌아와서 왼쪽 메뉴바의 Device registration을 클릭한다.

 

 

그 후 나온 화면에서 REGISTER MODEL 클릭하면 아래와 같은 화면이 나올 것이다.

 

위의 화면에서 Product name (영어)를 마음데로 적고 ,Manufacture name 역시 영어로 마음데로 적자. Device type는 적당하게 Light로 설정하면 자동으로 Device Model id가 생성되고 REGISTER MODEL을 클릭해 넘어가면 된다.

 

위와 같은 화면에서 Download OAuth 2.0 credentials를 클릭해 .json파일을 내려받은 후 컴퓨터 적당한 곳에 저장해두자. 단 반드시 파일의 이름을 변경해서는 안된다.

다음으로 NEXT를 눌러 3단계가 나오면 SKIP 버튼을 눌러 빠져나온다. 그럼 본인의 Model ID를 확인할 수 있다. 이 ID를 잘 기억해두자.

 

 

이제 본격적인 준비는 끝났고 라즈베리파이를 세팅하면 된다. 라즈베리파이에 USB 마이크와 스피커가 장착되어 있어야 하는데, 방법은 2018/08/17 - [라즈베리파이/기초] - 라즈베리파이에서 USB 마이크, 스피커 설정하기를 참고하자.

 

마이크 세팅이 끝나면 파이썬의 가상환경을 설정해야 하는데 아래 과정을 통해 실행한다.

$ sudo apt-get update
$ sudo apt-get install python3-dev python3-venv
$ python3 -m venv env
$ env/bin/python -m pip install --upgrade pip setuptools wheel
$ source env/bin/activate

 

이제 Google assistant를 동작시킬 패키지 파일들을 받는다 (가상환경 상태에서 진행한다.)

(env) $ sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev
(env) $python -m pip install --upgrade google-assistant-library==1.0.0
(env) $ python -m pip install --upgrade google-assistant-sdk[samples]==0.5.1

 

완료되면 credentials를 설정한다.

(env) $ python -m pip install --upgrade google-auth-oauthlib[tool]

 

 

이 다음이 중요한데 아까 받아둔 .json 파일을 라즈베리파이의 /home/pi/경로에 옮겨둔다. 컴퓨터에서 라즈베리파이로 파일을 전송하는 방법은 다양하지만 VNC viewer를 사용중이라면 내장된 파일 전송 기능을 이용하면 편하다. 이제 아래 코드를 본인의 경우에 맞추어 수정해 입력한다.

(env) $ google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \
      --scope https://www.googleapis.com/auth/gcm \
      --save --headless --client-secrets /path/to/client_secret_client-id.json

 

 

강조된 부분을 수정하면 된는데 만약 본인의 .json 파일의 파일명이 client_secret_23481444425-1gs9la9dli1kh1tb31lokmqd9be9ejfs.apps.googleusercontent.com.json 이라면 아래와 같이 입력하면 된다.

(env) $ google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \
      --scope https://www.googleapis.com/auth/gcm \
      --save --headless --client-secrets /home/pi/client_secret_23481444425-1gs9la9dli1kh1tb31lokmqd9be9ejfs.apps.googleusercontent.com.json

 

 

만약 오류가 난다면 파일의 경로가 /home/pi/인지 다시한번 확인해 보자. 위와 같이 입력하면 긴 답글이 출력되는데, 그 중간에

Please visit this URL to authorize this application: https://...

 

위의 문장과 함께 긴 URL 하나가 출력될 것이다. 이 URL을 복사하여 웹에 붙여넣으면 흔히 구글에 로그인하는것과 비슷한 인증 화면이 나온다. 본인의 구글 아이디로 인증하면 된다. 인증을 완료하면 한 줄의 긴 인증코드를 보여주는데, 이 코드를 복사해두자. 그리고 다시 라즈베리파이로 돌아와 보면 터미널에

Enter the authorization code:

 

라고 나오는데 여기에 아까 복사한 코드를 붙여넣고 엔터를 누르면 된다. 성공했다면 아래와 비슷하게 출력된다.

credentials saved: /path/to/.config/google-oauthlib-tool/credentials.json

 

이제 샘플코드를 돌리는 일만 남았다. 아직 가상환경 상태이어야 하며, 터미널에 아래 명령을 본인에 맞게 수정하여 입력하면 된다.

방법 1
(env) $ googlesamples-assistant-hotword --device_model_id my-model 

방법 2
(env) $ googlesamples-assistant-pushtotalk --project_id my-dev-project --device_model_id my-model

 

강조된 부분을 수정하면 되는데 device_model_id는 아까 알아둔 model ID를 입력하면 되고 project_id는 다시 Google Action Console로 돌아와서 왼쪽 메뉴의 제일 위쪽의 톱니바퀴 모양을 누른 뒤 Project settings를 누르면 Project ID를 확인할 수 있다.

 

 

예를들어 Project ID가 testspeech-1ecbc이고 model ID가 testspeech-1ecbc-speech-69b45a라면 아래와 같이 입력하면 된다.

위에 수정된 코드를 참고하자 실행 방법은 크게 두가지가 있는데 일반적인 구글 어시스턴트 처럼 OK google로 호출하는 hotword 방식과 엔터를 입력할때 마다 반응하는 pushtotalk 방식이 있다.

하지만 이유는 모르겠으나 hotword 방식은 프로젝트 ID를 입력하면 세그먼트 오류가 발생한다. 

 

 (env) $ googlesamples-assistant-hotword --project_id testspeech-1ecbc --device_model_id testspeech-1ecbc-speech-69b45a 

 

이제 모두 끝났다 위의 명령을 입력한뒤 마이크에 OK Google이라고 말하면 터미널 창에 변화가 생기고 인공지능 스피커를 사용할 수 있게 된다. 사용법은 기존의 구글 어시스턴트와 동일하다.

 

이제 구글에서 제공하는 샘플코드를 이용해 구글 음성인식을 사용해볼 계획이다.

 

[수정] 

1. 몇가지 오류를 수정했다. 댓글의 피드백이 큰 도움이 되었다.

2. 오렌지파이 버전도 실행해보았다. 영상도 확인 가능하다.

2019/02/23 - [라즈베리파이] - 오렌지파이에 구글어시스턴트 한국어 설치하기

반응형
    # 테스트용