Google AIY Voice Kit(ラズパイを使ったスマートスピーカーの作成)に関する情報まとめ

<h1 id="__asciidoctor-preview-440__">Google AIY Voice Kitとは</h1>
<div id="preamble">
<div class="sectionbody">
<div id="__asciidoctor-preview-474__" class="paragraph">
<p>AIYプロジェクトの一つで、Raspberry Pi(マザーボード1枚だけの小型コンピュータ)を使って音声認識技術を用いた人工知能を有するデバイスを自作するための開発キット。ための開発キット。</p>
</div>
<div id="__asciidoctor-preview-478__" class="paragraph">
<p>AIYプロジェクトとは人工知能の機能を有するデバイスを開発キットを使って自作するというプロジェクト。</p>
</div>
<div id="__asciidoctor-preview-482__" class="paragraph">
<p>AIYはArtificial Intelligence(人工知能)、Yourself(自分自身の)の略。</p>
</div>
<div id="__asciidoctor-preview-486__" class="paragraph">
<p>Voice kit以外にも Vison kitという画像認識技術を使ったツールがある。</p>
</div>
<div id="__asciidoctor-preview-490__" class="paragraph">
<p><a href="https://aiyprojects.withgoogle.com" class="bare">https://aiyprojects.withgoogle.com</a></p>
</div>
<div id="__asciidoctor-preview-494__" class="paragraph">
<p>手順などは細かく書かず、参考サイトをざっくりと書くのみで、
注意点や用語の解説などが中心です。</p>
</div>
</div>
<div id="toc" class="toc">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#__">購入先</a></li>
<li><a href="#___2">組み立てるまで</a>
<ul class="sectlevel2">
<li><a href="#___3">始める前の注意点</a></li>
</ul>
</li>
<li><a href="#___4">デモを実行するためまで</a>
<ul class="sectlevel2">
<li><a href="#___5">始める前の注意点</a></li>
<li><a href="#___6">手順</a></li>
</ul>
</li>
<li><a href="#___7">用語</a>
<ul class="sectlevel2">
<li><a href="#_google_cloud_platform_gcp">Google Cloud Platform（GCP）</a></li>
<li><a href="#_google_assistant">Google Assistant</a></li>
<li><a href="#_google_assistant_sdk">Google Assistant SDK</a></li>
<li><a href="#___8">マイクロフォン</a></li>
<li><a href="#_hat">HAT</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="sect1">
<h2 id="__">購入先</h2>
<div class="sectionbody">
<div id="__asciidoctor-preview-512__" class="paragraph">
<p>下記から購入すると、ラズパイとセットになっているので楽。</p>
</div>
<div id="__asciidoctor-preview-518__" class="ulist">
<ul>
<li>
<p><a href="http://trendy.nikkeibp.co.jp/pcls/raspi/" class="bare">http://trendy.nikkeibp.co.jp/pcls/raspi/</a></p>
</li>
</ul>
</div>
<div id="__asciidoctor-preview-530__" class="paragraph">
<p>※ 2018/01/05 まで</p>
</div>
<div id="__asciidoctor-preview-536__" class="ulist">
<ul>
<li>
<p><a href="https://raspberry-pi.ksyic.com/main/index" class="bare">https://raspberry-pi.ksyic.com/main/index</a></p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="___2">組み立てるまで</h2>
<div class="sectionbody">
<div id="__asciidoctor-preview-572__" class="paragraph">
<p>下記のサイトが参考になる。</p>
</div>
<div id="__asciidoctor-preview-576__" class="paragraph">
<p><a href="https://yuki-no-yabo.com/how-to-make-google-aiy-voice-kit/" class="bare">https://yuki-no-yabo.com/how-to-make-google-aiy-voice-kit/</a></p>
</div>
<div class="sect2">
<h3 id="___3">始める前の注意点</h3>
<div id="__asciidoctor-preview-606__" class="ulist">
<ul>
<li>
<p>ガッツリハマるので、一度取り付けるとraspberry PiからVoice kitを取り外すのは困難</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="___4">デモを実行するためまで</h2>
<div class="sectionbody">
<div id="__asciidoctor-preview-652__" class="paragraph">
<p>下記のサイトが参考になる。</p>
</div>
<div id="__asciidoctor-preview-656__" class="paragraph">
<p><a href="https://kureuetan.com/web/iot/4404/" class="bare">https://kureuetan.com/web/iot/4404/</a></p>
</div>
<div class="sect2">
<h3 id="___5">始める前の注意点</h3>
<div id="__asciidoctor-preview-686__" class="ulist">
<ul>
<li>
<p>「OK, Google」のイントネーションが悪いと反応しないので、注意
※「オーケィ、グーグゥ」みたいな感じだと反応するはず</p>
</li>
<li>
<p>利用環境のバージョンによってはデモプログラム(assistant_library_demo.py)が動作しない可能性がある
※ assistant_library_with_button_demo.py(ボタンで反応するデモプログラム)の方を動かした方がいい</p>
</li>
<li>
<p>2017/12/20にGoogle Assistant SDKの日本語対応が実施されましたが、初心者がいきなり実施すると挫折しそうなので
情報が集まるまでまったほうがいいかも</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="___6">手順</h3>
<div id="__asciidoctor-preview-752__" class="olist arabic">
<ol class="arabic">
<li>
<p>GCP (Googleのクラウドサービス) にアクセス</p>
</li>
<li>
<p>GCPでプロジェクトを新規作成</p>
</li>
<li>
<p>作成したプロジェクトでGoogle Assistant APIを有効化</p>
</li>
<li>
<p>APIの認証情報ファイル(json)をダウンロード</p>
</li>
<li>
<p>AIY付属のデモプログラムの実行</p>
</li>
</ol>
</div>
<div id="__asciidoctor-preview-842__" class="listingblock">
<div class="content">
<pre class="highlights editor-colors lang-bash"><div class="line"><span class="syntax--source syntax--shell"><span class="syntax--keyword syntax--operator syntax--glob syntax--shell"><span>*</span></span><span> pythonのバージョンを2.7.x系 =</span><span class="syntax--keyword syntax--operator syntax--redirect syntax--shell"><span>&gt;</span></span><span> 3.x.x系に切り替え</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>/home/pi/bin/AIY-voice-kit-shell.sh</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span> </span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span class="syntax--keyword syntax--operator syntax--glob syntax--shell"><span>*</span></span><span> Google Assitant SDKとGoogle API認証ツールのバージョンアップ</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>pip install --upgrade google-assistant-sdk</span><span class="syntax--meta syntax--scope syntax--logical-expression syntax--shell"><span class="syntax--punctuation syntax--definition syntax--logical-expression syntax--shell"><span>[</span></span><span>samples</span><span class="syntax--punctuation syntax--definition syntax--logical-expression syntax--shell"><span>]</span></span></span><span> google-auth-oauthlib</span><span class="syntax--meta syntax--scope syntax--logical-expression syntax--shell"><span class="syntax--punctuation syntax--definition syntax--logical-expression syntax--shell"><span>[</span></span><span>tool</span><span class="syntax--punctuation syntax--definition syntax--logical-expression syntax--shell"><span>]</span></span></span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span> </span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span class="syntax--keyword syntax--operator syntax--glob syntax--shell"><span>*</span></span><span> 先述の手順でDLした認証情報ファイル</span><span class="syntax--meta syntax--scope syntax--subshell syntax--shell"><span class="syntax--punctuation syntax--definition syntax--subshell syntax--shell"><span>(</span></span><span>json</span><span class="syntax--punctuation syntax--definition syntax--subshell syntax--shell"><span>)</span></span></span><span>をraspberry Piに移す</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>※ ファイル名が長いので、cpで適当な長さのファイル名のファイルを複製したほうがいい</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>cp -pi /home/pi/clinet-</span><span class="syntax--keyword syntax--operator syntax--glob syntax--shell"><span>*</span><span>*</span><span>*</span><span>*</span></span><span>.json /home/pi/assistant.json</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>ls -l /home/pi/</span><span class="syntax--keyword syntax--operator syntax--glob syntax--shell"><span>*</span></span><span>json</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span> </span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span class="syntax--keyword syntax--operator syntax--glob syntax--shell"><span>*</span></span><span> 認証情報ファイル</span><span class="syntax--meta syntax--scope syntax--subshell syntax--shell"><span class="syntax--punctuation syntax--definition syntax--subshell syntax--shell"><span>(</span></span><span>json</span><span class="syntax--punctuation syntax--definition syntax--subshell syntax--shell"><span>)</span></span></span><span>を使って、Google API認証の実施</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>    --save \</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>    --headless \</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>    --client-secrets /home/pi/assistant.json</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span> </span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span class="syntax--keyword syntax--operator syntax--glob syntax--shell"><span>*</span></span><span> 実行後に出力されたURLにWebブラウザでアクセス</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>APIの認証を求められるので、自分のGoogleのアカウントでログインして許可</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span> </span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span class="syntax--keyword syntax--operator syntax--glob syntax--shell"><span>*</span></span><span> デバイス登録</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>googlesamples-assistant-devicetool register-model --manufacturer </span><span class="syntax--string syntax--quoted syntax--double syntax--shell"><span class="syntax--punctuation syntax--definition syntax--string syntax--begin syntax--shell"><span>"</span></span><span>Assistant SDK developer</span><span class="syntax--punctuation syntax--definition syntax--string syntax--end syntax--shell"><span>"</span></span></span><span> \</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>    --product-name </span><span class="syntax--string syntax--quoted syntax--double syntax--shell"><span class="syntax--punctuation syntax--definition syntax--string syntax--begin syntax--shell"><span>"</span></span><span>Assistant SDK light</span><span class="syntax--punctuation syntax--definition syntax--string syntax--end syntax--shell"><span>"</span></span></span><span> \</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>    --type LIGHT \</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>    --model raspberry-b3</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span> </span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>※ raspberry-b3の部分はGCPの</span><span class="syntax--string syntax--quoted syntax--double syntax--shell"><span class="syntax--punctuation syntax--definition syntax--string syntax--begin syntax--shell"><span>"</span></span><span>プロジェクトID-デバイスモデル名</span><span class="syntax--punctuation syntax--definition syntax--string syntax--end syntax--shell"><span>"</span></span></span><span> にすることが推奨されている</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span> </span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span class="syntax--keyword syntax--operator syntax--glob syntax--shell"><span>*</span></span><span> デモの実行</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>python /home/pi/AIY-voice-kit-python/src/assistant_library_with_button_demo.py</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>※ ボタンを押すか、「オーケィ、グーグゥ」と話すとランプが点灯</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>※ イントネーションが悪いと反応しないので、注意</span></span>
</div><div class="line"><span class="syntax--source syntax--shell"><span>※ その後、英語で話かけると英語で返答をしてくれる</span></span>
</div></pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="___7">用語</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_google_cloud_platform_gcp">Google Cloud Platform（GCP）</h3>
<div id="__asciidoctor-preview-878__" class="paragraph">
<p>Googleが使用するデータセンターやネットワーク設備などの基盤(インフラストラクチャ)、
機械学習やデータ分析などのサービスをオンデマンド(利用した量に応じて料金を支払う形式)で利用できるクラウドサービス。</p>
</div>
<div id="__asciidoctor-preview-882__" class="paragraph">
<p>いわゆる3大クラウド(Microsoft Azure, Amazon Web Service, Google Cloud Platform)の一つ。</p>
</div>
<div id="__asciidoctor-preview-886__" class="paragraph">
<p><a href="https://console.cloud.google.com" class="bare">https://console.cloud.google.com</a></p>
</div>
</div>
<div class="sect2">
<h3 id="_google_assistant">Google Assistant</h3>
<div id="__asciidoctor-preview-902__" class="paragraph">
<p>Googleが提供するAIによる支援技術の総称。
文字および音声認識により、AIとの対話ができる。</p>
</div>
<div id="__asciidoctor-preview-906__" class="paragraph">
<p>Google Homeや、Android端末のアプリで利用されている。</p>
</div>
<div id="__asciidoctor-preview-910__" class="paragraph">
<p>音楽を再生する、Google検索で検索を行う、Gmailでメールを送る、
Googleカレンダーでスケジュールを確認する、
Googleマップで経路を表示するといったことをAIを通して行うことができる。</p>
</div>
<div class="sect3">
<h4 id="_google_assistant_api">Google Assistant API</h4>
<div id="__asciidoctor-preview-926__" class="paragraph">
<p>Google Assistantの機能を提供するためのAPI。</p>
</div>
<div id="__asciidoctor-preview-930__" class="paragraph">
<p>GCPのサービスの一つ。</p>
</div>
</div>
<div class="sect3">
<h4 id="_api">API</h4>
<div id="__asciidoctor-preview-944__" class="paragraph">
<p>あるアプリケーションの機能を、別のアプリケーションで利用する際に守る決まりごと、手順。</p>
</div>
<div id="__asciidoctor-preview-954__" class="exampleblock">
<div class="content">
<div id="__asciidoctor-preview-958__" class="paragraph">
<p>■ 例</p>
</div>
<div id="__asciidoctor-preview-962__" class="paragraph">
<p>ユーザIDを●●●、パスワードを○○○で渡すとWebサービス ■■■の機能を利用できる。</p>
</div>
</div>
</div>
</div>
<div class="sect3">
<h4 id="_oauth">OAuth</h4>
<div id="__asciidoctor-preview-976__" class="paragraph">
<p>アプリケーションの機能を、APIを介して別のアプリケーション提供する際に、
APIの利用を許可するアプリケーションを認証する仕組みの標準仕様。</p>
</div>
<div id="__asciidoctor-preview-980__" class="paragraph">
<p>悪意のあるアプリケーションがAPIを利用することを防ぐため、
正常なアプリケーションのみ利用を許可し、利用が許可されたアプリケーションのみ、
APIを利用可能にする。</p>
</div>
<div id="__asciidoctor-preview-984__" class="paragraph">
<p>クライアントアプリケーション(APIを利用するアプリケーション)はAPIの利用を許可してもらうため、
アクセストークン(認証情報)を要求する。</p>
</div>
<div id="__asciidoctor-preview-988__" class="paragraph">
<p>利用される側のアプリケーションはクライアントアプリケーションに問題がないことを確認した後に、
アクセストークン(認証情報)を発行し、クライアントアプリケーションに渡す。</p>
</div>
<div id="__asciidoctor-preview-992__" class="paragraph">
<p>APIを利用時にアクセストークンを使って、許可されたアプリケーションの識別を行う。</p>
</div>
<div id="__asciidoctor-preview-996__" class="paragraph">
<p><a href="https://blog.codecamp.jp/api" class="bare">https://blog.codecamp.jp/api</a></p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_google_assistant_sdk">Google Assistant SDK</h3>
<div id="__asciidoctor-preview-1016__" class="paragraph">
<p>マイクやスピーカーを備えたデバイスにGoogle Assistantの機能を実装するための開発キット</p>
</div>
</div>
<div class="sect2">
<h3 id="___8">マイクロフォン</h3>
<div id="__asciidoctor-preview-1044__" class="paragraph">
<p>いわゆるマイクで、音を電気信号に変換する機器。</p>
</div>
</div>
<div class="sect2">
<h3 id="_hat">HAT</h3>
<div id="__asciidoctor-preview-1058__" class="paragraph">
<p>Hardware Attached on Topの頭字語。
Raspberry Piを簡単に機能拡張できるようにするためのアドオンボード。</p>
</div>
</div>
</div>
</div>