LoginSignup
10

More than 5 years have passed since last update.

Raspberry Pi2 で Alexaに話してみる

Posted at

はじめに

Amazon Echoが気になって、「Amazon Echo Alexa」とかで検索してると
たまたま、Raspberry Pi2でも作れるということで、せっかくなので、作ってみたいと思い、
マイクとスピーカーを買って作ってみました。
実は、これを書くまでに1度失敗してます。何が失敗だったのか分からないくらいいじりすぎたので、
もう一度、さらからやりなおすことに。
そこで、メモしたので、ログ残しします。

参考文献

参考にしたのは、ここここ

今回準備したもの

  • Raspberry Pi2(Model B)
  • TaoTronics Bluetooth 4.0 ポータブルスピーカー A2DP対応 (ブラック)TT-SK05
  • iBUFFALO マイクロフォン USB音源 ブラック BSHSM05BK
  • BUFFALO 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル WLI-UC-GNM2

Raspberry Pi2のイメージ

  • 2016-03-18-raspbian-jessie.zip

前提条件

  • Raspberry Pi2は起動する状態であること
  • 無線LANの設定が終わってること(通信できる状態であること、ここでは仮にIPアドレスを「192.168.0.10」とします)

ここから設定開始

SSHでログイン

次のコマンドを実行して、Raspberry Pi2にログインする。
ssh pi@<Raspberry Pi2のIPアドレス>

VNC Serverのインストール

次のコマンドを実行して、VNC Serverをインストールします。
sudo apt-get install tightvncserver

VNC Serverの設定

VNC Serverが自動起動してくるように設定します。
cd /home/pi/.config
mkdir autostart
cd autostart
vi tightvnc.desktop
でファイルを作成していきます。

[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1
StartupNotify=false

ここで、リブートします。
sudo reboot

Raspberry Pi2にVNCで接続

Finder→移動→サーバへ接続
を選択して、「vnc://192.168.0.10:5901」を入力し、「接続」ボタンをクリック

VLCのインストール

次のコマンドを実行して、VLCをインストールします。
sudo apt-get install vlc-nox vlc-data
sudo echo export LD_LIBRARY_PATH=/usr/lib/vlc > ~/.bashrc
sudo echo export VLC_PLUGIN_PATH=/usr/lib/vlc/plugins > ~/.bashrc

Node.jsインストール

次のコマンドを実行して、Node.jsをインストールします。
sudo apt-get update
sudo apt-get upgrade
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install nodejs

Java8のインストール

※2016/06/06時点でのJavaです。
以下のURLからJava SE Development Kit 8u91をダウンロードする
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

次のコマンドを実行して、Java8をインストールします。
sudo tar zxvf jdk-8u77-linux-arm32-vfp-hflt.tar.gz -C /opt
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_77/bin/javac 1
sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_77/bin/java 1
sudo update-alternatives --config javac
sudo update-alternatives --config java

Mavenのインストール

※2016/06/06時点でのMavenです。
以下のURLからApache Maven 3.3.9をダウンロードする
https://maven.apache.org/download.cgi

次のコマンドを実行してMavenをインストールします。
sudo tar zxvf apache-maven-3.3.9-bin.tar.gz -C /opt
sudo echo export M2_HOME=/opt/apache-maven-3.3.9 > ~/.bashrc
sudo echo export PATH=$PATH:$M2_HOME/bin > ~/.bashrc

Alexa Voice Serviceの用意(その1 : Product登録とセキュリティプロファイルの作成)

ここはこのまま参考元のページの手順を実施すればOKです。
https://github.com/amzn/alexa-avs-raspberry-pi
このURLの「3 - Getting started with Alexa Voice Service」に書かれてる
以下の章を実行してください。
- Register for a free Amazon Developer Account
- Register your product and create a security profile.

注意点としては
- amazon.comにアカウントを作っておくこと
これくらいです。

Alexa Voice Serviceの用意(その2 : Raspberry Pi2 へのプログラム展開

以下のURLからAlexa Voice ServiceのサンプルアプリZIPをダウンロードします。
https://github.com/amzn/alexa-avs-raspberry-pi/archive/master.zip

ZIPを解凍し、/opt配下にコピーする
(以降、/opt/alexa-avs-raspberry-pi*フォルダを<< REFERENCE_IMPLEMENTATION >>とします)

OpenSSLのインストール

次のコマンドを実行して、OpenSSLをインストールします。
sudo apt-get install openssl

オレオレ証明書作成準備

次のコマンドを実行して、ファイルを開きます。
vi << REFERENCE_IMPLEMENTATION >>/samples/javaclient/ssl.cnf

で以下の内容のように修正してください。

commonName = $ENV::COMMON_NAME
countryName = JP
stateOrProvinceName = Osaka
localityName = OsakaCity
organizationName = raspi
organizationalUnitName = alexa

※「countryName」は「JP」にしてください。

オレオレ証明書の作成

次のコマンドを実行して、オレオレ証明書を作成します。

cd << REFERENCE_IMPLEMENTATION >>/samples/javaclient
chmod +x generate.sh
./generate.sh

実行してる時に、いくつか入力待ちになるので、以下を入力します。
「Product ID」には、「3.4」で入力した「Device Type ID」を入れる
「Serial Number」には、「123456」と固定で入れてください(もし入力を変えた場合は、ちゃんと覚えておいてください)
「Password for Keystores」には何も入れずにEnterキーを押してください(もし入力を変えた場合は、ちゃんと覚えておいてください)

config.jsの更新

<< REFERENCE_IMPLEMENTATION >>/samples/companionService/config.jsを開いて、以下を更新してください。

sslKey: '/opt/alexa-avs-raspberry-pi/samples/javaclient/certs/server/node.key',
sslCert: '/opt/alexa-avs-raspberry-pi/samples/javaclient/certs/server/node.crt',
sslCaCert: '/opt/alexa-avs-raspberry-pi/samples/javaclient/certs/ca/ca.crt',

config.jsonの更新

<< REFERENCE_IMPLEMENTATION >>/samples/javaclient/config.jsonを開いて、以下を更新してください。

{
    "productId":"",
    "dsn":"",
    "provisioningMethod":"",
    "companionApp":{
        "localPort":8443,
        "sslKeyStore":"<< REFERENCE_IMPLEMENTATION >>/samples/javaclient/certs/server/jetty.pkcs12",
        "sslKeyStorePassphrase":"",
        "lwaUrl":"https://api.amazon.com"
    },
    "companionService":{
        "serviceUrl":"https://localhost:3000",
        "sslClientKeyStore":"<< REFERENCE_IMPLEMENTATION >>/samples/javaclient/certs/client/client.pkcs12",
        "sslClientKeyStorePassphrase":"",
        "sslCaCert":"<< REFERENCE_IMPLEMENTATION >>/samples/javaclient/certs/ca/ca.crt"
    }
}

※「sslKeyStorePassphrase」は「オレオレ証明書の作成」の「Password for Keystores」と同じ

依存関係のインストール

以下のコマンドを実行して、依存関係のインストールをします。

cd << REFERENCE_IMPLEMENTATION >>/samples/companionService
npm install

セキュリティファイルの有効

ここはこのまま参考元のページの手順を実施すればOKです。
https://github.com/amzn/alexa-avs-raspberry-pi
このURLの「6 - Enable Security Profile」に書かれてる

コンフィグファイルの更新

ここはこのまま参考元のページの手順を実施すればOKです。
https://github.com/amzn/alexa-avs-raspberry-pi
このURLの「7 - Updating the config files」に書かれてる

サーバの起動

Terminalを起動し、次のコマンドを実行し、サーバを起動します

cd << REFERENCE_IMPLEMENTATION >>/samples/companionService
npm start

クライアントの起動

Terminalを起動し、次のコマンドを実行し、クライアントを起動します。

cd <REFERENCE_IMPLEMENTATION>/samples/javaclient 
mvn validate
mvn install
mvn exec:exec

Amazon.comへのログインと承認

ここはこのまま参考元のページの手順を実施すればOKです。
https://github.com/amzn/alexa-avs-raspberry-pi
このURLの「10 - Obtain Authorization from Login with Amazon」に書かれてる

Alexaとお話し。

「Start Listening」ボタンを押して、話してみてください。
いいお友達になれると思います。
僕はいろいろ話してみました。が、ご理解いただけないこともしばしば。
発音が悪かったんですね。精進します。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10