2021/05/27

Alexaのスキルについて詳しく解説!AWSサービスとの連携方法もご紹介します

 
  

Alexaについて知ろう


この記事では、AlexaスキルとAWSについて解説していきます。今、多くの人々が保持しているスマートスピーカーとAWSを連携させる方法について説明していきます。

Amazon EchoとAlexa

Amazonが提供しているスマートスピーカーはAmazon Echoです。AlexaとはAmazon Echo上で動作しているアプリケーションであり、クラウドベースの音声サービスとなっています。

Alexaには「スキル」と呼ばれる機能が含まれており、「アレクサ、明日の東京都の天気を教えて」「アレクサ、タイマー10分セットして」などと話しかけることによって、様々な操作を行うことができます。

Alexaスキルとは?

Alexaにおけるアプリケーション・プラグインのことをAlexaスキルと呼びます。スマートフォンには自由にアプリケーションをインストールすることができますが、Alexaにとってのアプリケーションが「Alexaスキル」となっています。

Amazon Echoはインターネットに接続されており、かつ、マイクとスピーカーが搭載されています。これらの特徴によって様々な機能を提供することができるのです。

Alexaスキルの仕組み

Alexaスキルはクラウドを通じて提供される仕組みです。

Amazon Echoはスピーカーを搭載しており、常に音声を収集しています。この状態で、「アレクサ、xxxをして」などとユーザーが話しかけます。すると「アレクサ」というウェイクワードを起点として、Alexaスキルを呼び出すのです。

例えば、「アレクサ、明日の東京の天気を教えて」などと話しかけると、「明日の東京の天気を教えて」の部分を録音します。録音された音声をクラウドに転送して、Alexaスキルを呼び出しています。

アプリケーションが実行されるまでの流れ

クラウド上に転送された音声データはAlexaによって処理され、アプリケーションが実行されるようになっています。

Alexaは主に、音声認識・自然言語理解・音声合成・機械学習の4つの機能で構成されています。転送された音声データは音声認識・自然言語理解の機能を使って処理され、パラメータ化されます。

これらのパラメータはAWS上の別サービスに連携され、何らかのプログラムが実行されるという流れになっています。

Alexaスキルを実装するならAWS Lambdaを利用

Alexaスキル用のアプリケーションを手軽に構築する手段は、AWS Lambdaです。

AWS Lambdaとはサーバーレスのアプリケーションを実現するAWSのマネージドサービスです。実装した関数をAWS上にアップロードすることにより、サーバーを構築することなくアプリケーションの実行環境を用意できます。

スキルの実行結果を受け取る

アプリケーションの実行結果は、Alexaを通じてAmazon Echoに返却されます。

レスポンスとして、文字列・画像・音声などを返却することができます。文字列を選択した場合は、Amazon Echoに特定の文字列を再生させることができます。また、音楽や効果音を再生するように指示することも可能です。

Alexaスキルを作成してみよう


こちらのセクションからはハンズオンを行うパートになります。独自のAlexaスキルを作成して、手持ちのAmazon Echoで任意の文章を再生させる方法を紹介します。

ハンズオンを進めるにあたっての前提条件は2つあります。1つ目は「AWSアカウントが作成済みであること」です。2つ目は「インターネットに接続されたAmazon Echoが手元にあること」です。

カスタムスキルを作成しましょう

独自の文言をAmazon Echoで再生させるために、カスタムスキルを作成していきます。

まず、開発者コンソールにログインします。その後、中央にある「スキルの作成」ボタンを押下します。

「新しいスキルを作成」という画面に遷移します。ここでは、スキル名に「ハローワールド」、デフォルトの言語として「日本語」、スキルに追加するモデルとして「カスタム」、スキルのバックエンドリソースとして「Alexa-hosted(Node.js)」を選択します。

選択が完了したら画面上部の「スキルの作成」ボタンを押下します。

次の画面でテンプレートの選択を迫られますが、ここでは「スクラッチで作成」を選択し、「テンプレートで続ける」を押下します。

Alexaスキルのビルドが始まります。ビルドには1〜2分程度時間がかかります。これでスキルの作成自体は完了です。

呼び出し名を変更する

スキルの呼び出し名を変更します。

ビルド直後の画面の右側にある「呼び出し名」を押下します。スキルの呼び出し名に「ハローワールド」と入力して、「モデルを保存」「モデルをビルド」を押下します。

これでスキルの呼び出し名が「ハローワールド」に変更されます。

シミュレーターでテストしましょう

作成したカスタムスキルをシミュレーターを使って動作確認していきます。

スキル詳細画面上部にある「テスト」を選択します。遷移後の画面で、スキルのステータスが確認できます。デフォルトでは「非公開」の状態となっていますので、これを「開発中」に変更します。これでシミュレーターの機能を使えるようになります。

左側の上部にあるインプットボックスに「ハローワールド」と入力します。すると「Welcome, you can say Hello or Help. Which would you like to try?」などと英語でレスポンスが返ってきます。

日本語化を行う

コードを修正して日本語化していきます。

画面上部のコードエディタをクリックすると、コードが表示されます。これが、Alexaスキルのコードです。LaunchRequestHandlerとHelloWorldIntentHandlerを以下の通り修正します。

const LaunchRequestHandler = {
    canHandle(handlerInput) {
        return Alexa.getRequestType(handlerInput.requestEnvelope) === 'LaunchRequest';
    },
    handle(handlerInput) {
        const speakOutput = 'こんにちは。こちらはハローワールドです。';

        return handlerInput.responseBuilder
            .speak(speakOutput)
            .reprompt(speakOutput)
            .getResponse();
    }
};

const HelloWorldIntentHandler = {
    canHandle(handlerInput) {
        return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
            && Alexa.getIntentName(handlerInput.requestEnvelope) === 'HelloWorldIntent';
    },
    handle(handlerInput) {
        const speakOutput = 'こんにちは。';

        return handlerInput.responseBuilder
            .speak(speakOutput)
            //.reprompt('add a reprompt if you want to keep the session open for the user to respond')
            .getResponse();
    }
};

その後、画面上部の「保存」と「デプロイ」ボタンを順番に押下します。

スキルを公開できる状態にする

実機で動作確認するために、スキルを公開可能なステータスに変更します。

開発者コンソールの「認定」タブを押下します。ここで表示される「検証」の画面で、必要な修正項目を画面の内容に従って修正していきます。

修正が完了したら「公開」タブの「公開範囲」にて、ベータテストの登録をしていきます。テスト用のEメールアドレスを追加して、「ベータテストの有効化」を押下します。

Amazon Echoで実行してみる

Amazon Echoの実機を使って動作確認してみます。

Alexaアプリに、開発者コンソールと同じEメールアドレスでログインします。その後、登録済みでない場合は該当のAmazon Echoを登録するようにしてください。

これで準備は完了です。Amazon Echoに「アレクサ、ハローワールドを開いて」と話しかけてみてください。

AWSと連携するには


AWSと連携するにはAWS Lambda関数を作成する必要があります。

AWS Lambdaで関数を作成した後、作成された関数のARNを取得します。そのARNをAlexaの開発者コンソールで登録する必要があります。

開発者コンソールにて、ビルドページ > カスタム > エンドポイントを選択すると、関数のARNを登録することができます。このようにしてAWSとAlexaが連携可能です。

AWSと連携することでLambdaからさらに他のAWSのサービスを呼び出すことができるなど、可能性が広がります。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】