前々回の 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” をクリック
Device Type Info セクションで、Device Type ID、Display Name を入力。Device Type ID は半角英数とエンダースコアのみ使えます。
Next をクリックし、Security Profile セクションへ。Security Profile Name と Security Profile Description を入力。
Next をクリックすると Client ID、Client Secret が生成されるのでこれをコピペしておきます。
“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。それ以外の値は適当に。
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: ["シリアルナンバー"]
を指定します。
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
ファイルは絶対パスで指定します。パスの区切り文字をエスケープしたりと、テキストフィアルゴニョゴニョと面倒ですが、設定はココで終わり。あとは起動するだけです。
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
すべたがうまくいくと、ポップアップウィンドウ👇が開き、
ブラウザ経由で認証するよう求められ、Amazon開発者ポータルのユーザ名とパスワードで認証が完了すると、Javaのアプリケーションが開き、めでたくAlexa Voice Serviceの起動が完了です。マイクのアイコンをクリックすると音声認識が始まります。