読者です 読者をやめる 読者になる 読者になる

ダンボーGoogle Home制作メモ

前回のブログではAlexa Voice Serviceを使ってラズパイZeroで自作Echoを作成しました。

sparkgene.hatenablog.com

今回はGW直前に公開されたGoogle Homeを自作できるGoogle Assistant SDKを利用して、ダンボーHomeを作ってみました。

ラズパイの良いところは、SDカードを変えれば違うものとして動かすことが出来るので、AlexaとGoogle Assistant SDKは別のSDカードにセットアップしておくことで、SDカードを差し替えるだけでAmazon Echoになったり、Google Homeになったりすることが出来ます。

SDカードの抜き差しが簡単にできるように、ダンボーの横顔に穴を開けました。

f:id:sparkgene:20170506210825j:plain

セットアップで参考にしたのはこちらのQiitaの記事。

qiita.com

元になっているのはこちらの英語のドキュメントですので、こちらを見ながらAPIキーの発行などを進めてもセットアップは簡単に進められます。

Overview  |  Google Assistant SDK  |  Google Developers

実際にラズパイにインストールする際に必要なコマンドは、githubにあがっているサンプルに細かく書かれているので、こちらを見ながら進めました。

github.com

ラズパイ上でサンプルを動かす際、Google Assistant SDKに対して以下の情報を提供する権限を与える必要があります。

  • Web & App Activity
  • Location History
  • Device Information
  • Voice & Audio Activity

個人のgoogleアカウントに対してこれらの権限を許可するということは結構な情報を提供することになるので、気になる場合はメインではないアカウントを使うのが良さそうです。 ドキュメントにもデベロッパーアカウントではないgoogleアカウントでもOKと記載されています。

Set activity controls for your account

デモ動画

youtu.be

AVSのサンプルと違って、Google Homeのようにウェイクワードに反応することが出来ないようで、コマンドラインでエンターをすると音声を拾い始めるみたいな動きとなっていました。

MagPiの付録としてついてきているキットでもボタンを押して喋りかける使い方なので、Alexaのときと同じでそのうちウェイクワードにも対応するのかなって気がします。

www.raspberrypi.org

使ってみた感想としては、「おっけー、ぐーぐる」と思っきり日本語英語で発音しても、問題なく拾ってくれたので音声認識の精度はAlexaより高い印象です。 時刻や天気を聞いたら勝手に東京の情報を返してきたので、連携しているアカウントの情報に基づいて、回答を返してくる気がします。 ちなみに、「おっけー、ぐーぐる」と話しかけたあとは、音声入力待ちになるので、次のコマンドを言うことが出来ます。

あとがき

Alexaのサンプルが出てきたときよりもドキュメントがしっかりしていて、セットアップでハマるところはほぼありませんでした。

ハマったのはGoogle Assistant SDKの部分ではなく、ラズパイでオーディオを再生すると音が割れる現象が何故か発生して原因がわからずだいぶハマりました。 ダンボーEchoと同じ2017-04-10-raspbian-jessie-lite を利用したのに、.asoundrcの設定を同じにしてもダメでした。 結局、OSを再インストールしても状況は変わらなかったので、.asoundrcのspeakerの方にレート rate 44100 を指定することで音割れしなくなりました。

pcm.!default {
  type asym
  capture.pcm "mic"
  playback.pcm "speaker"
}
pcm.mic {
  type plug
  slave {
    pcm "hw:2,0"
  }
}
pcm.speaker {
  type plug
  slave {
    pcm "hw:1,0"
    rate 44100
  }
}