ドコモ AGENTCRAFT / Python SDK エージェントAPIを使った...

44
© 2019 NTT DOCOMO, INC. All Rights Reserved. 1 20196月時点のものです。仕様等変更する可能性がございます。ご了承下さい。 AGENTCRAFT / Python SDKを利用した AIエージェント作成チュートリアル

Transcript of ドコモ AGENTCRAFT / Python SDK エージェントAPIを使った...

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ドコモAIエージェントAPIを使ったお喋りデバイス作成ハンズオン

    1

    ※2019年6月時点のものです。仕様等変更する可能性がございます。ご了承下さい。

    AGENTCRAFT / Python SDKを利用したAIエージェント作成チュートリアル

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    対話型AIを作成可能にするクラウドサービス

    自然な対話を通じて、会話が出来たり、コンテンツを提供したり、

    デバイスを操作したり、まるであらゆるモノが意思を持ち、対話ができる。

    そんな新しい体験を提供します。

    2

    ドコモAIエージェントAPIとは?

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 3

    どういう仕組みなの?

    クライアントサイド サーバーサイド

    多⽬的対話エンジン“Speak”

    ⾳声認識(ASR)

    ⾃然⾔語処理(NLU)

    ⾳声合成(TTS)

    音声 / テキスト/メタデータ

    Windows

    SDK

    様々なデバイス

    エージェントを編集

    ユーザー

    開発者

    AgentCraft

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 4

    ドコモAIエージェントAPIでできることって?

    ⾳声券売機

    安⼼安全ドアホン

    飲⾷店向け注⽂端末

    VRコンテンツ

    汎⽤案内板 会議室案内板

    ⾳声デバイス作成キット在宅介護ロボット

    どんなモノでも。どんなコトでも。どんなコエでも。

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    チュートリアル開始!

    5

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ユーザーの名前を記憶し、あいさつする音声対話エージェント

    ● 知らないユーザーには名前を聞き返す

    ● 知っているユーザーには記憶した名前を呼んであいさつする

    6

    何を作るの?

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ハードウェア

    ● Raspberry Pi(+SDカード, 電源, HDMI)● USBマイクスピーカー● ディスプレイ

    使用言語

    ● Python

    使用ツール

    ● Speak Python SDK● AgentCraft● UDS

    その他

    ● ネットワーク環境

    7

    何が必要? ※後述の動作確認環境を要確認

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 8

    システム構成 / 手順

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    AgentCraftでエージェントを作成

    9

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ● Raspberry Piのブラウザからhttps://agentcraft.sebastien.ai/にアクセス● Googleアカウント / dアカウントでログイン

    10

    AIエージェント作成ツール / AgentCraftにアクセス

    https://agentcraft.sebastien.ai/%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    1. 左メニューバーから「エージェント」を選択

    2. 「追加」を選択すると「新規エージェント」が作成されます

    3. 作成された「新規エージェント」を選択

    11

    エージェントの作成

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    1. 画像のアイコンを選択し、アイコンを変更

    2. エージェント名:「あいさつエージェント」(エージェントの識別名です)

    3. お好きな種類の声を選択して下さい

    12

    画像 /名前 / 声の変更

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ● トピックとはエージェントの対話を設計する際の「話題」のようなものです。

    ● トピックは上から順番に評価され、自由に入れ替えることができます。

    13

    あいさつトピックの作成 「新規トピック」を選択し、編集画面を開く

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ユーザーが「こんにちは〜」と言った場合に処理するセクションを作ります

    1. トピック名:「あいさつトピック」

    2. セクション名:「あいさつセクション」

    3. マッチッング条件:「こんにちは」を「類義語(部分一致)」で設定

    14

    セクション設定|マッチング条件

    ● セクションとは1つの会話の受け答えのことです。

    ● マッチング条件はユーザが入力してくるであろう発話パターンです。その条件にマッチすると、

    セクション内の処理が実行されます。

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    「私の車です」という発話内容をマッチング条件に登録した場合の動作は以下の通りです。

    1. 完全一致:ユーザーの発言が「私の車です」のときのみエージェントが反応

    2. 読み一致:ユーザーの発言が「私の車です」と「私のくるまです」と「わたしの車です」と「わたしのくるまです」

    のときのみエージェントが反応

    3. 完全(部分一致): ユーザーの発言が「これが私の車です」のときにもエージェントが反応

    4. 読み(部分一致): ユーザーの発言が「これがわたしのくるまです」のときにもエージェントが反応

    5. 正規化(部分一致): ユーザーの発言が「私の車だ」のときにもエージェントが反応

    6. 類義語(部分一致): ユーザーの発言が「僕のくるまです」や「これが私の自転車だ」のときにもエージェントが反応

    7. 正規表現:正規表現での一致が可能です(上級者向け)

    15

    マッチングの一致条件|完全一致とかって何?

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ユーザー名を知っている場合と知らない場合で条件分岐をします。

    16

    ルールの設定|ユーザー名を知っている場合

    ルールでは変数と値のマッチによって条件分岐を行い、

    それぞれの条件でのアクションを定義します。①ルール名を記入(処理内容が分かりやすい名前にすることをお勧めします)

    ②「条件」を追加

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ユーザー名を記憶するための変数を作成

    17

    ルールの設定|ユーザー名を知っている場合

    ①変数名を記入

    ②変数を追加

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ● ユーザー名を知っている場合のアクションメッセージ(返答)を定義● ここでのルールは(# ユーザー名が存在するとき、「# ユーザー名さん、こんにちは!」とメッセージを返すことを意味します

    18

    ルールの設定|ユーザー名を知っている場合

    ① EXISTS()を選択

    ②アクションメッセージを記入(変数の使い回しができます)

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ユーザー名を知らない場合のルール名とアクションメッセージを記入

    19

    ルールの設定|ユーザー名を知らない場合

    ①ルールを追加

    ②ルール名を記入

    ③名前を聞くメッセージを記入

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ユーザー名を保存するためのセクションを作成します。

    20

    セクションの追加|ユーザー名の保存

    ①セクションの追加

    ②セクション名を記入

    ③想定するユーザー発話を記入アスタリスク( * )を使うことで任意のユーザー発話を取り出せます。

    例)(ユーザー発話) (取り出される単語)名前は太郎です → 太郎

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 21

    セクションの追加|ユーザー名の保存

    ①前処理を記入@star はユーザー発話からアスタリスク(*)部分を抽出つまりは、@start = *

    ③名前を聞いた後のメッセージを記入

    前処理はルールにマッチする前に行う処理です。

    それに対して、後処理はルールのマッチ後に処理を

    行います。

    ②ルール名を記入

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 22

    エージェントの保存保存ボタンより、作成したエージェントを保存します。

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ● 右下のエージェントのテストアイコンを選択

    ● 作ったシナリオ通りに動くかテストしてみましょう

    23

    エージェントのテスト

    青のアイコン「エージェントのテスト」を選択

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    Raspberry Piのセットアップ

    24

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ● Python

    ○ バージョン:3.5.3

    ● マイクスピーカーデバイス

    ○ YAHAMA PJP-10URhttps://sound-solution.yamaha.com/products/uc/pjp-10ur/index

    ○ Jabra Speak 410 https://www.jabra.jp/business/speakerphones/jabra-speak-series/jabra-speak-410#/#7410-209

    ○ 両耳ヘッドバンド式ヘッドセット USB 接続 BSHSUH12 https://www.buffalo.jp/product/detail/bshsuh12bk.html

    ○ AIY Google Voice Kit https://goo.gl/Np6zjW

    25

    動作確認環境● Raspberry PI

    ○ OS:Raspbian9

    ○ Kernel:4.14

    ○ アーキテクチャー:armv71

    ○ ハードウェア:Raspberry Pi 3 Model B, Raspberry Pi 3 Model B +

    https://sound-solution.yamaha.com/products/uc/pjp-10ur/indexhttps://www.jabra.jp/business/speakerphones/jabra-speak-series/jabra-speak-410https://www.buffalo.jp/product/detail/bshsuh12bk.htmlhttps://goo.gl/Np6zjW

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    対象バージョンのraspbianをダウンロードhttps://downloads.raspberrypi.org/raspbian/images/raspbian-2019-04-09/

    26

    Raspbianのダウンロード

    Zipファイルをダウンロード

    https://downloads.raspberrypi.org/raspbian/images/raspbian-2019-04-09/

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    1. Etcherをインストールhttps://www.balena.io/etcher/

    2. PCにSDカードを差し込む3. ダウンロードしたraspbianのイメージ(zipファイル)を選択4. Flash!をクリック5. Flash Complete!と表示されれば書き込み完了!

    27

    RaspbianのSDカードへの書き込み

    https://www.balena.io/etcher/

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ● Raspberry Piにはマイク機能がないので、USBマイクスピーカーが必要です。(p.24 動作確認環境をご確認下さい。)

    ● Raspberry Piを起動し、ALSAドライバの設定変更を行う。一行コメントアウトするのみです。

    28

    USBマイクスピーカー設定

    $ sudo vi /usr/share/alsa/alsa.conf

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 29

    USBマイクスピーカー設定

    ● alsa-base.confを編集

    ● 再起動

    $ sudo vi /etc/modprobe.d/alsa-base.conf

    options snd slots=snd_usb_audio ,snd_bcm2835options snd_usb_audio index =0options snd_bcm2835 index =1

    $ sudo reboot

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 30

    USBマイクスピーカー動作確認

    ● 音声を録音

    ● 録音した音声を再生(スピーカーから音が聞こえてくることを確認)

    $ arecord hoge.wavRecording WAVE 'hoge.wav ' : Unsigned 8 bit , Rate 8000 Hz , Mono

    $ aplay hoge.wavPlaying WAVE 'hoge.wav ' : Unsigned 8 bit , Rate 8000 Hz , Mono

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ● SDKをGithubからクローン

    ● Speak wheelのインストール(階層, ファイル名はバージョンにより異なります。)

    31

    Raspberry Pi|SDKのセットアップ

    $ git clone https://github.com/docomoDeveloperSupport/speak-python-sdk.git

    $ pip3 install speak-python-sdk/whl/1.6.1/speak-1.6.1-cp35-cp35m-linux_armv7l.whl

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ● SDKのサンプルをクローン

    ● pyuvをインストール

    32

    Raspberry Pi|SDKサンプルプログラムセットアップ

    $ git clone -b trial https://github.com/docomoDeveloperSupport/speak-python-sample.git

    $ pip3 install pyuv

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    Raspberry Piとエージェントの紐付け

    33

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ● トライアル環境には下記の2つのトークン発行方法があります。

    ○ AgentcraftTMの設定タブからGUI上で発行

    ○ Unity SDK サンプルアプリのスクリプトを利用して発行(AgentcraftTMのAPIを利用しています)

    34

    トークンの発行方法について

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    AgentcraftTMのGUI上で認証用トークン作成する方法

    35

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 36

    デバイストークン発行(GUI上での取得)

    1

    2

    3

    1. 「設定」タブをクリック

    2. デバイスの追加をクリック3. デバイストークンをコピー

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    サンプルアプリのスクリプトを利用した発行方法

    37

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 38

    クライアントシークレットの取得

    1

    2

    1. 「設定」タブをクリック

    2. クライアントシークレットをコピー

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 39

    クライアントシークレットの登録● トライアル環境用のトークン発行スクリプトGetTrialDeviceToken.pyを開き,

    AgentcraftTMで取得したクライアントシークレットを下記の箇所にペースト(商用環境の設定の仕方に関してはサンプルアプリのREADMEをご覧下さい)

    ● 本スクリプトはAgentcraftTMのAPIを利用し, デバイストークンを取得しています。(APIの詳細仕様に関してはAIエージェントAPIドキュメントサイトをご覧下さい。)

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 40

    デバイストークンの発行(スクリプト利用)• GetTrialDeviceToken.pyを実行し, デバイストークンをコピー

    $ python3 GetTrialDeviceToken.py URL[https://api-agentcraft.sebastien.ai/devices]SAVE ./.trial_device_id : XXXXXXXX-XXXX-XXXX-XXXX- XXXXXXXXURL[https://api-agentcraft.sebastien.ai/devices/token]SAVE ./.trial_device_token : XXXXXXXX-XXXX-XXXX-XXXX- XXXXXXXXSAVE ./.trial_refresh_token : XXXXXXXX-XXXX-XXXX-XXXX- XXXXXXXX

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    デバイストークンを設定してアプリを動かしてみよう

    41

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 42

    デバイストークンのセット• TrialApp.pyの”PUT_YOUR_DEVICE_TOKEN”を取得したトークンに置き換える

  • © 2019 NTT DOCOMO, INC. All Rights Reserved.

    ● サンプルプログラムの実行

    ● 完成!シナリオ通りに動くか確認してみよう!

    43

    サンプルプログラムの実行

    $ python3 TrialApp.py

  • © 2019 NTT DOCOMO, INC. All Rights Reserved. 44

    ドコモAIエージェントAPIに関して