LoginSignup
6
7

More than 5 years have passed since last update.

[RaspberryPi]AlexaをSnowboyで動かす

Last updated at Posted at 2019-03-12

はじめに

ラズパイでAlexaを動かす記事は探せばたくさん見つかります。
また、こちらの公式ガイドも(英語ですが)手順に従えば簡単に動かすことができます。
しかし、ガイドに従うとVoice Wakeup Detectionのライブラリとしてデフォルトで
Sensoryが使用されますが、このSensory、、まともに検知してくれません。
(10回中1回検知できるかどうかでした)

そこで、Voice Wakeup DetectionにSnowboyを使う手順を残しておきます。

Snowboyを使う手順をブログやQiitaで紹介されているも記事もいくつかありましたが、
https://github.com/alexa/alexa-avs-sample-app (注. 現在はリンク切れ)
このリンク先のサンプルアプリを前提としたものや、少し古いバージョンを対象にしている
記事しか見つからなかったので、誰かの参考のために残しておきます。
(2019年3月時点の情報です)

基本は、公式のクイックスタートガイド通りでOKなので、
ちょっと端折って記載します ^^;

環境

Raspberry Pi 3B+
NOOBS v3.0.0

※なお、この記事の手順はクリーンインストールから動作確認済みです。

手順

1. 必要なファイル準備

mkdir ~/sdk-folder
cd sdk-folder

〜〜ここでガイドのSetup 3. まで進めます〜〜

この時点で下記4ファイルが存在している状態だと思います。
~/sdk-folder/setup.sh
~/sdk-folder/genConfig.sh
~/sdk-folder/pi.sh
~/sdk-folder/config.json

2. snowboyに必要なパッケージを入れる

sudo apt install swig
sudo apt install libatlas-base-dev

3. pi.shを書き換える

下記diff結果を参考に書き換える。

--- pi.sh.org   2019-03-12 04:00:14.881061488 +0900
+++ pi.sh   2019-03-10 22:05:56.082621078 +0900
@@ -20,12 +20,12 @@

 SOUND_CONFIG="$HOME/.asoundrc"
 START_SCRIPT="$INSTALL_BASE/startsample.sh"
-CMAKE_PLATFORM_SPECIFIC=(-DSENSORY_KEY_WORD_DETECTOR=ON \
+CMAKE_PLATFORM_SPECIFIC=(-DKITTAI_KEY_WORD_DETECTOR=ON \
     -DGSTREAMER_MEDIA_PLAYER=ON -DPORTAUDIO=ON \
     -DPORTAUDIO_LIB_PATH="$THIRD_PARTY_PATH/portaudio/lib/.libs/libportaudio.$LIB_SUFFIX" \
     -DPORTAUDIO_INCLUDE_DIR="$THIRD_PARTY_PATH/portaudio/include" \
-    -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)
+    -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)

 GSTREAMER_AUDIO_SINK="alsasink"

@@ -64,18 +64,20 @@
 build_kwd_engine() {
   #get sensory and build
   echo
-  echo "==============> CLONING AND BUILDING SENSORY =============="
+  echo "==============> CLONING AND BUILDING SNOWBOY =============="
   echo

   cd $THIRD_PARTY_PATH
-  git clone git://github.com/Sensory/alexa-rpi.git
-  bash ./alexa-rpi/bin/license.sh
+  git clone git://github.com/Kitt-AI/snowboy.git
+  cd snowboy
+  python ./setup.py build
 }

 generate_start_script() {
   cat << EOF > "$START_SCRIPT"
   cd "$BUILD_PATH/SampleApp/src"

-  ./SampleApp "$OUTPUT_CONFIG_FILE" "$THIRD_PARTY_PATH/alexa-rpi/models" DEBUG9
+  ./SampleApp "$OUTPUT_CONFIG_FILE" "$THIRD_PARTY_PATH/snowboy/resources" DEBUG9
 EOF
 }

4. setup.shを実行

ガイドのSetup 4. を実施

sudo bash setup.sh config.json -s 12345

5. alexa.umdlをコピーして所定のパスに配置

cd ~/sdk-folder/third-party/snowboy/resources/
sudo cp alexa/alexa_02092017.umdl alexa.umdl

6. サンプルアプリ実行

sudo bash startsample.sh

あとはガイドにしたがってAuthorizeを済ませれば、ちゃんとウェイクワードに
反応してくれるAlexaが動きます!

6
7
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
6
7