アプリ屋になりたいブログ

アプリ屋になりたいブログ

アプリの開発と仕事の効率化について紹介するブログ

30分でAlexaを自由にしゃべらせよう!自分の好きなように動かせるカスタムスキルの作り方

サムネイル画像
皆さんAlexaを使ってますか?

天気を聞いたり、タイマーを使ったり、各社が出している「スキル」を使用することで、様々なことが可能です。

実はAlexaをしゃべらせることができるスキルって簡単に作れるの知っていましたか?

今回はAlexaを自由にしゃべらせる「カスタムスキル」の作り方について画像付きで説明します。

Alexaとは

AlexaとはAmazonが出している音声アシスタントサービスの名称です。

「Amazon Echo」などのスマートスピーカーはマイクとスピーカーとインターネットに接続する能力を持っており、
音声データをクラウドとやり取りすることで、しゃべったりします。

スキルとは

スキルとは、Alexaサービス上で動作する「アプリ」のようなものです。

iPhoneがApp Storeからアプリをインストールして、いろいろ便利になるように、
Alexaもスキルを使うことでさらに便利になります!

そしてアプリ開発者がいるように、「スキルの開発者」もいる訳です。

Alexaは簡単に言うと以下のようなシステムで動作しています。

人がしゃべった音声データがAlexaクラウドに飛んでいき、テキスト変換され、テキストを解釈し、スキルを起動します。
スキルで「インテント(意図)」を判断し、そのインテントに対してLambda(AWSのサービス)で処理を行いレスポンスを返します。

開発者の作成部分は以下の通りです。

f:id:bocbocmm6:20191130182853j:plain

スキル作成手順

今回作るスキルの概要

今回はただただおじさんの生活をのぞけるというスキルを作ろうと思います。

「今なにしているの」と聞くと、おじさんが今何をしているのか返してくれます。

スキルの作成

さてまずは以下の開発者コンソールにアクセスしてください。
Amazon開発者ポータル

右上のログインボタンを押します。

f:id:bocbocmm6:20191130183658j:plain


Amazonのアカウントでログインが求められます。

f:id:bocbocmm6:20191130183802j:plain


「Alexa」ボタンを押します。

f:id:bocbocmm6:20191130183833j:plain


「Alexaスキルの開発を始める」をクリックします。

f:id:bocbocmm6:20191130183907j:plain


「スキル開発を始める」をクリックします。

f:id:bocbocmm6:20191130183955j:plain


「スキルの作成」をクリックします。

f:id:bocbocmm6:20191130184119j:plain


スキル名と言語を選択します。

f:id:bocbocmm6:20191130184153j:plain

「カスタム」を選択し、「Alexa-Hosted」を選択します。
本来はAWSなどを自分で契約しないといけないのですが、「Alexa-Hosted」を無料で使わせてもらえます。

pythonかNode.jsか言語を選べます。
自分の得意なほうで、初心者の方はNode.jsのほうが何となくとっつきやすいかも。

f:id:bocbocmm6:20191130184340j:plain


「スキルの作成」をクリックします。

f:id:bocbocmm6:20191130184403j:plain

インテントの作成

インテントは会話の意図を設定する部分です。

インテントをどのように設定するかというと、サンプル発話というものを登録します。
インテントにサンプル発話を登録することで、Alexaはユーザーの発話をインテントとしてとらえることができるようになります。

最終的にはこのインテントがLambdaに飛んでいくわけです。

インテントの「追加」ボタンをクリックします。

f:id:bocbocmm6:20191130184802j:plain

インテント名を設定します。
おじさんの状態を確認するインテント「CheckState」を作ります。

f:id:bocbocmm6:20191130184839j:plain


サンプル発話を登録していきます。

f:id:bocbocmm6:20191130185112j:plain

モデルの保存とビルドをします。
ここで、サンプル発話とインテントが登録されAlexaがサンプル発話を学習してくれます。

サンプル発話はあくまで「サンプル」なので、完全一致の発話でなくてもインテントに誘導してくれます。
モデルのビルドはAlexaにその音声処理のモデルを学習させて認識できるようにする、という側面があります。

f:id:bocbocmm6:20191130185159j:plain

f:id:bocbocmm6:20191130185530j:plain

lambdaの作成

実際に処理を行うLambdaを設定していきます。

「コードエディタ」をクリックします。

f:id:bocbocmm6:20191130185554j:plain

自動でテンプレートのコードが作成されています。

f:id:bocbocmm6:20191130185719j:plain

既存のコードの以下の部分を書き換えていきます。

f:id:bocbocmm6:20191130185704j:plain


「ハローインテント」の関数を丸々コピペして「CheckState」インテントに書き換えます。

f:id:bocbocmm6:20191130185823j:plain

以下の部分を書き換えて、CheckStateインテントに対応します。

今回はしゃべる言葉をランダムで作成する関数を用意して、SpeakOutputに入れます。

f:id:bocbocmm6:20191130185914j:plain

最後に今回作成したCheckState用のハンドラーを下の関数に登録しておきます。

f:id:bocbocmm6:20191130190052j:plain

最後にデプロイを行います。

f:id:bocbocmm6:20191130190210j:plain

テストする

最後は実際に動かしてみましょう。

テストボタンをクリックします。

f:id:bocbocmm6:20191130190250j:plain


テスト画面の「開発中」をクリックします。
そうすると、PCのブラウザ上で確認ができるようになります。

f:id:bocbocmm6:20191130190406j:plain

入力欄にテキストを打つと、実際に発話しているのと同じように処理されます。

f:id:bocbocmm6:20191130190421j:plain


おお、無事に起動の文言が反映されていますね。

f:id:bocbocmm6:20191130190532j:plain

「どうしているの」と聞いてみましょう。

f:id:bocbocmm6:20191130190633j:plain

おじさんは部下と飲みに行っているみたいですね。
もう一回。

f:id:bocbocmm6:20191130190722j:plain

今度はカップラーメンを食べているみたいですね。
ちゃんとランダムでいろいろしゃべってくれます。

これは実際に自分のAlexaでもしゃべるようになっています。

開発中なので、自分のアカウントが紐づいているAlexaならしゃべってくれますが、
他の人のAlexaではしゃべりません。

実際に他の人にもつかってもらいたい場合は、「公開」を実施しなくてはいけません。
※また挑戦してみようと思います。

まとめ

今回はAlexaでカスタムスキルを作成する方法を紹介しました。

簡単に作成できるので、アイディアがある人は挑戦してみてはいかがでしょうか。

スマホアプリはもうかなりレッドオーシャンなので、スキルの世界ならまだまた戦えるかもしれません。
APIなどを使ったりすれば、しゃべるだけでなくほかのサービスとの接続も可能なので、いろいろ作成してみてください。

www.apnari.com

www.apnari.com