Nature Remoは、機能的にはIRKitの正統な進化形と考えていただいてよいと思います。
と書き先日告知したNature RemoのKickstarterが成功して終了しました!!
応援していただいている方、ありがとうございます。
昨日から、引き続きMakuakeでクラウドファンディングを開始していますので、
Kickstarterを逃した方はぜひ!!
今日は、Kickstarterサイトでも提供すると約束していて、個人的にもすごく熱いと思っている、Alexa連携をIRKitで試してみました。
Nature Remoで試すとサンプルコードまだ出せないのでね。
Alexaは様々な理由から
- Amazon Echoは国内で販売していない Amazon Tapはあるようだなあ…
- Amazon.comアカウントが必要
- Amazon.co.jpのPrimeアカウントが使えない><
- 日本語対応していない
日本では流行ってる話をほとんど聞きませんが、こないだ渡米した時に感動して買ってきてしまいました。
感動ポイントはとにかく音声認識がすごいこと。
遠くからでも、音楽再生するなど雑音環境下でも、ほとんど認識失敗にしない感覚があります。
Siriだと、認識失敗したら「まだSiriにはできないか(落胆)」と感じるところ、
Alexaだと、「あれ、自分の英語の発音が悪かったかな」ってなる。
音声認識って使えるじゃん
Alexaの認識対象の語彙を限定するルールベースのアプローチがしばらくは優位なんじゃないか
さて、Alexaに何か音声でしゃべりかけて外部サービス連携するためには、Alexa Skills Kit (ASK)を使います。
Alexa Skills Kitの中にはCustom SkillsとSmart Home Skillsがあり、
まずは簡単なCustom Skillsで作ります。
手順は
Invocation Nameを設定
上のビデオの中で “Ask {IRKit} to turn on the air conditioner” と話していた {IRKit} の部分
これはSmart Home Skillsでは操作対象が制限される分必要なくなるようだが、Custom Skillsには必要Intent Schemaの設定
音声で操作したい内容を定義する
{ "intents": [ { "intent": "ControlAC", "slots": [ { "name": "Control", "type": "LIST_OF_CONTROLS" } ] }, { "intent": "AMAZON.HelpIntent" }, { "intent": "AMAZON.StopIntent" }, { "intent": "AMAZON.CancelIntent" } ] }
ControlACというのがエアコンの操作で、
LIST_OF_CONTROLS
というCustom Slot Type
で今回のアプリケーション固有の単語を設定する。
今回はon | off | start | stop
のみ。Sample Utterancesの設定
音声認識する語彙を設定
ControlAC turn {Control} my air conditioner ControlAC turn {Control} my AC ControlAC turn {Control} the air conditioner ControlAC turn {Control} the AC ControlAC turn {Control} ControlAC turn {Control} ControlAC {Control} my air conditioner ControlAC {Control} the air conditioner
この文字列をしゃべると、
{Control}
に入ってたon | off | start | stop
をLambda関数に渡してくれます。AWS Lambda関数を作成
TriggerにAlexa Skills Kitを設定
LambdaのNodejsのコードは最後に。
IRKitにエアコンコントロールしてもらうのにIRKitのInternet HTTP APIを使うので必要なdeviceid
とclientkey
を取得します。これでiPhoneのAlexaアプリを開き Skills -> Your Skills と開くと
IRKit Skillが見つかれば準備OK
Alexaにしゃべりかける
“Alexa, ask IRKit to turn on the air conditioner”
他の人にも使ってもらうためには審査に提出するが今回はしない
ということで、開発者であればわりと簡単に、
自分のIRKitをAlexaを通して音声で操ってエアコンをコントロールする、
ところまでいけますが、
開発者でない方でも(または開発者でも面倒であれば)、音声エージェントに話しかけてスマートホームしたければ、
ぜひ早期割引期間中にNature Remoをゲットしてください!!!!
Lambdaのコードはこんな。