• 忘れないようにいろいろ書きます。

    家をスマートハウス化すべく、まずはラズパイにAlexaをインストールする。

    まず、注意点としてRaspbian Liteではなくデスクトップ版のRaspbianを使うこと。

    作業の途中でラズパイからブラウザでAlexa関連の設定をする必要あり。

    Raspbian LiteでWebブラウザを使用する方法がわからず、

    結局自分は、デスクトップ版のRaspbianを入れ直した。

    また、ブラウザを使用するため今回はSSH接続ではなく、VNCViwerを使ってリモートデスクトップで設定を行っていく。

    Raspbian Liteを入れ直したばっかりだったのに・・・

     

    1. リモートデスクトップ環境の整備

    このサイトを参考にやってみた。

    Raspbianには最初からVNCソフトがインストールされているようで、設定でVNCをオンにする。

    あとは、Windows PCのほうにVNCViwerをインストールするだけでOK。

    インストールしたらラズパイのIPアドレスを入力し、ラズパイのアカウントとパスワードを入力すればリモートデスクトップ操作ができる。

    思ったより簡単にできてよかった。

     

    2. AVS Device SDKのインストール

    2.1. どのプロトタイプを使うか

    ラズパイにAlexaを入れる方法には何パターンかあるらしい。

    alexa-avs-sample-appでやる方法とavs-device-sdkでやる方法。

    公式ページのこのページからのリンクは、alexa-avs-sample-appだが、

    このページからのリンクは、avs-device-sdkになってる。

    公式ページからするとalexa-avs-sample-appはとりあえず触ってみたい人向け、

    avs-device-sdkはこれから実際に開発する人向けということだろうか。。。

    なんかよくわからんけどavs-device-sdkがいいらしいのでこっちでやってみる。

    Alexaインストールにあたって参考にしたサイトは以下の二つ。

    Raspberry PiにAlexaを召喚する3つの方法

    Alexa Voice Service (AVS) のAVS Device SDKをRaspberry Piにインストールしてみた

     

    2.2. Amazon Developerに登録

    Alexaを使うにはAmazon Developerに登録する必要がある。

    参考になるサイトがあった気がするがメモり忘れた。

    このページにあるように許可された出荷地と許可された返品 URLはそれぞれ次のように記載する。

    http://localhost:3000

    http://localhost:3000/authresponse

    登録した時に貰える下の3つのIDは、この後の「avs-device-sdkのインストール」で落としてきたconfig.txtに記載する。

    • Client ID
    • Client Secret
    • Product ID

     

     

    2.3. avs-device-sdkのインストール

    基本的にこのページの記載の通りにやるだけ。

    /home/pi/avs-src ディレクトリにファイル一式をインストールしていくことにする。

    sudo mkdir avs-src
    cd /home/pi/avs-src

    /home/pi/avs-srcにsetup.shとconfig.txtをダウンロード。

    sudo wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/RaspberryPi/setup.sh &&sudo wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/RaspberryPi/config.txt

    config.txtに”Client ID”、”Client Secret”、”Product ID”を書いて下のコマンドでビルド開始。

    sudo bash setup.sh config.txt

    最初になんかに同意しろと言われるので、AGREEとタイプしてエンター。

    途中ライセンスが表示されるのでエンターを押しっぱなしで最後まで表示する。

    同意するかyes or noで聞かれるのでyesとタイプしてエンター。

     

    ビルドがおわったら以下のコマンドでリフレッシュトークンを取得する。

    sudo bash startauth.sh

    URLが表示されるので、chromeなどのブラウザで開くとAmazonのログイン画面が表示される。
    (最初Raspbian Liteでやってここで詰んだ)

    開発者アカウントでログインする。

    成功みたいな画面が表示されたらchromeを閉じて、ターミナルで以下のコマンドを実行すればAlexaとご対面。

    sudo bash startsample.sh

    デフォルトは英語だが、ターミナルでc→1→6と入力すれば日本語になる。

     

    以下ハマった点。

    (2018.02.25追記)
    一度Sensoryでビルドすると簡単にSnowboyに変更できないっぽい。
    後述のマイク感度の調整をする場合は、最初から下の2.4の手順をやったほうがいいかも。
    Sensoryでビルドしてしまった場合はファイルをすべて削除して初めからやったほうがいい。
    はじめてやったときは、たまたま後からSnowboyに変更できたけど、なぜできたか不明。
    やり直す場合は、sudo bash setup.sh config.txtを実行する前に、必ず後述の”■setup.shの書き換え”を行うこと。
    後の設定は後からでもできる。

     

    2.4. マイク感度の調整

    デフォルトのマイク感度だと結構でかい声じゃないと反応してくれない。

    上の参考サイトにもあったようにデフォルトのavs-device-sdkだとマイク感度の調整ができない(2018/2現在)ので、

    修正したところだけ書き留めておく。

    Sensoryで一度ビルドしてしまったら、フォルダごとすべて削除して2.3の最初からやり直したほうがいい。

    ■snowboyと依存パッケージ

    /home/pi/avs-src/third-partyにsnowboyをダウンロード。third-partyディレクトリはあらかじめmkdirで自分で作る。

    cd /home/pi/avs-src/third-party && sudo git clone https://github.com/Kitt-AI/snowboy.git

    依存ライブラリのインストール。

     sudo apt-get install libatlas-base-dev

     

    ■setup.shの書き換え(ビルドする前に必ず書き換える。これ重要。

    # make the SDK
     echo
     echo "==============> BUILDING SDK =============="
     echo
    
    cd $BUILD_PATH
     cmake "$SOURCE_PATH/avs-device-sdk" \
     -DSENSORY_KEY_WORD_DETECTOR=ON \
     -DSENSORY_KEY_WORD_DETECTOR_LIB_PATH="$THIRD_PARTY_PATH/alexa-rpi/lib/libsnsr.a" \
     -DSENSORY_KEY_WORD_DETECTOR_INCLUDE_DIR="$THIRD_PARTY_PATH/alexa-rpi/include" \
     -DGSTREAMER_MEDIA_PLAYER=ON -DPORTAUDIO=ON \
     -DPORTAUDIO_LIB_PATH="$THIRD_PARTY_PATH/portaudio/lib/.libs/libportaudio.a" \
     -DPORTAUDIO_INCLUDE_DIR="$THIRD_PARTY_PATH/portaudio/include" \
     -DACSDK_EMIT_SENSITIVE_LOGS=ON \
     -DCMAKE_BUILD_TYPE=DEBUG

    ↓書き換え

    # make the SDK
     echo
     echo "==============> BUILDING SDK =============="
     echo
    
    cd $BUILD_PATH
     cmake "$SOURCE_PATH/avs-device-sdk" \
     -DKITTAI_KEY_WORD_DETECTOR=ON \
     -DKITTAI_KEY_WORD_DETECTOR_LIB_PATH="$THIRD_PARTY_PATH/snowboy/lib/rpi/libsnowboy-detect.a" \
     -DKITTAI_KEY_WORD_DETECTOR_INCLUDE_DIR="$THIRD_PARTY_PATH/snowboy/include" \
     -DGSTREAMER_MEDIA_PLAYER=ON -DPORTAUDIO=ON \
     -DPORTAUDIO_LIB_PATH="$THIRD_PARTY_PATH/portaudio/lib/.libs/libportaudio.a" \
     -DPORTAUDIO_INCLUDE_DIR="$THIRD_PARTY_PATH/portaudio/include" \
     -DACSDK_EMIT_SENSITIVE_LOGS=ON \
     -DCMAKE_BUILD_TYPE=DEBUG

    もう一か所

    cat << EOF > "$START_SCRIPT"
    cd "$BUILD_PATH/SampleApp/src"
    
    ./SampleApp "$CONFIG_FILE" "$THIRD_PARTY_PATH/alexa-rpi/models" DEBUG9
    EOF

    ↓書き換え

    cat << EOF > "$START_SCRIPT"
    cd "$BUILD_PATH/SampleApp/src"
    
    ./SampleApp "$CONFIG_FILE" "$THIRD_PARTY_PATH/snowboy/resources" DEBUG9
    EOF

    ■/home/pi/avs-src/avs-device-sdk/KWD/KittAi/src/KittAiKeyWordDetector.cppの修正

     m_maxSamplesPerPush{(audioFormat.sampleRateHz / HERTZ_PER_KILOHERTZ) * msToPushPerIteration.count()} {

    ↓書き換え

     m_maxSamplesPerPush{(audioFormat.sampleRateHz / HERTZ_PER_KILOHERTZ) * static_cast<unsigned int>(msToPushPerIteration.count())}{

    ■/home/pi/avs-src/avs-device-sdk/build/cmake/BuildOptions.cmakeの修正

    # Set up the compiler flags.
     set(CMAKE_CXX_STANDARD 11)
     set(CMAKE_CXX_STANDARD_REQUIRED ON)
     set(CMAKE_CXX_EXTENSIONS OFF)

    ↓追加

    # Set up the compiler flags.
     add_definitions (-D_GLIBCXX_USE_CXX11_ABI=0)
     set(CMAKE_CXX_STANDARD 11)
     set(CMAKE_CXX_STANDARD_REQUIRED ON)
     set(CMAKE_CXX_EXTENSIONS OFF)

     

    ■マイク感度調整

    /home/pi/avs-src/avs-device-sdk/SampleApp/src/SampleApplication.cppの以下の個所を変更すると感度を調整できるらしい。

    /// The sensitivity of the Kitt.ai engine.
    static const double KITT_AI_SENSITIVITY = 0.60;
    
    /// The audio amplifier level of the Kitt.ai engine.
    static const float KITT_AI_AUDIO_GAIN = 2.0;

    ↓自分の環境では下のように修正。

    //// The sensitivity of the Kitt.ai engine. 
    static const double KITT_AI_SENSITIVITY = 0.95;
    
    /// The audio amplifier level of the Kitt.ai engine.
    static const float KITT_AI_AUDIO_GAIN = 0.5;

     

    ■再ビルド

    以下のコマンドで再度ビルド。

    sudo bash setup.sh config.txt

    ビルドし直すと認証が解除されるので再度下のコマンドを実行してから、ブラウザで認証を通すのを忘れずに。

    sudo bash startauth.sh

     

    ■注意(2018.02.25追記)

    この状態でstartsample.shを実行すると、alexa.umdlがthird-party/snowboy/resourcesにねーぞと言われる。

    alexa.umdlはthird-party/snowboy/resources/alexa/alexa-avs-sample-appにあるので、これを上記の場所にコピーすれば動く。

    はじめてやったときはこのエラー出なかったけどなぁ。

     

    長くなってきたので細かいとこはまた別の記事で書くかも。

    3. サイト内リンク

    ラズパイでNASを構築する

    ラズパイにAlexaをインストールする

    ラズパイを赤外線リモコンにして家電を操作する

    Raspberry Pi3自作Webサーバー構築記part.1(ラズパイセットアップ編)


    コメントを残す

    メールアドレスが公開されることはありません。