notepad

いろいろ書くメモ帳

Google Assistant SDK と VOICEROID で遊んでみた

2年半ぶりのブログ更新である.

2020/5/10 に行われた SAMIT 20.05 で発表した内容をまとめてみました. Google Assistant ゆかりさんを作ってみた話です.

samit.connpass.com

動機

  • Google Assistant SDK たるものがあるらしい
  • なんか応答をテキストで出力できるらしい?
  • VOICEROID に読み上げてもらえばそれはもう楽しいのでは?

ということで作りました.

構成

構成はこんな感じです. f:id:Hatanas:20200603221534p:plain

VOICEROID2 結月ゆかり

今回の主役その1. 言わずと知れた音声読み上げソフトです. 今回のために購入しました.皆さんも買いましょう.

ちなみにオホーツク観光大使でもあります.

オホーツク観光大使 結月ゆかり – 公式サイト guided by the PROJECT R.Y.U.H.Y.O.

Google Assistant SDK

今回の主役その2. 公式チュートリアルを見れば動かせると思います. WindowsPython 入れるのが面倒だったので Virtual Box 上の Ubuntu で動かしてます. Virtual Box の設定をいじれば,ホスト OS のサウンドバイスを使えるはずです.

サンプルプログラムを一部改変して,Google Assistant の応答テキストを棒読みちゃんにソケット通信で送信しています. 送信データを作成するときに,Python で2バイト数扱おうとしてハマりました.エンディアンはちゃんと指定しましょう.

(1024).to_bytes(2, byteorder='little')

棒読みちゃん

なぜ棒読みちゃんがいるのかという話ですが,棒読みちゃんプラグインである Voiceroid Talk Plus を使いたかったからです.

棒読みちゃん - ダウンロード(音声合成で日本語文章を読み上げ)

Voiceroid Talk Plus Ver.8.1.0.6:Wangdora Eve. - ブロマガ

VOICEROID2 には API などがないため,プログラムから制御してテキストを読み上げさせるためには,Win32API を使ってウィンドウハンドルを取得して云々する必要があります. Voiceroid Talk Plus プラグインはこの面倒そうな処理を行ってくれます. つまるところ,棒読みちゃん API を叩いてテキストを渡してやれば,プラグイン経由で VOICEROID2 にテキストを読み上げさせることができるわけです.とても便利.

みくみくまうす

Voiceroid Talk Plus と連携して,読み上げテキストに合わせて 3D モデルが口パクします. アシスタント感が出てとても良いのでおすすめです.

みくみくまうす

結果

上記の構成で制作してみましたが,実際のところ想定していた動作はしていません.

というのも,Google Assistant SDK ではDialogStateOut.supplemental_display_textという API を使うことで Google Assistant の応答をテキストで取得できるとのことだったのですが,どうにもうまく取れませんでした. 質問によっては余分なテキストがついてきたり,全くテキストが無い (空文字が返される) こともありました. どうやらあくまでも補助テキストが取得できる API とのことで,応答テキストがそのまま入っているものではないようです.

今回の用途だと Google Assistant SDK は音声を認識して,その結果をIFTTTあたりに投げるまでの処理に使うのが良さそうです.