Alexa音声アシスタント特集2017年12月27日TT(35)203203件のシェア(すこし話題の記事)この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。Dotの招待が来ません。多くの人が試しているのに、この祭りに参加できないのはちょっと悔しいですね。AVS」を入手し、実際に試してみたのでレポートします。Electronicsに注文したところ、即日発送で三日後の月曜に到着しました。FedexのPriorityは迅速でした。AVSの開発キットについては、すでに先日Microsemiのキットを市田がレポートしておりますが、今回は違うメーカーのものとなります。AVSの開発キットの一覧については、AmazonのWebで紹介されていますので、そちらをご覧ください。4つのマイクを搭載し、ファーフィールドと呼ばれるタイプのデバイスとなります。円形の基板の外周にカラーLEDがぐるっと配置されているのが特徴です。今回のキットはConexantとなっていますが、現在は社名が変わって「Synaptics」となっているようです。Webサイトのアドレスが変わっています。AVSセットアップは下記のガイドを参考にしながら作業しました。Piキットの中身とセットアップキットはこのような箱で届きました。電源(5V)USBケーブルライセンス許諾書(2通)円形の基板の周囲にはフルカラーLEDが並んでいます。矢印の先にあるのがマイクで、4つが離れて配置されています(上の一つは見切れています)。Pi本体や周辺機器が必要です。使用すると明記されています。2017-11-29で試してみました。結果から言うと、いくつかのトラップにひっかかりました。素直に指定バージョンを使用したほうが良さそうです。今後のチャレンジャーの参考のため、ワークアラウンドもふくめてレポートします。手順のアウトラインは以下の通りです。cloneするクライアントID、クラアントキーを設定するauto_install.shスクリプトを走らせるサンプルアプリを実行するRaspbianをダウンロードしmicroSDカードに書き込むRaspbianの公式サイトから、最新版のイメージをダウンロードします。今回はデスクトップ環境が必要なので、全部入りのものを使用しました。ファイル名は、2017-11-29-raspbian-stretch.zipでした。Proを使用する場合、SDカードスロットとアダプタを使って直接書き込むことができます。ターミナルを開いて、zipファイルを展開、SDカードをアンマウントして、ddコマンドでイメージを書き込みます(十数分かかります)。書き込み終わったらFATボリューム(boot)が自動マウントされるので、sshが使えるようにsshという空ファイルを作成しておきます。/Volumes/boot/sshケーブルを接続するキットを組み立てます。この手順書に、詳細な写真入りで説明されています。注意するポイントは下記です。Pi側の電源は不要になります。今回はこんなセットアップになりました。Out端子が下の基板にあるので、これをスピーカーに接続します。Piで動作させるためには、ドライバを入れたカーネルをビルドする必要があります。カーネルをビルドするには、1)実機でビルドする、2)クロスビルドする、という選択肢があります。実機でビルドするととても時間がかかってしまいますので、やはりここはクロスビルドすることにします。クロスビルドするための環境として、今回はEC2を使ってみました。大まかな手順は以下の通りです。ubuntuのAMIを使ってインスタンスを立ち上げるカーネルソースとツール類を用意リモートでクロスビルドを行うできあがったカーネルとモジュールを手元にコピーしてくるビルドをクラウドのインスタンスで行えば、ツールやソースのダウンロードも高速ですし、後始末もインスタンスを落とすだけで済みます。今回試したところ十数分でカーネル構築が完了しました。インスタンスを立ち上げます。使用するOSのubuntuのAMIを指定します。インスタンスタイプとしてm4.xlargeを、そしてスポットインスタンスを使用します。$0.1/H程度のコストで済みます。念のためセキュリティグループは、自分のIPからのみアクセスできるよう指定しておきます。インスタンスが起動したらSSHでログインします。ubuntu@ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.comあとはこちらの手順にしたがって作業を進めます。apt-getの初期アップデート、ツールのインストールを行い、gitからカーネルのソースコードを引っ張ってきます。いくつかパラメータを設定して、ビルドスクリプトbuild.shを使ってビルドします。-jオプションでコア数x1.5を指定するのがオススメとのことです。6が指定されていたので、4コア向けの設定となっているようです。m4.xlargeは4コアなのでちょうどでした。ビルドが完了したら必要なファイルをまとめてから、scpで手元に持ってくることにします。そのために、まず仮のインストール先ディレクトリを作成し、一度そこにインストールします。tar.gzで固めて手元にscpコピー。Piにscpコピーすることにします。リモートのインスタンスにて、下記の手順でtar.gzファイルにまとめます。サイズは20Mbyte程度になりました。下記は手元のコンソールを中継してコピーした例です。Pi上にコピーできたら、tar.gzを展開し、各ファイルを適切な場所へコピーします。カーネルイメージのファイル名については、kernel7-conexant4mic.imgとしました。/lib/firmware/config.txtに必要な設定を行います。カーネルのファイル名を、オリジナルとは別な名前で保存したので、それも設定しています。/boot/config.txtdtparam=audio=offdtoverlay=rpi-cxsmartspk-usbdtoverlay=i2s-mmapdtparam=i2c_arm=onprogram_usb_boot_mode=1kernel=kernel7-conexant4mic.img以上でカーネルの再構築とインストールは完了です。Piを再起動して、新しいカーネルが動作していることを確認しておきます。開発者ポータルで製品を登録するAmazon開発者ポータルのアカウントを準備しておきます。「製品を作成する」ボタンをクリックし、必要事項を記入していきます。商品:いいえ子供向け:いいえセキュリティプロファイルが必要とのことなので、新たに作成します。セキュリティプロファイルIDをメモしておきます。クライアントIDと、クライアントシークレットが発行されますので、こちらもメモしておきます。許可するURLとして、http://localhost:3000/https://localhost:3000/応答URLとして、http://localhost:3000/authresponsehttps://localhost:3000/authresponseを指定しておきます。実際に使われるのはhttpsのほうでした。セキュリティプロファイルIDや、クライアントID、シークレットは、いつでも開発者ポータルで参照することが可能です。これで必要な情報が揃いました。次にサンプルアプリケーションの準備と設定を行います。Pi上で、githubからサンプルアプリケーションのソースコードをcloneします。使用するリポジトリは、オリジナルのalexaのサンプルからconexant用にフォークしたバージョンです。https://github.com/conexant/alexa-avs-sample-app.gitインストールスクリプトの先頭部分に、製品ID(ProductID)、クライアントID(ClientID)、クライアントシークレット(ClientSecret)を設定する箇所がありますので、さきほどポータルで設定、取得した値に書き換えます。https://developer.amazon.com/edw/home.htmlClientSecret=2daXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXa64書き換えを行ったら、インストールスクリプトを走らせます。いくつか質問項目がありますがデフォルトのままでOKです。automated_install.shサンプルアプリケーションを起動するサンプルを動作させてみます。いくつかのプロセスを手動で動作させる必要があります。ターミナルを5個開いて、それぞれでプロセスを起動します。最初は、LEDを制御するためのLEDサーバーです。tLEDServer.pyこれだけでも遊べそうです。Pythonで記述されていますので、改造も容易だと思います。こんな感じで光ります。次に認証用サーバーです。ポート3000で待受をするプロセスです。最初一度だけ、サウンドデバイスの設定ファイルをコピーしておく必要があります。exec:execウェイクワードから制御を受け取るためのエージェントを起動します。GPIOピンからトリガーを受け取ります。Conexant4Micのキットは、ボード上のチップでウェイクワードの認識を行っており、ウェイクワードを検出するとGPIOピンをトリガーしてくれます。gpio最後は、音声を取り込むためのプロセスです。./run.shちょっと面倒ですが、以上の5つを起動することで、AVSサービスが動作するようになります。まとめて起動するためのスクリプトstartup.shが用意されているのですが、なぜか正常に動作しませんでした。トラブルシュート&ワークアラウンドおそらく最新版のRaspbianを使用したことが原因で、サンプルアプリをスムースに動作させることができませんでした。ここに解決方法をメモしておきます。wakeWordAgentのビルドが失敗するwakeWordAgentのビルドが下記のように失敗してしまいました。1C++のプロジェクトでたまに起きるリンクエラーです。このエラーは、下記のようにCMakeLists.txtファイルを修正して、オプションを追加することで対応できます。実行したときに、vlcのエラーが生じました。path...snip...このエラーは、共有ライブラリのファイル名が不一致なことが原因のようです。下記のように対応しました。sun.security.ssl.ClientHandshaker.getKickstartMessage(ClientHandshaker.java:1438)...snip...pom.xmlに記載されているJavaのバージョンが不適合のために生じているようです。<alpn-boot.version>8.1.11.v20170118</alpn-boot.version>となっている箇所を下記のように修正します。issuesを探すと、解決方法を見つけることができるようです。困った時はググりましょう。サウンドデバイスの動作を確認する開発ボードの音声入出力は、ALSAを使っています。aplay/arecordコマンドを使って動作確認することができます。~/.asoundrcは下記のように設定されていました。"hw:1,0"}}下記のように録音再生動作を確認することができます。rec.raw日本語化する最後に日本語化を試してみます。実はalexa-avs-sampleの本家では、すでに2017/12/19のアップデートで日本語に対応済みです。Conexant向けのフォークでは未対応なので、下記の修正をしてみました。インストールスクリプトに、"ja-JP"のロケールを追加します。"ja-JP"そして、クライアントアプリのロケールに、JAPANの選択肢を追加します。{SUPPORTED_LOCALES.add(Locale.US);SUPPORTED_LOCALES.add(Locale.UK);SUPPORTED_LOCALES.add(Locale.GERMANY);SUPPORTED_LOCALES.add(Locale.JAPAN);}上記の修正後、auto_install.shを再実行し、ロケールとしてja_JPを選択します。サンプルアプリを起動したときにロケールのプルダウンでja_JPを選択します。以上で日本語で動作させることができます。こちらのQiita記事を参考にさせていただきました。https://qiita.com/moritalous/items/a3e847612dd2bf4fed99動かしてみる動画です。ウェイクワードを認識すると、基板上のLEDが反応し、音の到来する方向を示します。Dotと同じような動作が実現されています。応答の最後が切れてしまっているのが少し気になります。Piを使って、Alexaのプロトタイプ端末を作成することができました。遠くから話しかけて、音声が到来する方向を認識して動作するのは、なかなか興味深いです。このキットは、ドライバさえ入れてしまえば、普通にUSBオーディオデバイスとして動作させることができますので、汎用性も高そうです。遊べるかもしれません。中身を研究してみたいですね!このレポートは以上です。353,750ソフトウェアとハードウェアの境界線を彷徨います。〜ログ収集、監視、分析を触って体感しよう!〜」を開催しますお申し込み受付は終了しました。ありがとうございました。今後セミナーのお知らせを受け取りたい方は、こちらからご登録をお願いします。CAFEのサービスが「LINEアプリ」として利用できるようになりました。これまではLINEのトークから利用する形でしたが、LINEサービス内から利用できるようになりました。これまでより便利に、シームレスにご利用いただけます。Cafe300件のシェア(そこそこ話題の記事)インフラ未経験の私が内定から入社までに読んだ技術書11冊ブログ記事2020年01月16日Yui300インフラ未経験で入社した私がインフラを勉強するために読んだ技術書11冊を感想とともにまとめました。平野重利123Pythonで、標準入力を変換して標準出力に出すCLIプログラムのテンプレートをご紹介します。菊池修治47こんにちは、菊池です。勉強会#1に登壇しました。サーバのみならずネットワーク機器の仮想化も年々進んでいます。スペックに縛られないこととか、展開のしやすさとか初期考慮点が少なくなるのは嬉しいです。武田隆志1098このエントリは、2018年、2019年に公開したAWS全サービスまとめの2020年版です。これまではいくつかに分割して公開していましたが、1エントリにまとめてほしいという要望をもらっていたため、今年は1エントリに集約してみました。CAFEのサービスが「LINEアプリ」として利用できるようになりました。これまではLINEのトークから利用する形でしたが、LINEサービス内から利用できるようになりました。これまでより便利に、シームレスにご利用いただけます。Cafe300件のシェア(そこそこ話題の記事)インフラ未経験の私が内定から入社までに読んだ技術書11冊ブログ記事2020年01月16日Yui300インフラ未経験で入社した私がインフラを勉強するために読んだ技術書11冊を感想とともにまとめました。悠紀235ShifterはWordPress環境をサーバーレスで立ち上げ、静的なサイトを生成することができるサービスです。FAQサイトをサクッと作ってみました。Takumi227こんにちは。DA事業本部の春田です。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。