11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

11
10
0

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
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?