技適通ってなくてもAlexaを使ってみる Mac編

前回の Raspberry Pi 編に続いて、Mac 編です。Echo が手に入らなくても、「あれくさー!」と話しかけられる Alexa Voice Serivce を Mac にインストールしてみました。

事前準備

Amazon開発者ポータルのアカウント

Amazon開発者ポータル でアカウントが必要です。AmazonアプリストアにAndroid向けアプリを公開している場合など、すでにアカウント開設済みの場合は、既存のものが使えます。無償で開設できますので、持ってない場合は、サインアップしておきます。

MacBook はラズパイと違ってマイクもスピーカーも付いてますから、本体以外には用意しなくていいのが楽です。

Alexa Voice Service への登録

Amazon開発者ポータルに入って、Alexa Voice Service へ行き、今回インストールする Mac を予め登録しておきます。

amazon-developer-portal-alexa

右上 “Register Product” から “Device” をクリック

create-new-device

Device Type Info セクションで、Device Type ID、Display Name を入力。Device Type ID は半角英数とエンダースコアのみ使えます。

create-new-device2

Next をクリックし、Security Profile セクションへ。セレクトボックスから”Create a new profile” を選択し、Security Profile Name と Security Profile Description を入力。

create-new-device-security-profile

Next をクリックすると Client ID、Client Secret が生成されるのでこれをコピペしておきます。

“Web Settings” タブをクリックし、
Allowed Origin, Allowed Return URLs へそれぞれ、
https://localhost:3000
https://localhost:3000/authresponse
を指定します。

create-new-device-security-profile2

Device Type ID、Client ID、Client Secretをテキストファイルなどにコピペしておきます。

VLCのインストール

VLC Media Player をまずはインストール。

.bashrc や .zshrc へ👇2つの環境変数の追加

# Environment variables for Alexa Voice Service
export VLC_PATH=/Applications/VLC.app/Contents/MacOS/lib
export VLC_PLUGIN_PATH=/Applications/VLC.app/Contents/MacOS/plugins
source .zshrc

もしくはターミナルの再起動で新しい環境変数を読み込みます。

Node.jsのインストール

MacPortsやHomeBrewでインストールするのが楽ちん

JDKのインストール

JDKはバージョン8以上が必要。インストールされてない場合はOracleのサイト、JDKのページからダウンロードしてインストールしましょう。

ターミナルから

java -version

でインストールされているJDKのバージョン確認できます。

Mavenのインストール

MacPortsやHomeBrewでインストールするのが楽ちんですが、マニュアルで入れたい場合はこちら

リポジトリのクローン

cd
git clone https://github.com/alexa/alexa-avs-sample-app.git

自己署名証明書(Self-Signed Certificate)を作る

homebrew, MacPorts などで OpenSSLをインストール

alexa-avs-sample-app/samples/javaclient/ssl.cnf ファイルを開き、
countryName, stateOrProvinceName, localityName, organizationName, OrganizationalUnitName
の値を適宜更新します。countryNameは2文字のISO国名コードを指定。日本ならJP。それ以外の値は適当に。

ss.cnf

generate.sh ファイルを実行して自己署名付き証明書を生成します。

chmod  x generate.sh
./generate.sh

generate.sh を実行中に入力を求められます。
productID は Device Type ID
Serial number はなんでもいいのですが、後ほど必要になるので、覚えやすいもの。123456 とか。
Passphrase は忘れないように。無指定(ブランク)も可能です。
generate.shが無事終了すると自己署名証明書が生成されます。

alexa-avs-sample-app/samples/companionService/config.js を開き、

clientId Amazon開発者ポータルのAlexa Voice Serviceで登録したClient ID
clientSecret Amazon開発者ポータルのAlexa Voice Serviceで登録したClient Secret
sslKey samples/javaclient/certs/server/node.key
sslCert samples/javaclient/certs/server/node.crt
sslCaCert samples/javaclient/certs/ca/ca.crt

products
    👆で登録したDevice Type ID: シリアルナンバー

を指定します。

config.js

alexa-avs-sample-app/Samples/javaclient/config.json を開き、

productId  👆で登録したDevice Type ID
dsn  シリアルナンバー
provisioningMethod  companionService

companionApp
    sslKeyStore  alexa-avs-sample-app/samples/javaclient/certs/server/jetty.pkcs12
    sslKeyStorePassphrase generate.shで入力したパスフレーズ

companionService
    sslClientyKeyStore alexa-avs-sample-app/samples/javaclient/certs/client/client.pkcs12
    sslClientKeyStorePassphrase generate.shで入力したパスフレーズ
    sslCaCert alexa-avs-sample-app/samples/javaclient/certs/ca/ca.crt

config.json

ファイルの指定はフルパスです。

テキストフィアルをゴニョゴニョと面倒ですが、設定はココで終わり。あとは起動するだけです。

Alexa Voice Service の起動

ターミナルウィンドウを開いて

cd ./alexa-avs-sample-app/samples/companionService
npm install #最初の一度だけ
npm start

新しいターミナルを開き、

cd ./alexa-avs-sample-app/samples/javaclient
mvn validate #一度だけ
mvn install #これも一度だけ
mvn exec:exec

javaclient-popup

すべたがうまくいくと、ポップアップウィンドウが開き、ブラウザ経由で認証するよう求められ、Amazon開発者ポータルのユーザ名とパスワードで認証が完了すると、”device tokens ready” と表示され、

token-ready

Javaのアプリケーションが開き、めでたくAlexa Voice Serviceの起動が完了です。マイクのアイコンを押すと音声認識が始まります。

Alexa_Voice_Service_Client


参考文献

Github: Amazon Alexa Voice Serivce Sample App

Amazon Voice Service Sample App Get Started (Mac) 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s