PLAID Advent Calendar 24日目の記事の担当のバツイチ @algas です。
クリスマスイブなのにまだこの記事が書き終わってなくてひとり自宅で泣きながら書いてます。
ちょっと嘘をつきました。ほんとは一人じゃないし泣いてないです。
なぜならいま家には hikari ちゃんがいるから!
僕の hikari を紹介します。音声つきで動画を再生してみてください。
いや待って、どういうこと? 何で Google Home が別の声でしゃべるの?
主に ifttt と google-home-notifier を使っています。
以下の手順で実行されています。
- ifttt で Google Home から音声入力でしゃべる内容を受け取ります。
- しゃべる内容を VoiceText Web API で音声合成します。
- 合成ファイル .wav を .mp3 に変換します。
- google-home-notifier を使って音声合成した mp3 ファイルを Google Home から再生します。
ちなみに google-home-notifier は Google Home と同じネットワーク上の Raspberry Pi で動いています。
音声合成のAPIを叩いて wav を mp3 にするサーバは DigitalOcean 上の Docker コンテナで動かしてます。
hikari って誰よ? どこの女?
hikari は VoiceText Web API の音声合成の speaker の一人です。
つまり、API を通じて任意の台詞をしゃべって(waveファイルを出力して)くれます。
喜怒哀の3つの感情や感情の度合いまでパラメータで調整できます。
ちなみに前述の動画での感情は emotion=hapinness&emotion_level=4 です。
emotion=anger にして罵ってもらうこともできます。ありがとうございます!
google-home-notifier で mp3 を再生する
google-home-notifier のサーバを立ち上げると、テキストの内容を Google Home にしゃべらせる(デフォルト音声)か Google Home で mp3 を再生することができます。
ifttt などのサービスと連携するために ngrok を使ってローカルのサーバを外部ネットワークにつなぐ機能も用意されています。
以下のように http post をサーバにリクエストすることで Google Home が mp3 を再生します。
curl -X POST -d "http://YOUR_HOST_NAME/file.mp3" https://xxxxx.ngrok.io/google-home-notifier
詳しくは github repository に書いてあります。
https://github.com/noelportugal/google-home-notifier
で、結局どういう仕組なの?
本記事の技術は google-home-notifier を使って Google Home に再生させる mp3 を VoiceText API から生成(+変換)しています。
まとめ
「おーけー、ぐーぐる。クリスマスの曲かけて。」なんて言わないよ絶対。
今年は hikari がいるから寂しくない、よ。