【はじめに】
半額となっていた機会にGoogle Home miniを購入しました!
聞き取りの精度もよく天気やラジオを聞く用途で使用しています。

どうせなら音声での検索やPC操作も出来ればなと考え、色々弄ってみることにしました。
第一弾として聞き取ったキーワードを検索し、その結果をPCへ表示させてみようと思います。

何か検索しようとして、
キーボードに触れた瞬間「あれ、何調べようと思ったんだっけ」っとなることが多いので、
思いついた際に発声して検索できれば便利だなと。

1513169855201


【準備するもの】
・Google Home
・raspberry pi
----------------------------
・node.js
・TIFF
・firebase
・pushbullet

【処理の流れ】
①Google Homeがキーワード聞き取り
②TIFFからfirebaseへキーワードを格納
③raspberry pi上からfirebaseのキーワードを取得
④raspberry pi上から検索URLへキーワードを加工
⑤raspberry pi上からpushbulletの機能を使用しPCへ連携

【実装】
(1)まずはしゃべらしてみる
google-home-notifierをインストール
$ npm install google-home-notifier

サンプル通りに実装
const googlehome = require('google-home-notifier')
const language = 'ja';

googlehome.device('Home', language); //名付けたデバイス名
googlehome.accent('ja');

googlehome.notify('こんにちは。グーグルホームです。', function(res) {
  console.log(res);
});

google-home-notifier/node_modules/google-tts-api/lib内のapi.jsを変更
宣言部分を日本アドレスに変更
var ushost = 'https://www.google.co.jp';
var ukhost = 'https://translate.google.co.jp';

アクセントの言語設定判定をコメントアウト
 // if (typeof accent !== 'undefined' && accent !== 'us' && accent !== 'uk') {
 //   throw new TypeError('accent must be "us" or "uk"');
 // }
 
アクセント設定を日本語にする
var host = accent === 'ja' ? ukhost : ushost;

(2)Firebaseの設定
プロジェクトを追加から新規DBを作成  
プロジェクト名-xxxxx
 └ googlehome
   └ word: ""

(3)iftttのレシピを作成
resipi1

resipi2

(4)実装
var firebase = require("firebase");

//firebaseの設定(各自の設定)
var config = {
    apiKey: "xxxxxxxxxxxxxxxxxxxxxxx",
    authDomain: "xxxxx.firebaseapp.com",
    databaseURL: "https://xxxxx.firebaseio.com",
    projectId: "xxxxx",
    storageBucket: "xxxxx.appspot.com",
    messagingSenderId: "xxxxxxxxxxxxxxxx"
  };
  
firebase.initializeApp(config);

//databaseが更新された時
const path = "/googlehome";
const key = "word";
const db = firebase.database();
db.ref(path).on("value", function(changedSnapshot) {
  //値取得
  const value = changedSnapshot.child(key).val();
  if (value) {
    console.log(value);
    console.log(value.split(" ")[1]);
    const result = value.substring( 4 );
    console.log(result);
    
    //連語検索する場合(スペースと発言する。それを+に置換する)
    const serch = result.replace(/スペース/g, '+');
    const serch2 = serch.replace(/ /g, '');
    console.log(serch2);

    //検索URLを作成
    const command = "https://www.google.co.jp/search?q=" + serch2;
    console.log(command);

//PushBulletの設定
var PushBullet = require('pushbullet');

 // Access Token
var pusher = new PushBullet("xxxxxxxxxxxxxxxxxxxxxxx");

//デバイスIDを指定して送信先を決定する
pusher.link("xxxxxxxxxxxxxxxx","google", command, function(error, response) {});

}
}); 


(5)動作確認



・参考にさせていただいたサイト様

https://qiita.com/miso_develop/items/7a02908aad2a5cf192d0

https://qiita.com/seiya1121/items/4cbc32678558315c2159

https://qiita.com/miso_develop/items/234f81a7649af08b2861

https://qiita.com/miso_develop/items/0175c5f45a1e90464234

https://qiita.com/tetotetote/items/4d6ac866b716695fa4c9#_reference-e0362f4ee834c2c58f28

http://hideack.hatenablog.com/entry/2014/11/22/164940