Node-REDで簡単にGoogle Homeにテキストを読み上げてもらう!(TSS)

ゴールデンウイーク中にいろいろ考えていて(本当はやりたかったことは違うのだけど…)、できるようになったのでメモ。普段の生活でなにか便利なことできないかなと思って、調べていたところNode-REDとGoogleHomeの連携が思いの外簡単だというものでした。テキストとGoogleHomeのIPアドレスが別れば、数分でできちゃいます。

状況としては、こんな感じの想定でしょうか?

f:id:ueponx:20210507010155p:plain

あまりにも簡単すぎて、デバッグ時に何度も自室からリビングにあるGoogle Homeを経由してTTSなどを行って、家族からかなり気持ち悪がられました。

Node‐REDの準備

まずは準備になります。準備といっても拡張ノードのインストールを行えばよいのでなれている方であれば1分程度で終わります。ブラウザからフローエディタを起動して

f:id:ueponx:20210506232440p:plain

画面の右上にある【三】(ハンバーガーボタン)をクリックしてプルダウンメニューを展開します。プルダウンメニューの中から【パレットの管理】をクリックします。

f:id:ueponx:20210506232447p:plain

【ユーザー設定】のダイアログが表示されるので、【ノードの追加】タブをクリックします。

f:id:ueponx:20210506232452p:plain

検索ボックスにnode-red-contrib‐castを入力し、表示された拡張ノードの【ノードを追加】ボタンをクリックしてインストールを行います。この拡張ノードはGoogle Homeだけでなく、Chromecastキャストにも対応したノードになっています。

f:id:ueponx:20210506232542p:plain

ボタンをクリックすると、確認用のダイアログが表示されるので、【追加】ボタンをクリックします。ちなみに【ノードの情報を参照】ボタンをクリックすれば拡張ノードのドキュメントのサイトを確認することができます。

参考

flows.nodered.org

f:id:ueponx:20210506232550p:plain

あとは、インストールされるのをしばらく待ちます。

f:id:ueponx:20210506232557p:plain

インストールが完了すると「ノードをパレットに追加しました」というダイアログが表示されます。

f:id:ueponx:20210506232631p:plain

追加後に、【ユーザー設定】のダイアログを確認すると、ボタンが【追加されました】に変化していると思います。これでインストール作業は完了です。 【閉じる】ボタンをクリックしましょう。

f:id:ueponx:20210506232635p:plain

フローエディタの左側にCastノードが追加されていると思います。

f:id:ueponx:20210506232638p:plain

フローを作成する

テスト用のフローを作成してみます。injectノードCastノードを使用して以下のようなフローを作ってみます。

f:id:ueponx:20210506232653p:plain

まずは、injectノードをダブルクリックして【payload】の値をにして【完了】ボタンをクリックします。

f:id:ueponx:20210507003505p:plain

次にCastノードをダブルクリックして、プロパティを開きます。設定を行うのは以下の3つになります。

  • 【 IP 】 … GoogleHomeに設定されたIPアドレス
  • 【 Message 】  … 話させたいテキスト 
  • 【 Language 】 … ja(日本語の場合)

GoogleHomeのIPアドレスがわからない場合にはスマートフォンのアプリを使用するか

f:id:ueponx:20210507001233p:plain

過去に書いた以下のエントリを参考にしてIPアドレスを調べてください。

uepon.hatenadiary.com

ちなみにスマートフォンのアプリを使うと確実にIPアドレスを調べることはできるのですが、操作手順が結構面倒かなと思いました。

設定が終わったら、【完了】ボタンをクリックします。

f:id:ueponx:20210506232655p:plain

すると、ノードの表示が変化します。

f:id:ueponx:20210506232658p:plain

あとは【デプロイ】ボタンをクリックして、処理が成功すればOKです。

f:id:ueponx:20210506232701p:plain

実行してみる

フローがデプロイできたら後は実行するだけです。injectノードの左側のボタンをクリックするとGoogle HomeからTTSの音声が再生されると思います。 再生中はCastノードの下の部分にPlay message on ほげほげ(IPアドレスが入る)と表示されます。

f:id:ueponx:20210506232704p:plain

youtu.be

これでテストできました。

おわりに

簡単すぎてびっくりしました。Alexaを使ってTTSをやったときにはあんなに大変だったのに…。

参考

uepon.hatenadiary.com

簡単にNode-REDからTTSでテキストの読み上げができました。難を言うとすれば、読み上げられたテキスト文には抑揚が存在していないので、のっぺりとした感じに聞こえるかもしれません。それが納得できない場合には固定の音声ファイルを鳴らしたほうがいいのかも?

ただ、引数としてテキストデータをJSON形式で入力を行うことで別サービスと連携が簡単にできると思います。テキスト情報が主となるなる、Twitterだったり、Slackとは連携しやすいですよね。後はアラームの内容をログファイルの更新をフローにすることも簡単にできるでしょう(冒頭の画像イメージ)。

次回はもう少しこの部分を掘り下げてみようと思っています。(あるのか?)

Google HomeのIPアドレスが知りたい!

最近、スマートスピーカーを使って色々と実験を行っていたのですが、そんななかでGoogle HomeIPアドレス簡単に知る方法があるといいなあと思っていました。スマートフォン経由でHOMEアプリを使えば登録されたデバイスIPアドレスを知ることはできます。ただ、この情報にたどり着くまでにかなりの手数が必要になるので、割としんどいなあと思っていました。

そこで今回はUbuntuやRaspberryPiなどから簡単に調べる方法をまとめてみました。(画面はRaspberryPiでキャプチャしています)

f:id:ueponx:20210505230806p:plain

続きを読む

RaspberryPiにMuエディタをインストールする

遅ればせながら、Raspberry Pi Picoを入手しました。一足早くてにいれるぜーと思って、海外サイトから購入をしていたのですが、日本での発売のほうが思いの外早く、自分の手元に届いたのは4月も半ばをすぎていました。なんというか運の悪い…。Lチカも含めていろいろと試していたのですが、たまにMuエディタを使用する記載があるのですが、自分のRaspberryPiのメニューを見てもMuエディタがありません。昔はあったと思ったのですが…。ということで、Muエディタをインストールしてみました。

続きを読む

Arduino IDE 2.0を使用してみました

前々から噂では聞いていた、Arduino IDE 2.0を使ってみました。

現在beta5というバージョン状況ですが、実用的に使えるのか気になるところです。あとはArduinoが使えるのはもちろんなのですが、手持ちの多いSeeeduinoなどからも使えるかをみてみたいと思います。どちらかというとSeeeduinoなどが問題なく動作できれば、今後はこちらのバージョンに移行していこうと思っています。

まだ、位置づけ的にはExperimentalなものなので不具合があっても仕方ないと思って使いましょう。

f:id:ueponx:20210418202641p:plain

続きを読む

Node.js経由でRaspberryPiやObnizからLINEへの通知を行ってみる

前からも持ってはいたのですが、obniz Board 1Y(以降Obnizとします)を入手しました。これまでObnizを使って行っていたのはWeb経由でのアプリ開発まではおこなっていました。具体的には以下のようなものをつくっています。

protopedia.net

この中ではObnizはタイマー処理、大型のソレノイドの制御(木魚を鳴らす)、リレー制御(ブッダマシン起動)を行っています。基本的にはUIありきという内容だったのでWebのインターフェースを使用するのもちょうどよかったのかなと思います。

f:id:ueponx:20210413142530p:plain

個人的にはあまりWebのUI開発に関しては得意ではないので、出来ればNode.jsなどのコードから直接から制御できればいいなと思っていました。ただ、手を付けられていませんでした。

そんな中、「obniz IoT コンテスト 2021 | elchika」が開催されるという話をきいたので、ちょっと使ってみようと思いました。(アイデアに使うかはまだ決めていない)

elchika.com

そこで検索したところ以下のようなものがあることを見つけました。Node.jsで動くことは知っていましたが、LINEのNotifyのメッセージを送信することができるようでした。

qiita.com

今回はこちらを利用して、Obnizだけでなく、RaspberryPiでもNode.jsをつかってメッセージ送信をしてみようと思います。

続きを読む