Amazon Polly を使って、GoogleHomeに音声コマンドを命令する

はじめに

GoogleHomeでGoogle-Home-Notifierを使って定型文をしゃべらせたり、IFTTT経由で動的にしゃべらせることもできるのですが、結局、GoogleHomeのアプリを呼び出すことは音声コマンドでしかできないので、限界を感じました。

IFTTTで天気を呼び出すことは出来ても、毎朝スケジュールを話してくれたり、決まった時間にラジコでラジオを流す。ということはできないのです。

そこで、最終奥義とでもいうべき、「GoogleHomeのとなりにスピーカーを置いて、スピーカーから音声コマンドを発動する」という作戦を思いつきました。




Amazon Pollyで音声コマンドMP3を作る

まず、音声を作りたいのですが、ある程度発音がいいツールが必要です。
フリーで作れるロボットのような声だと、Google Homeがうまく反応してくれないので、Amazon Pollyがおすすめです。

もちろん、自分の声でも良いのですが、毎日決まった時間に自分の声が部屋で流れるのは、とても気持ちが悪いので、自分の声が大好きな人以外はお勧めしません。

Amazon Polly

案内に従えばすぐに使えます。
そして、以下のような画面になるので、GoogleHomeに命令しやすい音声ファイルを作ります。




—————————————————————————————————————————————–

まず、タブを「SSML」に切り替えます。
音声を「Takumi」にします。私の次男と同じ名前です。

このあと、GoogleHomeに命令するための音声ファイルを作りますが、何パターンか試行錯誤したので、その結果も含めて次の章に記載します。



GoogleHomeに命令しやすい音声ファイルは?

●音声は、「mizuki」と「takumi」でどちらがいいか

mizukiとtakumiで、5回ずつ「OK,Google」としゃべらせたところ、mizukiの成功率は、3/5。takumiは5/5でした。takumiのほうがOKの「オー」の発音が強いので、反応しやすいっぽいです。


●「OK,Google」と「オーケー、グーグル」はどちらがいいか
takumiで試しました(以降、全部takumi)が、
これはどちらも変わらずちゃんと反応しました。


●「OK,Google」から次の命令コマンドを出すまでの待機時間

1.0s … 成功率 4/5
1.5s … 成功率 5/5
2.0s … 成功率 5/5

1.5sでも全て成功しましたが、ちょっと安定感がない感じでした。
テストは、静かな部屋で実施した場合で、GoogleHome自身が音楽をかけているときや、周りが騒がしいと、認識までの時間がかかることが分かり、1.5sでも認識しない場合があるので、2.0sが一番理想と分かりました。


●「OK,Google」で命令待機状態になって、命令コマンドを出すまでの間隔

1.5s … 成功率 0/5
2.0s … 成功率 4/5
2.5s … 成功率 5/5

これも、2.5sで問題ないかなと思ったのですが、周りがうるさいときは、認識までの時間がかかるため、3.0sが理想でした。
これらを踏まえて、命令コマンドをSSMLで作りました。
以下をご参考ください。

##################### 音量変更 ##################### 
<speak>

OK,Google <break time="2.0"/>
音量、4

</speak>

##################### テレビ消す #####################
<speak>

OK,Google <break time="2.0"/>
テレビ、消して

</speak>


##################### FM横浜を聴く#####################

<speak>

OK,Google <break time="2.0s"/>
音量、2 <break time="3.0s"/>

OK,Google <break time="2.0s"/>
ラジコ、FM横浜 <break time="6.0s"/>

いいえ
</speak>

※最後の「いいえ」は、我が家の場合、”ChromeCastで再生しますか?”と聞かれる場合があるので、言い終わりに合わせて、追加してます。

##################### 今日の天気 #####################
<speak>

OK,Google <break time="2.0s"/>
音量、4 <break time="3.0s"/>

OK,Google <break time="2.0s"/>
今日の天気

</speak>


##################### 今日はどんな日?#####################
<speak>

OK,Google <break time="2.0s"/>
音量、4 <break time="3.0s"/>

OK,Google <break time="2.0s"/>
おはよう

</speak>


##################### 今週の予定 #####################

<speak>

OK,Google <break time="2.0s"/>
音量、4 <break time="3.0s"/>

OK,Google <break time="2.0s"/>
今週の予定

</speak>

##################### テレビ@NHK #####################

<speak>

OK,Google <break time="2.0s"/>
家電リモコンを使って、NHKかけて

</speak>

##################### 買い物リスト #####################

<speak>

OK,Google <break time="2.0s"/>
音量、4 <break time="3.0s"/>

OK,Google <break time="2.0s"/>
買い物リスト、確認

</speak>


##################### 占い #####################

<speak>

OK,Google <break time="2.0s"/>
音量、4 <break time="3.0s"/>

OK,Google <break time="2.0s"/>
今日の、占い、牡羊座 <break time="10.0s"/><break time="10.0s"/><break time="10.0s"/>

OK,Google <break time="2.0s"/>
今日の、占い、獅子座 <break time="10.0s"/><break time="10.0s"/><break time="10.0s"/>


OK,Google <break time="2.0s"/>
今日の、占い、乙女座 <break time="10.0s"/><break time="10.0s"/><break time="10.0s"/>

OK,Google <break time="2.0s"/>
今日の、占い、天秤座 <break time="10.0s"/><break time="10.0s"/><break time="10.0s"/>

</speak>

※Braak Timeは、10秒までの仕様があるので、
 30秒待つ場合は10秒を3回入れてます。

##################### 1分カウントダウン #####################

<speak>

OK,Google <break time="2.0s"/>
音量、4 <break time="3.0s"/>

OK,Google <break time="2.0s"/>
1分カウントダウンに繋いで

</speak>

##################### ポケモンクイズ #####################

<speak>

OK,Google <break time="2.0s"/>
音量、4 <break time="3.0s"/>

OK,Google <break time="2.0s"/>
ポケモンクイズに繋いで

</speak>

音量を毎回変更しているのは、日中に誰かが音量を小さくすることあったり、(うちの長男は、「もうすぐ寝なさい」のアナウンスが流れる前に音量を0にする。。)スケジュールを話すのは音量5がちょうどよくて、ラジオやSpotifyなどは、音が大きすぎるので音量を2にしてから命令するようにしているからです。

出来上がったMP3ファイルをダウンロードし、1つずつ名前を変更し、任意のディレクトリ移動します。

Voice Matchに再登録する

意外と躓いたのですが、スケジュールなどの個人アカウントに関する命令をする場合に、GoogleHomeから「どのユーザーの声か特定できなかったためxxできませんでした」と返されることがありました。

で、自分の声と、機械の声を同じユーザとして登録する必要がありますので、スマートフォンから以下のようにVoiceMachを再登録しました。

認識させるチャンスが4回あり、「Ok,Google」×2回、「ねぇ、Google」×2回となっているので、①自分の声で「Ok,Gooogle」、②機械の声で「OK,Google」③自分の声で「Ok,Google」④機械の声で「OK,Google」と登録すれば、対応できました。再生のタイミングなど、準備が必要です。

※セキュリティを考えると、Amazon Pollyで作った音声で、何でもできることになってしまうので、あまりよくないかも。。





 

mpg321で音声を再生する

出来上がった音声を、mpg321で再生します。
これで、自分がしゃべらずともGoogleHomeに音声コマンドを投入できます。




mpg321 '/home/username/voice/voicename.mp3''

cronに登録する

話してほしい時間帯に、cron登録します。

crontab -e
(例) 
0 7 * * * mpg321 'home/username/voice/今週の予定.mp3'
30 7 * * * mpg321 'home/username/voice/買い物リスト確認.mp3' 
0 20 * * * mpg321 'home/username/voice/寝る前のBGM流す.mp3' 




かなり無理やり感は否めないのですが、とても楽に命令ができるようになりました。話すのが恥ずかしい方とかも、有効な手段かなって思いました。

 

コメント

%d人のブロガーが「いいね」をつけました。