AI スピーカを使用した独居高齢者支援システム
~ AI スピーカを支える AI 技術と実装例~
作成: 2018/01/24 ( V04 )
㈱ HIRO ICT 研究所
1. IFTTT (イフト)って、ご存知ですか
IFTTT = IF This Then That サービス
・ 2011 年に Linden Tibbets が始めた各種 Web サービスを連携させるサービス
・ IF This (トリガ): もし、何らかの入力があれば、「 Then That 」を起動する
・ Then That (アクション):何らかの出力や制御を行う
AI スピーカが、 IFTTT のブームを引き起こした
・「電気をつけて」と AI スピーカに喋る → 「 Nature Remo 」が電気をつける
2. IFTTT による Smart Home の実現
AI スピーカがキックをする( IF This ): AI 機能
・利用者は「暑いなあ、温度を下げて」と AI スピーカに向かって喋る
・クラウドは、「エアコンの温度を下げて」と IFFF サーバに通知する
Smart Home 機器が家電の制御をする( Then That ): IoT 機能
・ Smart Home 機器は、「エアコンの温度を下げて」の通知を IFTTT から受取る
・ Smart Home 機器は、赤外線リモコン機能を使ってエアコンの温度を下げる
クラウド
Action on
Google IFTTT
サーバ空調
照明器具
利用者
暑いなあ、
温度を下げて 眠いなあ、
ライトを消して
制御
制御
暑いなあ、
温度を下げて
エアコンの 温度を下げて エアコンの
温度を下げて
AI
スピーカ スマート ホーム機器3. AI スピーカ = AI & IoT の融合技術
AI 技術と IoT 技術の違い
・ AI : 「 What 」技術(家庭や自動車の利便性向上にコンピュータ技術を応用)
・ IoT : 「 How 」技術(主に工場等の生産性向上にコンピュータ技術を応用)
IoT 技術の特徴:ロボットで言えば手足
・ GE のイメルダ会長が、工場の生産性向上を目的に推進したので有名
・しかし、工場で生産するもの( What )がなくなると無意味になる( GE の衰退 ? )
AI 技術の特徴:ロボットで言えば頭脳
・ Amazon や Google が、家庭や自動車用に AI スピーカを開発
・目的は、生産性向上( How )ではなく利便性向上( What )なので売上増大中
AI スピーカ技術の特徴: AI & IoT
・頭脳( AI 技術):
→ 音声認識、自然言語処理
・手足( IoT 技術):
→ 家電制御、各種センサー利用
4. 我々の What : AI スピーカによる高齢者の自立支援
音声による独居高齢者との会話
・「音声による会話」は、相手がコンピュータであっても老化防止に効果的
・ AI スピーカを導入することにより、 「音声による会話」を実現できる
独居高齢者の知識活動を支援する
・記憶力が減退しがちの独居高齢者に音声によるメモ機能を提供する
・独居高齢者は音声による支援を受けて、知識活動を向上させる
独居高齢者の安心・安全を支援する
・「風呂で転んだ」「トイレで動けなくなった」等の緊急事態を音声で検出する
・緊急事態をメールで介護者に通知する事で、介護者の救助活動を支援する
独居高齢者の介護する側の活動を支援する
・介護者は、タブレットから「音声会話のスケジュール」を入力できる
・ 「音声会話のスケジュール」の結果、メールで介護者に通知される
独居高齢者の癒しやリラクゼーションを支援する
・「写真を見る」「音楽を聞く」 「リズム感を養う」「歌を歌う」などを支援
・普段は、癒しやリラクゼーションを支援しながら陰で見守りを実現
独居高齢者
介護者
5. AI スピーカの選択: Amazon の場合( 1 )
Amazon の場合:端末は「 Amazon Echo 」シリーズ
・端末:「 Amazon Echo 」シリーズ → 現在の世界シェアは 70%
・クラウド(音声認識): Amazon Alexa
・クラウド(自然言語処理): Amazon Alexa
・クラウド(対話アプリ): AWS Lambda ( Node.js )
Amazon の Smart Home 戦略( IoT 戦略)
・現状: 「 Amazon Echo Plus 」が、 Zigbee を使用して家電制御ができる
・今後: 「 Amazon Alexa 」に「 Smart Home 」機能を強化中
AWS Lambda
クラウド
Amazon Echo Plus
利用者
Amazon Alexa
各種
DB
会話定義制御
制御 空調
照明器具
スマートホーム
WiFi
ルータAmazon Echo
Amazon Echo Dot
6. AI スピーカの選択: Amazon の場合( 2 )
Alexa 対応デバイス(端末側)
・ Amazon Echo シリーズ: Amazon Echo Dot/ Amazon Echo Plus など
・ Alexa Voice Skill ( AVS ): 独自の機器に Amazon Echo エミュレータを搭載
Alexa サービス(クラウド側)
・ Alexa Skill Kit ( ASK ): 音声⇔テキスト変換処理と自然文法処理を行う
・色々な ASK がある: 「 Custom Skill 」、 「 Smart HomeSkill 」など
AWS Lambda
・ Alexa Skill Kit ( ASK ) から呼び出される音声会話処理アプリケーション
・言語として「 Node.js 」「 Java 」「 Python 」が指定できるが通常は「 Node.js 」
7. AI スピーカの選択: Amazon の場合( 3 )
音声入力の形式
・ウェイクワード: 音声入力開始を指示する( ” アレクサ ” 固定)
・呼び出し名 : AWS Lambda アプリケーションに対応する
・スロット:音声入力時の変数を指定する({ City } の値:東京、横浜など)
Alexa Skill Kit ( ASK ) と AWS Lambda とのインタフェース
・インテント名 : 天気予報を尋ねる場合は「 weather_forecast 」などとする
・スロット名: 「 City 」など。その値は、「東京」、「横浜」などになる
8. AI スピーカの選択: Amazon の場合( 4 )
IFTTT サーバの代替として WebSocket サーバを開発
・ IFTTT と同じような機能: Go 言語で開発した高性能 WebSocket サーバ
・ LINE のような CHAT 機能を搭載 : 「 Amazon Lambda 」から呼び出される
ラズパイアプリ(お話 AI ちゃん)との連動例
・東京電機大学建築学科で実証実験を実施中(足立区の高齢者が対象)
・「暑いなあ」「扇風機の電源を入れましょうか」 → 扇風機の電源を入れる
AWS Lambda
クラウド
お話
AI
ちゃん(ラズパイ)
学習リモコン
独居高齢者
(見守られ側)
Amazon Alexa
スケジュール 会話定義
制御
制御 空調
照明器具
空間知能化
HDMI
液晶TV
WebSocket
サーバ家電制御指示 家電制御指示
WiFi
アンプ+スピーカ ルータAmazon Echo Dot
IFTTTでもよいが 性能が遅い
9. AI スピーカの選択: Google の場合( 1 )
Google :端末は「 Google Home 」シリーズ
・端末: 「 Google Home 」シリーズ
・クラウド(音声認識): Google Assistant
・クラウド(自然言語処理): Action on Google ( Dialogflow )
・クラウド(対話アプリ): GCP firebase ( Node.js )
Google の Smart Home 戦略( IoT 戦略)
・現状: IFTTT 経由で「 Nature Remo 」を使用して家電のリモコン制御ができる
・今後: 「 Action on Google 」に「 Smart Home 」機能を追加
GCP firebase
クラウド
Nature Remo
利用者
Action on Google
各種
DB
会話定義制御
制御 空調
照明器具
スマートホーム
WiFi
ルータGoogle Home
Google Home Mini
IFTTT
10. AI スピーカの選択: Google の場合( 2 )
端末側上の音声処理アプリ
・ Google Home :マイク( 2 個)とスピーカで構成される AI スピーカ
・ Google Assistant : タブレット( Android )上で動く Google Home エミュレータ
・ Google Assistant SDK : ラズパイ上で動く Google Home エミュレータ
クラウド上の音声処理アプリ
・ Google Assistant : Google Home と連動し音声⇔テキスト変換処理を行う
・ Action on Google : 自然言語処理を行う(プログラミングなしで設定のみ)
・ GCP firebase: 「 Action on Google 」から呼出される対話処理サーバアプリ
ラズパイで動かすには Google Assistant SDK
を使う
11. AI スピーカの選択: Amazon か Google か
我々の What には、スケジュール機能が必要: Google を選択
・ラズパイ( Raspberry PI 3B )上で動く「 Google Assistant SDK 」を使用
・マイクとスピーカは、「 Google Voice Kit 」を使用
・ AI スピーカが苦手な声掛け機能(スケジュール機能)を実現する
→ スケジュールの入力は、タブレット( Android )で行う
・ IFTTT の代替として WebSocket サーバを使用する
GCP firebase
クラウド
Nature Remo
タブレット(見守り側)
独居高齢者 マイク
(見守られ側)
Action on Google USB
各種
DB
会話定義制御
制御
スケジュール 設定 空調
照明器具
空間知能化
HDMI
液晶TV
WebSocket
サーバ家電制御指示 家電制御指示
WiFi
ルータIFTTTの代替
お話AIちゃん
+ Google Assistant SDK
Voice Kit
12. 音声認識を行う Google Assistant SDK とは
Google Assistant SDK とは
・「 Google Assistant SDK 」は、ラズパイ等で「 Google Home 」の機能を実現
・「 Google Voice Kit 」を使用することで、マイクとスピーカの機能を改善できる
Google Assistant Library
・「 OK Google 」から始まる「 Google Home 」のエミュレータ機能を実現
・アプリケーション言語としては、 Python のみが使用できる
Google Assistant Service ← これを採用
・ 「ボタン押下」から始まる「 Google Home 」のエミュレータ機能を実現
・クラウドとは gRPC を使用した通信を行う
GCP firebase
クラウド
お話AIちゃん
+ Google Assistant SDK
「匠の技」
データ 利用者
Action on Google
各種
DB
会話定義HDMI
液晶TV
WiFi
ルータ スピーカVoice Kit MEMSマイク
端末側
13. Google Assistant Library/Service の比較
Google Assistant Library
・「 OK Google 」から始まる「 Google Home 」のエミュレータ機能を実現
・アプリケーション言語としては、 Python のみが使用できる
Google Assistant Service ← これを採用
・ 「ボタン押下」から始まる「 Google Home 」のエミュレータ機能を実現
・クラウドとは gRPC を使用した通信を行う
Library Service
Supported architectures linux-armv7l and linux-x86_64
All gRPC platforms
Supported languages Python All gRPC languages
Hands-free activation (Ok Google) Yes No
Audio capture and playback Built in Reference code is provided
Conversation state management Built in Reference code is provided
Timers and alarms Yes No
14. クラウドと端末との通信プロトコルの gRPC とは
RPC (Remote Procedure Call) を実現する gRPC
・ gRPC は、 RPC を実現するために Google が開発したプロトコルの 1 つ
・ HTTP/2 を使用したストリーミング通信(音声、動画)ができる
・ Protocol Buffers を使ってデータをシリアライズし、高速な通信を実現できる
IDL (インターフェース定義言語)
・ gRPC は、 IDL を使ってあらかじめ API 仕様を「 .proto ファイル」として定義する
・ IDL からサーバー側&クライアント側に必要なソースコードの雛形を生成する
・言語に依存しない IDL で先にインタフェースを定義する
→ 様々なプログラミング言語の実装を生成できるというメリットがある
15. Google Assistant 用 gRPC API ( v1α2 )の仕様概要
Assist API
・組み込みアシスタントサービスとの会話を開始または継続する
・各コールは 1 回のラウンドトリップを実行する
・サービスにオーディオ要求を送信し、音声応答を受信する
・双方向ストリーミングを使用して、オーディオを送信する際に
→END_OF_UTTERANCE イベントなどの結果を受信する
Assist API の要求と応答
・会話は 1 つまたは複数の gRPC 接続である:
→ それぞれ複数のストリーミングされた要求と応答で構成される
・たとえば、ユーザーが「ショッピングリストに追加」と言うと:
→ アシスタントは「何を追加しますか?」と応答する
・第 1 の gRPC メッセージ内のストリーミングされた要求と応答のシーケンス:
AssistRequest.config,
AssistRequest.audio_in, AssistRequest.audio_in, AssistRequest.audio_in, … AssistResponse.event_type.END_OF_UTTERANCE,
AssistResponse.speech_results.transcript “add to my shopping list“,
AssistResponse.dialog_state_out.microphone_mode.DIALOG_FOLLOW_ON,
16. Voice Kit の利用( 1 )
Google Assistant SDK (ソフト)
・ラズパイ用の「 Google Home 」エミュレータ:カスタマイズが可能
Google Voice Kit (ハード)
・ラズパイ用のドータボード( HAT )であり、音声処理の DIY に最適
・「 Google Assistant SDK 」では、 LED ボタン・ D 級アンプ・ MEMS マイクを使用
MEMSマイクの 接続コネクタ
LEDボタンの 接続コネクタ
スピーカの
接続コネクタ
Google Voice Kit HAT
17. Voice Kit の利用( 2 )
DAC ( MAX98357A )を使用した D 級アンプ
・出力: 3.2 W ( 4 Ω 時) / 1.8 W ( 8 Ω 、 5 V 電源電圧時)
・ I²S サンプルレート: 8-96 kHz
MEMS ( SPH0645LM4H ) 搭載の I 2 S マイク
・ 50 Hz 〜 15 kHz でオーディオを録音 / 検出できる純デジタル仕様の I²S マイク
MEMS
マイクD
級アンプMAX98357A
18. 自然言語処理を行う Dialogflow ( 1 )
Dialogflow の特徴
・ Dialogflow を使うことで自然言語解析を容易に行うことができます。
・ GUI や CUI に比べて音声入力は表現の幅が広い
→ 予測不可能な言葉で操作されるという特徴がある
ホテル予約の例
・例えばホテルを予約したい場合、ユーザーは、以下の言い方をする 1. 火曜日の宿を予約して
2. 明日の宿を予約 3. 部屋を取って
4. ホテルに泊まりたい
・ Dialogflow を使うことで、これらの異なる言い回しをまとめることができる
・宿泊日のような予約に必要な情報が抜け落ちていた場合
→ 自動的に追加で質問をすることができる
19. 自然言語処理を行う Dialogflow ( 2 )
Intent
・ 「ユーザーがやりたい事全体」を指す
・ Context :対話を継続させるために、次の Intent を指定する
・ User says :どういう時にこの Intent が呼び出されるかを指定する
・ Event :ユーザーの呼びかけに寄らないシステム側で発生した Event に 応じて Intent を発動させる → Bot が呼び出された時や Fulfil Intent の レスポンスで Event が渡された時など
・ Action Name :対話アプリに伝える「アクション名」
・ Parameters : ユーザーの会話から抽出した Entity をパラメータとしてサー バーに送ることがでる。 → 通常は User says の内容を元に自動で追加される が、うまく取得できない場合などに手動で追加・修正することも可能
・ Response :ユーザーへの回答を返すことができる。
簡単な答えを返すだけなら、 Default Response で回答が可能
Entity
・ユーザーから抽出したいキーワード( Alexa の Slot に相当)
・ System Entity :日付や住所と言った標準で Dialogflow が抽出・解析できる
・ Developer Entity : 開発者が独自に Entity を追加することもできる
㈱ HIRO ICT研究所
21
20. 対話アプリを作る Firebase
実際の例
// Intent
のアクション名を指定const NAME_ACTION = ‘confirm_delay’;
// パラメータのPARAMETER NAMEを指定 const ROUTE_ARGUMENT = ‘train-route’;
exports.dialogflowFirebaseFulfillment =
functions.https.onRequest((request, response) => { const app = new App({request, response});
function confirmDelay (app) {
let route = app.getArgument(ROUTE_ARGUMENT); // 路線名を取得する let isDelay = false; // 簡単のため、常に「遅延なし」とする
/*
指定した路線の電車遅延情報を取得する処理をここに書く*/
if (isDelay) {
app.tell(‘
近未来研究会の皆様、こんにちわ。’ + route + ‘
で遅延発生中です。’);
} else {
app.tell(‘
近未来研究会の皆様、こんにちわ。現在‘ + route + ’では遅延は発生していません。’);
} }
let actionMap = new Map();
actionMap.set(NAME_ACTION, confirmDelay); //アクション「confirm_delay」に対応の関数 app.handleRequest(actionMap);
});
21. 音声会話のスケジュール機能( 1 )
スケジュール機能とは
・時間になったら、音声で以下のようなシーケンスで呼びかけを行う
①会話開始:「○○さん」
②注意喚起:「おはようございます」
③先行連鎖:「今日はデーサービスの日です」
④情報伝達:「 12 時にお迎えの車が来ます」
⑤会話終了:「よろしくお願いします」
・ネットワーク接続が不安定な場所では、音声認識エンジン( Julius )を使用
・テキスト → 音声変換エンジン( Open J-Talk )を使用
◯ ◯ さん おはようございます 今日はデーサービスの日です
12時にお迎えの車が来ます
よろしくお願いします返事が不明
返事が不明
空間知能化
ロボット
お話AIちゃん
液晶
TV
マイク スケジュール
(JSON)
スケジュール 実行
独居高齢者
(見守られ側)
Julius/J-Talk
22. 音声会話のスケジュール機能( 2 )
スケジュールの種類
・毎日:毎日の指定時間に呼びかけ会話を行う
・毎週:毎週の指定時間に呼びかけ会話を行う
・当日:当日だけの指定時間に呼びかけ会話を行う
・緊急:緊急的に指定時間に呼びかけ会話を行う
見守り会話結果の通知
・見守り結果は、見守り側にメールで通知
・見守り結果は、クラウド( AWS )にも保存可能
AWS API Gateway
AWS Lambda
クラウド空間知能化
ロボット
お話AIちゃん
スケジュール
(DynamoDB)
液晶TV
タブレット
(見守り側)
マイク スケジュール
(JSON)
コピー(自動/手動)スケジュール スケジュール 入力
実行
スケジュール 閲覧
独居高齢者
(見守られ側)
㈱ HIRO ICT研究所
24
23. 音声会話のスケジュール機能( 3 )
決められた時間に独居高齢者との音声会話を開始する
・「スケジュール」は、 JSON 形式でクラウド DB ( AWS DynamoDB )側に持つ
・プライマリキー:電話番号( 2001 など)
・レンジキー:スケジュール開始日時( 2018-01-13 15:00:00 など)
毎日のスケジュール
・レンジキー: 2016-12-31 HH:MM:SS とする
・ラズパイ上は、「 2001_schedules_2016-12-31_HH:MM:SS.json 」ファイル
毎週のスケジュール
・レンジキー: 2017-01-01 HH:MM:SS とする(日曜日の場合)
・ラズパイ上は、「 2001_schedules_2017-01-01_HH:MM:SS.json 」ファイル
当日だけのスケジュール
・レンジキー: YYYY-MM-DD HH:MM:SS とする(実際の日付)
・ラズパイ上は「 2001_schedules_YYYY-mm-DD_HH:MM:SS.json 」ファイル
緊急のスケジュール
・レンジキー: YYYY-MM-DD HH:MM:SS とする(実際の日付)
・ラズパイ上は「 2001_schedules_YYYY-MM-DD_HH:MM:SS.json 」ファイル に統合される
DynamoDB内では GMT時間が使用される
WebSocketサーバ経由 でクラウドから通知される
㈱ HIRO ICT研究所
25
24. 音声会話のスケジュール機能( 4 )
スケジュールを JSON 形式で表現する
・「スケジュール」は、 JSON 形式で表現され、音声会話は①会話の開始、
②注意喚起、③先行連鎖、④情報伝達、⑤会話の終了の順に行われる
・ 「スケジュール」の種類は、①毎日、②毎週、③当日、④緊急の 4 種類が あるが、それぞれを JSON オブジェクトの配列としてマージして処理を行う
スケジュール( JSON データ)の形式
{
“extension”: “2001”,
“start_date”: “2018-01-25 15:00:00”,
“status”: 0,
“title”: “ 生活情報支援 ”,
“description”:[ “ ○○さん、おはようございます。 ”, // 会話の開始 “ 今日は、 <ai>%Y 年 %m 月 %d 日 %H 時 %M 分 </ai> です ”, // 注意喚起 “ 今日はデーサービスの日です ”, // 先行連鎖 “12 時に車が来ます ”, // 情報伝達 “ よろしくお願いします ”] // 会話の終了 }
<ai>タグで現在の年月日 時分秒が取得できる
25. ラズパイ上で深層学習を行う
Chainer の利用
・ Preferred Networks が開発した深層学習を実装するためのライブラリ
・深層強化学習( DQN )をサポートする ChainerRL ライブラリもある
・ラズパイ上の Python 言語から使用されることを前提としている
・学習時間は遅いが、学習済みのモデルを使った推論は利用できる
・ 2017 年の「インタフェース 8 月号」で多くのサンプルアプリが紹介された
・これを機に、 NF 研で「深層学習」に関するメールリストが作られた
TensorFlow の利用
・ Google が開発した機械学習を実装するためのライブラリ
・ラズパイ上の Python 言語から使用されることを前提としている
・ XLA と呼ばれるコンパイル機能があり、学習時間と推論時間の短縮が可能
26. AI スピーカが使用する深層学習( RNN )
RNN ( Recurrent Neural Network )とは
・ RNN は NN で時系列解析を行うためのもので、 80 年代に提案された
・ある時刻 t におけるモデルの出力は、次の時刻 t+1 の入力の予測値になる
・時刻 t+1 では、その時刻における入力 + 前回の履歴を時間的文脈として利用
・ LSTM ( Long Short-Term Memory )を使用して、長期依存を学習できる
RNNLM ( Recurrent Neural Network Language Model )とは
・ RNN を言語モデルとして応用したものが RNNLM である
・従来の N- グラムを使用した方式と比べ、長い文章を統計処理できる
㈱ HIRO ICT研究所
28
27. AI スピーカの自然言語処理を実現する RNNLM
従来の N- グラムを使用した方式(ネットワーク方式)
・単語の出現確率を頻度から計算する( Viterbi アルゴリズムを使用)
・適切な N- グラム確率を計算することにフォーカス
→ 各単語は独立に扱われる
→ 単語間の関係はない
→ アウトドメインに強い
・性能は早い
RNN を使用した方式( RNNLM 方式)
・単語の出現確率をデータから学習・予測する( LTSM アルゴリズムを使用)
→ 直接、コーパスに対して尤度最大化
→ インドメインに強い
→ アウトドメイン?何それ
・各単語を連続空間のベクトルとして表現する
→ 似た言語は、似たベクトルを持つ
→ ベクトルの計算ができる
「 king 」 - 「 man 」 + 「 woman 」 = 「 queen 」
・性能は遅い(特に学習時間)
28. センサーデータ統計処理( IoT )にも RNNLM を使用
従来のセンサーデータ統計処理( IoT )の問題
・ Viterbi アルゴリズムに依存するため、個別に問題を解く必要がある
・例えば、各部屋に設置した人感センサーから人間の行動を予測
→ 部屋数、センサーの設置場所等を個別に考慮して問題を解く必要がある
RNN を使用したセンサーデータ統計処理
・下図の RNNML の場合と同様に、 RNN 計算により人間の行動を予測できる
29. オプションとしてロボットを使用できる
PaPeRo-i :各種センサーを搭載している
・カメラ☓ 2 : VGA カメラ☓ 2 (顔認識用)、 SVGA カメラ☓ 2 (静止画用)
・マイク☓ 2 : 指向性(音声認識用)、 無指向性(ノイズキャンセラー用)
・スピーカ: 音声合成用、音楽演奏など
・赤外線センサー: 人検知用( 1m 以内、± 40 °)
・温度センサー: 0 ℃~ 40 ℃
・湿度センサー: 20%RH ~ 90%RH
・加速度センサー: 地震や床音の検知などの応用可能
・ボリューム: ソフトでも音量の変更が可能
独居高齢者
(見守られ側)
ロボットは特に 女性に人気が高い