LoginSignup
6
7

More than 5 years have passed since last update.

【MESH カスタムタグ】google home miniに好きな言葉をしゃべらせる

Last updated at Posted at 2017-11-21

やりたいこと

MESHで気軽にTTS(Text to Speech)を使えるようにしたい

実行結果

動きタグを振るとGoogle Home Miniが入力したテキストをしゃべります。
名称未設定-2.jpg
動画のリンク:https://youtu.be/uFISjYJPvVQ

必要なもの

  • MESHアプリ対応スマートフォン
  • MESHタグ
  • MESH SDKのアカウント
  • Raspberry Piと(設定に必要なキーボード,SDカードなど)
  • Wifi環境
  • Google Home (Mini)

設定方法と実行方法

仕組み

システム構成図.png

Google Home MiniとRaspberry Piの設定

下記のリンクを参考にして設定してください。
GitHub - noelportugal/google-home-notifier
Google Homeで時報を知らせる
Twitterの通知をGoogle Homeに教えてもらう

MESH SDKのカスタムタグの設定

PC等のブラウザでMESH SDKを開き、新しいタグを作り下記のjsonコードをインポートしてください。その後、スマートフォン側のアプリにカスタムタグを追加してください。

mesh-googlehome.json
{"formatVersion":"1.0","tagData":{"name":"GoogleHomeSpeak","icon":"data:image/jpeg;base64,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","description":"","functions":[{"id":"function_0","name":"言葉を話す","connector":{"inputs":[{"label":""}],"outputs":[{"label":""}]},"properties":[{"name":"text","referenceName":"speakText","type":"string","defaultValue":"ここに入力してください"},{"name":"address","referenceName":"ipAddress","type":"string","defaultValue":"address"}],"extension":{"initialize":"","receive":"","execute":"var endPointURL = \"https://\" + properties.ipAddress + \".ngrok.io/google-home-notifier\";\n\najax ({\n    url : endPointURL,\n    type : 'post',\n    headers: {'Content-Type': 'application/x-www-form-urlencoded'},\n    timeout : 5000,\n\tdata:{text:properties.speakText},\n    success : function ( contents ) {\n\t\tlog('trigger success');\n        callbackSuccess( {\n            resultType : 'continue'\n        } );_\n    },\n    error : function ( request, errorMessage ) {\n        log('trigger : Network error');\n\t\tlog(endPointURL);\n\t\tlog('trigger  : ' + errorMessage);\n        callbackSuccess( {\n            resultType : 'continue'\n        } );\n    }\n});\n \nreturn {\n    resultType : 'pause'\n};","result":"return {\n    resultType : \"continue\"\n}\n"}}]}}

 

実行方法

スマートフォンでアプリを立ち上げて、トリガーとなるタグと追加したカスタムタグをつなげてください。
その後、下記の画像のようにtextの部分にしゃべらせたい言葉を入力し、addressの部分にRaspberry Pi側で実行中のサービスでxxxxxxxと表示されている部分を入力してください。
curl -X POST -d "text=Hello Google Home" https://xxxxxxx.ngrok.io/google-home-notifier
あとはトリガーが実行したら、Google Homeが入力されたテキストをしゃべります。

無題.png

感想

レスポンスもよく3-5秒後に喋ってくれるので、ラピッドプロトタイピングで音声フィードバックを検証するのに便利だと思いました。個人的には、addressのxxxxxxの生成される乱英数字を固定したかったのですが、ngrokのサブドメイン固定が月額で有料だったので諦めました。笑

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7