Pages

Thursday, March 19, 2020

ラズパイでスマートスピーカーを作る 「アレクサ!あしたの天気は?」 ~ハードウェア設定編~ - ITmedia

 前回はAlexaを使うためのAmazon Developerへの登録などについてご紹介しました。今回からはいよいよラズパイでAlexaが使えるようにしていきます。

 スマートスピーカーを使うにあたって必要なものは以下の3つです。

  • Raspberry Pi 4
  • USBマイク
  • 3.5ミリジャックが付いているスピーカー
  • ラズパイを差して使うディスプレイ
  • HDMI-miniHDMIケーブル

 マイクやスピーカーはさまざまな種類があるのですが、ラズパイでの動作が報告されている製品を使ったほうがいいでしょう。そこでUSBマイクは「Buauty PCマイク」、スピーカーはエレコムの「MS-P08UECBK」を使いました。

photo Buauty PCマイク
photo MS-P08UECBK
photo ラズパイに接続したところ

 ラズパイでAlexaを動かすためには、「Alexa Voice Service」(以下、AVS)をラズパイにインストールします。AVSではさまざまなプログラムが必要になります。このためRaspbianはフルバージョンの「Raspbian Buster with desktop and recommended software」を使いましょう。

 microSDメモリカードにRaspbianのイメージファイルを焼く必要がありますが、それについては第8回で紹介していますので参考にしてください。

USBマイクとスピーカーを使えるようにする

 ここからはラズパイを直接操作していくことになりますが、インストール直後のラズパイを設定するには、これまではIPアドレスを調べて、WindowsでTeraTermなどのターミナルソフトを立ち上げて設定する方法をご紹介してきました。ただしiTunesをインストールしている場合、名前解決の「Bonjourサービス」が合わせてインストールされるため、IPアドレスの代わりに「○○○.local」と入れると、名前を判断してデバイスにアクセスできます。ラズパイの場合は「raspberrypi.local」です。こちらを使った方が便利ですので活用してみてください。

 では実作業に移りましょう。ラズパイにmicroSDカードを差してRaspbianを起動したら、まずはコンソールから、以下のコマンドを入力してシステムを最新にします。

$ sudo apt update
$ sudo apt upgrade -y

 システムの更新が終わったら、ラズパイに取り付けたUSBマイクを使えるようにします。まずはUSBマイクで録音ができるか確かめます。そのためにはラズパイのデスクトップから操作した方が簡単ですので、ラズパイをディスプレイに接続して起動し、デスクトップを表示させましょう。起動したラズパイに次のコマンドを入力してください。

$ lsusb
Bus 001 Device 005: ID 8086:0808 Intel Corp. 
Bus 001 Device 007: ID 0424:7800 Standard Microsystems Corp. 
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 ここで「Intel Corp.」と表示されているのがBuauty PCマイクです。

 ラズパイでサウンドファイルを扱っているのは「ALSA(Advanced Linux Sound Architecture)」というツールです。こちらからもマイクを認識しているか確認しましょう。以下のようにコマンドを入力します。

$ arecord -l

 すると、以下のように表示されます。

**** ハードウェアデバイス CAPTURE のリスト ****
カード 1: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0

 認識していると上記のように表示されますが、何も表示がなかった場合は認識していない、ということになります。しっかり接続できているか確認しましょう。

 次に、デスクトップの右上にあるスピーカーアイコンをクリックして音量調整のバーが表示されたら一番上にスライドします。このアイコンを右クリックして「Audio Outputs」を選びます。すると左側にメニューが表示されますので、「Analog」を選びます。

photo 「Audio Outputs」から「Analog」を選ぶ

 続いてはマイクです。同じくスピーカーアイコンを右クリックして、今度は「Audio Inputs」を選びます。左側に表示されるメニューから「USB PnP Sound Device」を選びましょう。続いて「USB PnP Sound Device」の下にある「Input Device Settings」を選んで、「Capture」タブの「Mic」というスライドバーを一番上にあげておきます。終了したら「OK」をクリックしてメニューを閉じます。

photo 「Audio Inputs」の左側に表示されるメニューから「USB PnP Sound Device」を選択
photo 「Input Device Settings」で表示されるメニューの「Capture」タブにある「Mic」でスライドバーを一番上にあげる

録音して再生できるか確認する

 デバイスの認識が終わったら、試しに自分の声を録音して聴いてみましょう。以下のコマンドを入力します。

$ arecord -f cd test.wav

 ここで「-f」はフォーマットを決めるオプションで、「cd」はその指定の通り、CD音質での録音となります。

 再生するのは「aplay」コマンドです。以下のように入力します。すると「再生中」と表示され、サウンドが再生されます。

$ aplay test.wav
再生中 WAVE 'test.wav' : Signed 16 bit Little Endian, レート 44100 Hz, ステレオ

 録音したサウンドがちゃんと再生されましたでしょうか。再生されない場合は、マイクのボリュームが高くなっているかをまず確認してください。スピーカーのチェックは以下のコマンドで可能です。

$ aplay /usr/share/sounds/alsa/Rear_Center.wav

 スピーカーから「Rear Center」という声が聞こえれば、スピーカーの設定は合っています。

AVS SDKのインストール

 ではラズパイでAlexaが使えるように、AVS SDKをインストールしましょう。まずは以下の内容をコンソールから入力して、ツール類をダウンロードします。長いですのでコピー&ペーストした方がよいです。

$ wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/setup.sh && wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/genConfig.sh && wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/pi.sh

 この後は以下のコマンドを入力してAVS SDKをインストールします。なお、以下の作業はPCなどからのリモート接続でなく、ラズパイのコンソールかデスクトップ上で入力しないとエラーになりますので注意しましょう。

$ sudo bash setup.sh config.json

 インストールの画面が一瞬止まりますので、大文字で「AGREE」と入れてEnterキーを押すとインストール作業が開始されます。ファイルのダウンロードとインストールが終わると、最後にはライセンスが表示されますので、Enterキーを押して表示を進めたあと「yes」と入力してください。再びファイルのビルドが始まるので、「**** Completed Configuration/Build ***」と最後に表示されるまで待ちましょう。セットアップですが、かなりの時間がかかります。ライセンスの表示が出るまでに20分、そこからインストールが終了するまで40分くらい、といったところです。

photo この画面で「AGREE」と入力する
photo Enterキーを押して表示を進める
photo ライセンスが表示されるので、最後に「yes」と入力する
photo インストールにはかなりの時間がかかる
photo 最後に「**** Completed Configuration/Build ***」と表示されたら終了

サンプルアプリを起動する

 ではAlexaを動かすためにサンプルアプリを起動します。ホームディレクトリに移り、以下のコマンドを入力しましょう。

$ cd /home/pi/
$ sudo bash startsample.sh

 すると以下のように表示されてメッセージが大量に流れます。

#############################
#       Connecting...       #
#############################
2020-02-23 12:38:41.653 [ 25] 1 AlertsCapabilityAgent:executeOnConnectionStatusChanged:status=PENDING,reason=ACL_CLIENT_REQUEST
2020-02-23 12:38:41.654 [ 35] 7 HTTP2Transport:mainLoop
                  #    #     #  #####      #####  ######  #    #
                 # #   #     # #     #    #     # #     # #   #
                #   #  #     # #          #       #     # #  #
               #     # #     #  #####      #####  #     # ###
               #######  #   #        #          # #     # #  #
               #     #   # #   #     #    #     # #     # #   #
               #     #    #     #####      #####  ######  #    #
       #####                                           #
      #     #   ##   #    # #####  #      ######      # #   #####  #####
      #        #  #  ##  ## #    # #      #          #   #  #    # #    #
       #####  #    # # ## # #    # #      #####     #     # #    # #    #
            # ###### #    # #####  #      #         ####### #####  #####
      #     # #    # #    # #      #      #         #     # #      #
       #####  #    # #    # #      ###### ######    #     # #      #
       SDK Version 1.18.0
……

 このメッセージの中で重要になるのは以下の行です。最後に「C6CL9C」のようにコードが表示されますので書き留めておきましょう。

################################################################################################
#       To authorize, browse to: 'https://amazon.com/us/code' and enter the code: C6CL9C       #
################################################################################################

 メッセージが流れている最中にAmazon.comのサイトに移動します。サインインを求められるのでログインします。「Register Your Device」と表示されたら、先ほど書き留めたコードを入力します。すると認証が終了したという表示がされるとともに、コンソール画面に流れていたメッセージも変化します。なおサインインするのは米国のAmazonですので、あらかじめAmazon.comのアカウントを取得する必要があります。

 認証が終わると表示が変わります。途中で一瞬、下のような文字列が表示されるのがわかりましたでしょうか。

########################################
#       Alexa is currently idle!       #
########################################

 この文字が表示されていれば、AVS SDKのサンプルプログラムは動作しています。しばらくして文字のスクロールが止まったら準備完了です。

 では早速Alexaに話しかけてみましょう。まだ英語モードなので、英語で話しかけます。

「Alexa」「What time is it?」

 するとAlexaが時刻を答えてくれるはずです。

Alexaを日本語化する

 では次に、日本語での入力に応えてくれるようにしましょう。まずは先ほどと同様に、以下のコマンドを入力します。

$ cd /home/pi/
$ sudo bash startsample.sh

 メッセージが流れて止まったら「c」を入力してEnterキーを押します。すると「Setting Option」というオプション選択画面が表示されるので、「1」を入力してEnterキーを押しましょう。続いて「Language Options」では14が「Ja-JP」となっているので、「14」と入力しましょう。これで日本語で答えてくれるようになります。

photo 言語を日本語に設定する

 ここからは日本語でOKです。「Alexa 東京の天気」、「Alexa NHKニュース」などと話しかけると、Alexaが日本語で答えてくれるのがわかります。ただし、天気を訪ねたとき何か違うなと思いませんでしたか? そうです。アメリカ仕様なので、セ氏ではなくカ氏で答えるのです。また、コンソールに流れている時間も、日本時間ではありません。そこでこれらをすべて日本語仕様にしましょう。

 まず、アメリカの「Amazon.com」にアクセスします。ログインしたら設定ページが表示されます。このページ左カラムにある「設定」をクリックして、「デバイス」の所にある設定名をクリックします。「デバイスのタイムゾーン」で「アジア」「日本標準時」を選ぶと、時間が修正されるほか、温度の単位もセ氏に、距離の単位もメートルに設定されます。

photo Amazon.comのサイトにアクセスする
photo 「デバイス」のところにあるデバイス名をクリック
photo 「デバイスのタイムゾーン」を「アジア」、「日本標準時」にする

 いったん「Ctrl+c」でサンプルプログラムを終了させ、サンプルプログラムを再起動させましょう。では「Alexa 東京の天気は?」と尋ねてみましょう。セ氏で気温を答えてくれるようになりましたか?

 今回製作したAVS SDKはアメリカ仕様なので、日本のAmazonで利用している「Amazon Music」の楽曲を再生したりはできませんが、ニュースを聞いたり、天気を確かめるといった簡単なことは指示が可能です。AVS SDKは、ラズパイさえあればあとはマイクとスピーカーを用意するだけで構築できるので、試してみてはいかがでしょうか。

photo 「ホーム」には、これまでAlexaに話しかけた内容が表示される。くだらないジョークも含む

Let's block ads! (Why?)



"ハードウェア" - Google ニュース
March 20, 2020 at 05:00AM
https://ift.tt/2UkqCOt

ラズパイでスマートスピーカーを作る 「アレクサ!あしたの天気は?」 ~ハードウェア設定編~ - ITmedia
"ハードウェア" - Google ニュース
https://ift.tt/2RrtF7u
Shoes Man Tutorial
Pos News Update
Meme Update
Korean Entertainment News
Japan News Update

No comments:

Post a Comment