GoogleHome, IFTTT, Firebase 및 라즈파이에서 지정한 수에 해당하는 소리를 흘립니다(영어 읽기 도구 작성)

소개



영어 단어를 배울 때마다 PC를 시작하고 소리를 내거나 스마트 폰을 시작하여 소리를 듣는 것이 귀찮습니다.
특정 페이지를 지정한 후에는 해당 소리가 흐르는 것이 좋다고 생각했습니다.

환경


ラズパイ

$lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.4 (n/a)
Release:    9.4
Codename:   n/a

$npm -v
5.6.0

$node -v
v9.4.0

상황



「응 Google 구글 워드북 5」라고 발화
GoogleHome에서는 단어장 5페이지에 대응한 음원이 된다

메커니즘



GoogleHome에서 발화한 내용을 IFTTT에서 Google Assistant로 받고 webhooks에서 지정한 Firebase RealtimeDatabese에 내용을 기록
라즈파이의 node.js에서 Firebase RealtimeDatabese가 업데이트되면 업데이트 된 내용을 받고 google-home-notifier googleHome에 흐르게하고 싶은 음성의 url을 전달하도록합니다.
흐르는 음성에 관해서는 라즈파이에 웹 서버 (Appach)를 세우고 거기에 대응하는 음성 데이터를 둡니다.

Firebase 설정



Firebase에서 새 프로젝트 만들기
맨 왼쪽 메뉴에서 맨 위 Project OverView의 톱니바퀴 마크를 눌러 프로젝트 설정을 선택합니다.
열린 페이지의 오른쪽 하단에있는 ウェブアプリに Firebase を追加를 클릭하여 필요한 설정을 볼 수 있습니다.




그런 다음 가장 왼쪽 메뉴에서 Database를 선택하고 RealtimeDatabese를 선택하고 아래와 같은 화면으로 전환합니다.
프로젝트 ID 옆의 더하기 버튼을 선택하고 url"" 항목을 만듭니다.



IFTTT 설정



Google Assistant 설정



GoogleHome과 연결된 Google 계정으로 IFTTT에 로그인Google Assistant를 선택하고 그 중에서 Say a phrse with a number를 선택하십시오.
이 항목은 발화한 숫자를 가져오고 숫자를 트리거로 사용할 수 있습니다.



이 항목의 구체적인 설정은 아래와 같이What do you want to say 필드에 単語帳 #를 입력하십시오.

에 말한 숫자가 들어온다.





GoogleHome의 답변도 적어두고 #을 넣으면 사용자 측이 발화한 숫자가 여기에 들어가게 된다

Language를 Korean으로 선택하는 것을 잊지 마십시오.



webhooks 설정


URLhttps://{Firebaseで設定したプロジェクトID 例:XXXXXXXXXXX-12345}.firebaseio.com/url.json할 수 있다
Body
"http://{ラズパイのIPアドレス例:192.xxx.xxx.xxx}/English/{{NumberField}}.mp3"

Firebase의 RealTimeDatabese에 보낼 내용을 넣습니다.
이전 항목에서 #에 들어가는 숫자의 내용을 NumberField로 검색할 수 있습니다.NumberField 라는 항목이 없으면 아래의 Add ingrediet 버튼을 누르면 나온다


라즈파이에 웹 서버를 세우십시오 (apache)



여기를 참조했습니다.
Google Home에서 Raspberry Pi에서 음악 파일을 재생하도록 합니다.

위에 쓰여진 것을 인용하지만 아래 3 줄을 라즈파이에서 실행합니다.
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install apache2

라즈파이에서 /var/www/html의 계층 구조로 이동하여 English 폴더를 만들고 오디오 파일 1.mp3을 넣고 mac에서 아래 URL에 액세스하여 재생을 확인합니다.
http://{ラズパイのIPアドレス例:192.xxx.xxx.xxx}/English/1.mp3

라즈파이에 node.js 준비



google-home-notifier

여기를 참조하여 준비했습니다.
Google Home 스피커에 외부에서 밀어서 자발적으로 말하도록 합니다.
Google Home에서 좋아하는 팟캐스트를 스마트하게 재생

먼저 google-home-notifier clone


$git clone https://github.com/noelportugal/google-home-notifier
$cd google-home-notifier/
$ls
LICENSE  README.md  example.js  google-home-notifier.js  package.json

필요한 패키지 넣기


feedparser, firebase, google-home-notifier, requestpackage.json 업데이트
$vi package.json
package.json의 내용
{
  "name": "google-home-notifier",
  "version": "1.2.0",
  "description": "",
  "main": "google-home-notifier.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Noel Portugal",
  "keywords": [
    "google home",
    "notifications",
    "notifier"
  ],
  "license": "MIT",
  "dependencies": {
    "body-parser": "^1.15.2",
    "castv2-client": "^1.1.2",
    "express": "^4.14.0",
    "google-tts-api": "0.0.2",
    "mdns": "^2.3.3",
    "ngrok": "^2.2.4",
    "feedparser": "^2.2.9",
    "firebase": "^5.5.1",
    "google-home-notifier": "^1.2.0",
    "request": "^2.88.0"
  }
}

라이브러리 도입


$npm install

새 파일 만들기


$vi play-English.js
play-English.js의 내용
var FeedParser = require('feedparser');
var firebase = require('firebase');
var googleHome = require('google-home-notifier');
var request = require('request');

const lang = 'ja';
const ip = '192.xxx.xxx.xxx'; //再生したいGoogle HomeのIPアドレス

googleHome.ip(ip, lang);

//Firebaseでプロジェクトを造ったときに確認した内容
const config = {
  apiKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  authDomain: 'xxxxxxxxxxx-xxxxx.firebaseapp.com',
  databaseURL: 'https://xxxxxxxxxxx-xxxxx.firebaseio.com',
  projectId: 'xxxxxxxxxxx-xxxxx',
  storageBucket: 'xxxxxxxxxxx-xxxxx.appspot.com',
  messagingSenderId: 'xxxxxxxxxxx'
};
firebase.initializeApp(config);

var db = firebase.database();
var ref = db.ref('/');

//RealTimeDatabeseが更新されるとこの関数の中に入ってくる
ref.on('child_changed', function(snapshot) {
  var url = snapshot.val()
  if (url) {
    googleHome.play(url, (notifyRes) => {
      console.log(notifyRes);
    })
  }
  ref.update({'url': ''}); // 変更をリセット
});

실행해보기


$node play-English.js

영속화


forever 사용

forever 명령으로 NodeJS 앱을 계속 실행

완성! !
발화하면 단어를 읽고 편리합니다.

참고 자료



Google Home에서 Raspberry Pi에서 음악 파일을 재생하도록 합니다.
Google Home 스피커에 외부에서 밀어서 자발적으로 말하도록 합니다.
Google Home에서 좋아하는 팟캐스트를 스마트하게 재생

선인 여러분에게 감사를 담아

좋은 웹페이지 즐겨찾기