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

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

事前準備

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

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

Alexa Voice Service への登録

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

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

amazon-developer-portal-alexa

create-new-device

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

create-new-device2

Next をクリックし、Security Profile セクションへ。Security Profile Name と Security Profile Description を入力。

create-new-device-security-profile

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

create-new-device-security-profile2

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

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

VLCのインストール

VLC Media Player をまずはインストール。32-bit 版と64-bit 版があるので、自分のマシンのアーキテクチャに合ったVLCをインストール。

VLCのインストールパスを環境変数VLC_PATHとして追加👇 パスに空白があるとうまく動いてくれないので、空白のないパスを指定。VLC をデフォルトでインストールすると、インストール先ディレクトリへのパスは C:\Progra~1\VideoLAN\VLC です。

Node.jsのインストール

Node公式サイトからインストーラーをダウンロードしてインストール。

JDKのインストール

JDKはバージョン8以上が必要。インストールされてない場合はOracleのサイト、JDKのページからダウンロードしてインストール。32-bit と 64-bit を間違えないように。👆でインストールした VLC と合ってないと動かないです(ココハマりました)

Mavenのインストール

公式サイトからダウンロード。

リポジトリのクローン

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

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

Win32 OpenSSLプロジェクト からOpenSSLをインストール

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

ssl.cnf

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

generate.bat

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

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\\sample\\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

ブラウザ経由で認証するよう求められ、Amazon開発者ポータルのユーザ名とパスワードで認証が完了すると、Javaのアプリケーションが開き、めでたくAlexa Voice Serviceの起動が完了です。マイクのアイコンをクリックすると音声認識が始まります。

javaclient-main


参考文献

Github: Alexa Voice Service Sample App

Amazon Voice Service Sample App Get Started (Windows) 

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 )

Google+ photo

You are commenting using your Google+ 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 )

Connecting to %s