ラズパイでスマートホームを実現しよう! 第1回: ウェイクワードで操作できるスマートホーム・デバイスを作り始める

こんにちは、ヨシケンです!
これまでラズパイを使って、スマートスピーカーや画像解析するカメラなどを作ってきました。
ここからは、そこで使った音声技術や画像解析を活用して、お家で役立つスマートホーム・デバイスを作って行きたいと思います。
2018年3月に機能向上して発売されたRaspberry Pi 3B+や、小型ラズパイのRaspberry Pi Zeroなどを使って、声で操作する便利なホームデバイスを作っていきますよ!

image11

今回の記事で必要な物一覧

・Raspberry Pi 3B+
image2

・小型USBマイク 
(USBで使えるマイクなら何でも構いませんが、今回は小型で1,000円以下のこちらを使いました。)
小型USBマイク

・小型スピーカー 
(こちらもイヤフォン・ジャックに差さるものなら構いませんが、充電式アンプ付きのこちらを使っています。)
小型スピーカー

・モバイルバッテリーなど
image9

・LEDとケーブル類

 

今回の記事の流れ

1.Raspberry Pi 3B+の基本設定
2.スピーカーとマイクの設定
3.Snowboyウェイクワードの導入
4.ウェイクワードとラズパイのLEDを連動させる
5.まとめ

 

1.Raspberry Pi 3B+の基本設定

Raspberry Pi 3 Model B+ (以下ラズパイ又は3+と記述)は2018年3月14日(これはπ=3.14にちなんでいるそうです)に発売され、以前のラズパイ3と比べてCPUクロックが1.4GHzとなり、ネットワーク性能が向上した最新のラズパイです。そうは言っても、サイズや基本設定などはこれまでと変わらず、今までのやり方を踏襲して進めることができます。OS Raspbianのインストール、RasPi-configでの設定、Wi-Fi環境、SSH接続など基本的なところは、こちらのエントリによくまとまっていますので、参照してやってみて下さい。
ここでは、Raspbian Stretch OSを使っていて、ラズパイの基本的な設定が済んでいる事を前提に進めます。

 

2.スピーカーとマイクの設定

基本設定に続いて、スピーカーとマイクの設定をします。写真のようにジャックにスピーカーを、USBにマイクを挿して、音声の確認をします。

image3

まずaplay -lでスピーカーが認識されているか確かめます。ここでは Card 0にスピーカーが認識されている状態です。また、arecord -lでマイクのカード番号が Card 1になっているのを確認します。

image4

自分で音を録音し、それを先ほどのaplayで聞いたり、arecordとaplayを繋げて、その場の音がスピーカーから流れる事を確認します。

arecord -f S16_LE -r 16000 -D 1 test.wav # 録音を止める時は、CTRL+Caplay -f S16_LE -r 16000 test.wav

alsamixer #音量の調整など。止めるときは、Esc

arecord -f cd -Dhw:1 | aplay -Dhw:0

また、sudo vi ~/.asoundrcという音声設定ファイルを、このマイク、スピーカーに合わせて変更しておきます。

 

3.Snowboyウェイクワードの導入

さて、マイクとスピーカーが動くようになったので、今回のメイン、ウェイクワードの設定を行います。
ウェイクワードとは、「アレクサ!」や「OK Google!」などのように、スマートスピーカーを起動させる最初の決まった呼びかけワードです。
ここでは、Alexaでも使われているウェイクワードのサービスSnowboyを使って、自分独自のウェイクワードを設定できるようにします。
まずこちらのページからSnowboyのダウンロードとラズパイへの導入を行います。

image5

サイト上のDownloadsから、Raspberry Pi with Raspbianのバージョンを選んでダウンロードします。このパッケージをラズパイに送っておきます。
また以下のライブラリをラズパイにインストールし、Snowboyでの音声対応ができるようにします。

(ダウンロードしたパソコンなどから)
scp rpi-arm-xxxx.tar.bz2 pi@raspiname.local#xxxxはダウンロードしたsnowboyファイル名、raspiname.localはラズパイのアドレスを指定して下さい。
(ラズパイ側で)
sudo tar xaf rpi-arm-xxxx.tar.bz2 #先ほど送ったファイルを解凍
sudo apt-get install python-pyaudio python3-pyaudio sox
sudo pip install pyaudio

さあこれだけで、ラズパイがウェイクワードを聞いてくれるようになります。
ラズパイ上でデモプログラムを流してみましょう。

sudo mv rpi-arm-xxx snowboy #先ほどの解凍したファルダをsnowboyとリネームします
cd snowboy
python demo.py resouce/snowboy.umdl

※ここで指定している.umdlや.pmdlがウェイクワード・ファイルで、デモではあらかじめ用意された「スノーボーイ」という単語が入っています。

プログラムを流したら、マイクの近くで「スノーボーイ!」と呼びかけてみて下さい。見事反応すると、ピン!という反応音が聞こえるはずです。
image6

こちらはその時の動いている簡単な動画です。

 

4.ウェイクワードとラズパイのLEDを連動させる

Snowboyが動いたところで、ラズパイ側につながったものと連動させてみます。ここでは最も簡単なLEDをチカチカさせる、ウェイクワードでLチカをやってみます。ラズパイに以下のようにLEDをつなぎます。

image7

それでは、ウェイクワード反応後にLEDを光らせる、wake_led.pyプログラムを記述します。

このプログラムを流して、また「スノーボーイ!」と呼びかけてみましょう。
python wake_led.py resources/snowboy.umdl
image8

見事、LEDがチカチカしたでしょうか?

また百均などで買ってきたLED電球を使って、もう少しお家が楽しくなるような電飾にしてみましょう。季節柄、クリスマスツリーを光らせるのもいいですね。

 

まとめ

今回は、ラズパイでスマートホームの第一回として、Snowboyというウェイクワードの仕組みを導入しました。
そしてこのウェイクワードから、ラズパイ側のLEDを光らせる事を簡単にやってみました。
これはラズパイのローカル上で動いているので、ネットワークが無いところでも、声さえかければラズパイの操作が可能になっています。LED以外もセンサーや音がするものと組み合わせて使う事ができます。色々やってみて下さいね。

次回は、このウェイクワードを使って声でラズパイを操り、家内のスマートホーム化を進めていきます。
お楽しみに!

deviceplus_vol3_cta_580x223_ver2
ヨシケン(吉田 顕一)

普通の会社に勤めるサラリーマンですが、モノ作りが好きな週末メイカーで、電子書籍MESHBOOKを出したり、ブログを書いたりしています!

http://blog.ktrips.net