Blend day's Note

思い立ったことをメモする

Volumio2 & Alexa Voice Service を Raspberry Pi 3 に組み上げる話

我ながら、非常に奇妙な組合せだなぁ…と思いました。
でも、実際にやっているところはないので、やってみたかったのです。

ちなみに、不意な事故で今は動いていません。(´・ω・`)

f:id:kayo_tozaki:20171217100910j:plain ↑製作途中の状態

※本題は、わりと先の方なので、目次を頼りに飛んでください。


本題の前に…

この記事は、Kogakuin Univ Advent Calendar 2017 の17日目の記事になるそうです。

adventar.org

私は言わずもがな卒業生枠です。
今は朝8時半に出社して、夜8時半ぐらいに退社するという社畜生活を送っています。
でもご安心ください。弊社の業務時間は 9時半~18時半 で、とってもホワイトです!
詳しい話が聞きたい人は呑みに誘ってください。行ける確率は限りなく低いですが。

さて、私の話はこのぐらいにしておいて…

ちょっと思ったこと。

本稿執筆時点で半分ちょっとぐらい投稿された
Kogakuin アドカレの記事を見た感想を少し。

私が昔足を踏み入れていた競技プログラミング団体 "Kogcoder" が、
すごく成長してびっくりしました。
強者が集まり、ICTSCの予選に出場するようになるとは…

かくいう私も、Kogcoder & ICTSC(運営) という二足のわらじ状態だった訳で。
似たような境遇の人が集まっているなぁとしみじみしてました。

もしインフラに興味があるなら、一声ください。
弊社人事がモーレツにアピールしに伺いますので(←ココ重要)

私が作ったサーバ、潰されてるかなーーー???

ネットワーク処女だった私が作った環境なので、今では立派でリッチな環境になっていると信じてます。

それと、kogcoder.slack.com 作ったの私です。今はどうなってるのか分かりません。
さっきログインしようとしたら、ログインID忘れたのでできませんでした。

ついでと思って、一緒に作ったgmailのメアドにログインしようともしました。
こっちはパスワードあるから大勝利と思ったのですが…

f:id:kayo_tozaki:20171217101055p:plain

負けました。さすがSECCONに出るだけはあります。

それぞれがそれぞれの方向に成長するの、私は見ていて楽しいです。
適度に干渉するから、Advent Calendar企画が3年続くんですかね?
何年続くか分かりませんが、今後も広がりつつ続いてくれると嬉しいなと思いました。


http://1.bp.blogspot.com/--plqgzj-Hr0/WaPvlQNRyeI/AAAAAAABGNs/j37PIH2GG5c0qUVQgk8jd2eDuDYPZ0A0ACLcBGAs/s800/dogeza_man.png

主題に興味のあるその他大勢の方々、おまたせしました。
ここからが本題です。

※本題※ :: ことの始まり

始まりは、日本で Amazon Echo が発売されはじめた頃に遡ります。

招待制での発売当初、割引が効いて、
わりとおもちゃとして1台買ってもいいレベルの金額と思い。
私もビッグウェーブに乗って、招待券を要求しました…

が、しかし。
2017/12/17現在、招待券が私の手元に届いておりません。

どうなってるんやAmazon!!!

ブチ切れた私は、Alexa が Raspberry Pi でも使えるということ、
またその環境で日本語版Alexaが使えることが分かり、閃きました。

今いるラズパイ(volumio)にAlexaぶち込んで、音声認識でmpd操作すれば良いのでは????

かくして、壮大なストーリーが始まるのでした…なお、途中で心が折れたのは言うまでもなく…

Amazon Echoを6,000円で自作する 〜Raspberry Pi 3 + Alexa Voice Services (AVS)〜  | ALGO GEEKS

qiita.com

完成形

Raspberry Pi 3

  • Volmio 2 最新
    • mpd(volumio2 付属)
  • Alexa Voice Service
    • alexa-avs-raspberry-pi-master 同梱ファイル各種)
  • マイク
  • スピーカー

ざっくりとコレぐらいを用意すればいいかと。

準備・物資購入

このために実際に用意したブツたちは次の通り。

Raspberry Pi 3B & 電源

Amazon CAPTCHA

電圧問題が心配だったのと、既存で動いている modelB+ が常に電圧不足と怒られていたので、
この際にリッチな電源を容易。音楽聞くからね、良いやつを用意しないと。

microSDカード 32GB

まあ、オーソドックスなSamsung製を。こだわりは無いです(ここには無いのかい)

https://www.amazon.co.jp/gp/product/B06XSV23T1/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1

キーボード

何でも良いです。一時的に使うだけなので、正直100円ぐらいのジャンクでも可。 私は余ってたThink Pad Keyboardを使いました。

Amazon CAPTCHA

LANケーブル

私はバカなので、自作キットが家にあります。なければ作りましょう。

最悪、無線LANでも良いと思いますが、どうも目にみえないものは信用しない人なので…

マイク

家に転がっていて使っていない ECM-PCV80U を使いまわします。

Amazon CAPTCHA

関係ないですが、スマホ用ピンマイク & 変換ケーブル買いました。
どこで使うのかは聞かないでください。

スピーカー

音楽再生用に、HIFI DAC (HiFiBerry DAC Plus 互換?) を買ってありました。DACはここ。

Amazon CAPTCHA

出力は、RCAでリッチなアンプ(音楽再生用)に繋いでました。

Alexaはラズパイ内臓の3.5mmジャック…と思ったのですが、ノイズが酷いので、
DACのイヤホンジャックに変更しました。喧嘩します。

スピーカーとして、100均のUSB(給電)ミニスピーカーを買いました。
半分衝動買いですが、アンプ機能としては優秀です。

jibundeyarou.com


環境構築

詳しい話は、他のサイトに沢山書かれているので、あまり細かく書く気は湧きませんが…
もし希望があれば言ってください。別記事に細かく書きます。

大まかな流れは次の通り。

使うのはSSHSSHしている端末のブラウザだけです。 GUIは使わずとも動きました。

  1. Volumio 公式から最新のvolumioイメージをダウンロード & SDに焼き込む *1
  2. 初回起動 & SSH有効化
  3. amazon.com developer に登録 & alexa voice service にラズパイを登録 *2
  4. alexa用ユーザ作成 & 必要パッケージ事前インストール
  5. alexa用パッケージインストール & 初期設定 *3
  6. wakeword 挙動確認

この1連の流れで約2時間見込めば大丈夫かと。
特にalexaのセットアップは待ちぼうけなので、お茶でも用意したほうが良いです。

主に引っかかった部分をピックアップして書きます。
一連の流れは、希望があれば別記事にします(2回目)

VolumioのSSH有効化

最新のVolumio2 では、デフォルトでSSHが無効化されています。
これを有効化するには、http://volumio.local/DEV にアクセスし、 SSHのEnableボタンをポチるとおkです。

f:id:kayo_tozaki:20171217105358p:plain

後は、勝手にSSHが使えるようになります。すごい。

volumio2 の node.js と競合する問題

volumio で node.js を使うようになったらしいが、
組み込みのnode.jsのバージョンが若干古く、
AVS(alexa voice service)では使えない様子。

その為、nodebrew等を使って、node.jsのバージョンを変更する。

qiita.com

上記のとおりに動かせばおk。

バージョンはv8以上にすればおkのはず。

更に、node.js の受付窓口を変更する必要がある。

companionService 側の設定を変更する。

alexa-avs-sample-app/samples/companionService$ nano bin/www 

ポート番号がかかれていそうな所を変更する。3003など。

javaclient側も合わせて変更。

alexa@volumio:~/alexa-avs-sample-app/samples/javaclient$ nano config.json

同上。

wakeword が途中で死ぬ問題

pulseaudio 周りのパッケージを入れる & 起動させる & グループの追加 をすると解決。

sudo apt install pulseaudio pavucontrol
chkconfig pulseaudio on
sudo adduser <username or pi> pulse-access

Volumioの "リセット" には要注意

最後に、なにがあったのかを少し。

NAS マウントが調子悪かったので、ユーザ情報のリセットをしようと思ったのですが…

f:id:kayo_tozaki:20171217110655p:plain

以上だ。


終わりに

使ってみましたが、楽しむ分には良いが、
実用に耐えられるものではありませんでした…

冷静に、Echo Dot を待ちます。