「会話」タグアーカイブ

ロボデックスでの技術セミナー「ロボコミュニケーション元年? ロボットは AI の夢を見るか?」での内容を一部再編成してここに残しておきます

ヒューマノイドロボット NAO

このビデオに出てくるロボット、 NAO、歴史は古く、2008年に国際的に行なわれているロボットのサッカーコンテスト、ロボカップの標準プラットフォームとして登場したのが第一号、その後改良を重ね、現在販売されているものは第5世代になります。
NAO の顔、どこか Pepper に似ていませんか? NAO はフランスはアルデバランという会社で開発されたロボットです。
Pepper はソフトバンクロボティクスとアルデバランによって開発されたロボットということで NAO は Pepper の兄貴分にあたります。
その後アルデバランはソフトバンクロボティクスに吸収され、現在 NAO も含めアルデバランが開発したロボットはソフトバンクロボティクスのロボットとして販売されています。

NAO の機能

NAO は25の関節を持ち、Linux OS上に独自の制御OS を搭載した自律型のロボットです。 2008年に最初のバージョンがリリース、その後バージョンアップを重ね、音声認識、会話機能は第4世代で標準機能として搭載されます。
NAO の標準の音声認識機能はキーワードベースの音声認識で、あらかじめ定義しておいた言葉のどれを聞いたかということを判別する音声認識です。
例えば、「はい」、と「いいえ」を音声認識エンジンに登録することで「はい」と聞いたか、「いいえ」と聞いたかを判別することができるようになります。
音声認識は、プログラムから発動させることにより開始されまして、音声認識中は、NAO の目が青い色がぐるぐる回るような表現をします。
NAO とコミュニケーションをとるとき、これらの信号を見て人側で NAO に話しかけるタイミングを見計らう必要があります。

クラウド音声認識の利用による新たなロボットと人との会話の可能性

このビデオでの音声認識、実は標準機能以外の方法で音声認識を実現しています。
標準の音声認識機能は NAO 本体の中で音声を聞き取る組み込み型の音声認識です。これに対してここでは、NAO のマイク音声をライブでクラウドサーバーにストリーミングし、クラウドの音声認識エンジンを使って音声認識をさせています。

音声は常時バッファリング、音声認識のタイミングを NAO 側が見計っており、音声認識をする段になると、そこから一定時間遡ったところから音声認識を行っています。これにより人側は話しかけるタイミングを見計らう必要は無くなりました。話している最中目が青くなりますが、これは NAO が音声認識のタイミングを見計ったことを示しています。

ロボットとの会話によるコミュニケーション、まだまだ先だと思っていました、数ヶ月前までは。しかしクラウドの音声認識エンジンと NAO をつなげてみて私の意識は大きく変わりました。音声認識分野において技術の進歩は加速度的です。コンピュターの性能が上がり、機械学習などの周辺の技術が進歩したことで、音声認識の精度は日々上がってきています。 従来 NAO は音声認識を苦手としていました。小さい頭の中にはマイクを搭載されていて、そのマイクの周辺には CPU があり、CPU を冷やすための冷却ファンがありという状況、このためマイクには常にノイズが混入しています。 NAO に正しく音声を認識させるのは結構なコツが必要でした。

Amazon Echo、Google Home と音声アシストデバイスが今、北米ではトレンドです。 音声によるマンマシンインターフェースは間もなくタッチインターフェースの次のメジャーインターフェースとしてその幅を利かせてくるのは間違いないという印象があります。  実用が始まることでビジネスの循環が生まれ、この循環が音声認識のさらなる性能向上をもたらす。音声認識はいよいよ本格的な成長の段階に入ってきたのではと私は思っています。

我々としてはこの音声認識の進化をいち早くロボットに取り入れそこにロボットの新たな価値と可能性を見つけていきたいと考えています。

このデモでは返答文をクラウド側で引き出してきて NAO に発話させています。 音声認識した言葉は Google Cloud Natural Language API を使い単語に分解しています。
Google Cloud Natural Language API は言葉を単語に分解するだけでなく、各単語を地域名などの幾つかの分類に自動的に振り分けてくれるます。 そこで単語と、単語ごとの分類を記録、この中に地域名が含まれているかどうか、天気というキーワードが入っているか、今日や明日といったキーワードが入っているかをチェックし、これらのキーワードが入っている時、天気予報サービスから天気予報を取得、返答文を作成。またこれら情報のいずれかが欠けている場合はその部分については前回の内容を引き継ぐこととしています。  さらにどの情報も含まれていない場合は、QA ベースの会話エンジンに流し、一問一答形式で受け答えをしています。
天気予報部分の処理は独自実装で、QA ベースの会話には現状 IBM Watson を活用しています。 この辺りは現在試行錯誤の段階であり、今後、さらにいろいろな手法を試したいと思っています。

マンマシンインターフェースとしての音声会話、すぐに起こりそうな今後の可能性

北米では Amazon エコーの会話機能をつかさどる Alexa が 3rd party にその開発プラットフォームを解放したことで急速にその能力を向上させているようです。

Alexa が日本に来るのはまだ少し時間がかかるようですが、その動きには大変興味があります。 Alexa の開発プラットフォームを見るとルールベースの会話の定義であり、今回の天気予報の会話の仕組みを実現しているものと大きな違いがあるわけではないようです。

これは今の段階における現実的な手法だと思っています。今の段階において実用レベルで実現可能性な会話機能というのは言ったことを着実に行ってくれる召使との会話のようなもので、それに加えて、まずは人が機械との会話の仕方を覚える必要があるのかもしれません。調べ物をして欲しい時は 「◯×を調べて」という、質問をしたい時は「◯×はなんですか?」と聞くとか。

Amazon Echo、Google Home と音声アシスタンスデバイスの活躍の場は間違いなく今後増えていくとして、同じようなことを腕がついて動いたりするロボットでやる意味はあるのか?  確かに家庭向けを考えると、現時点ではコスト面を考えると早すぎるとは思います。

しかし家庭ではないシーンで音声会話をインターフェースとしたロボットは今後どんどん増えていくべきと思っています。それは会話によるコミュニケーションは今後間違いなくソーシャルロボットに求められる機能の一つであり、ロボットゆえの進化の領域があると考えられるからです。

将来的には何故それをロボットでやる必要があるのではなく、それロボットができるのにわざわざ他のデバイスを用意する必要あるのという時代が来ると私は信じていて、現在その途中の過程にいるのだと私たちは信じています。

スマートロボティクスについて

スマートロボティクスは去年2016年の4月に始まったばかりの非常に新しい会社です。社名に「ロボティクス」とあるように我々はロボットをやる会社として創業しました。
ロボット技術で世界を少しでも便利に、良くしていきたいという思いのもと集まったメンバーからなり、私を含め何名かは NAO のメーカ、アルデバランの出身であり、海外の製品のローカライズ、国内展開は我々が得意とすることの一つです。
アルデバラン出身者以外の者たちも様々な形で過去にもロボットに携わり、その情熱をもとにスマートロボティクスの事業立ち上げに携わってきました。

私は技術部に属していますが、技術部はなかなか面白い面々の集まりです。

ロボットに思いを馳せながら CAD 設計を仕事としてやってきていたもの、小学生の頃発明家の家に入り浸り電気工学と機械工学の基礎を学び大学ではロボカップで世界大会に出た者、趣味でロボットを作り続け、専用のモーション作成ソフトまで作ってしまう者、皆ロボットをやりたいという思いでスマートロボティクスに集まりました。

我々のビジネスの柱は大きく2つありまして、一つは既成のロボットの販売とそれらのロボットで動くソフトウェアの開発、そしてもうひとつはロボットを始めとするオリジナルハードウェアの設計と製造です。

まず一つめの既成ロボットの販売とそれに向けたソフトウェア開発ですが、我々は NAO と Pepper の販売代理店であり、これらのロボット向けのソフトウェアーを開発し、そこに付加価値を加えることで新たな利用価値をお客様に提供、代理店の一歩先を目指しています。

私個人でいうと過去10年ほど技術サポートとして多くのお客様を支えてきた経験があり、技術面でお客様をサポートさせていただくことが私の何よりも得意とするところでございました。現職においては例えばソリューション開発のような形で様々なニーズを持つお客様と一緒にロボットの活用方法を模索していくことができればと考えています。

我々がもう一つの柱として掲げているのがロボットを含む様々なオリジナルハードウェアの開発と設計です。

我々の作るロボットとは全く新しい何かを作るというより、既成の色々なものを組み合わせてそれをロボットという仕上がりにしていくようなものかもしれません。

我々は様々なメーカー様と協力の関係を持ちながら進歩をしていく必要があり、様々な形での取り組みを現在模索しています。様々なロボットを生み出し、流通し、その魅力を常に下支えする。ロボットのことならとりあえずスマロボに相談しようとなれればと思っています。

仕事は辛いけど趣味には何時間も費やすことできます。スマートロボティクスの技術部は自分にとって楽しいこと居心地のいいことをやりきってそれで世の中に貢献し、それが仕事になるように今、一所懸命頑張っています。

私たちは私たちと思いを同じくする同志を探しています。我々と一緒に仕事しませんか? 関われる形はそれぞれの会社、個人あると思います。

どのような形であれ、ロボットで世界を良くしていきたい。そういった志がある方。私たちはあなたと一緒に仕事ができることを望んでいます。


ターゲット

  • ロボットの会話を作りたい人
  • チャットボットを自作したい人
  • 自分好みの会話をロボットにさせたい人
  • 会話がどのように生成されるか興味がある人など…

はじめに

ロボットの会話を作成しているりょぼっとです。

ロボット会話職人」の第一号(?)として活動しています。

今回はロボットの会話を作成する際に使っているIBM Bluemix上のWatsonのConversationについて解説します。

ロボットだけでなく多くの利用用途があるのでぜひ使ってみてほしいです。(30日間無料)

なお、IBM Bluemix上のConversationは日本語対応が正式には発表されていません。今後、何らかの理由で利用できなくなる可能性があるのでご注意ください。

Conversationとは

Conversationを使うと以下のようにブラウザ上で会話のシナリオを作成することができます。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-16-31-51

conversationの3大要素

基本的にはこの3つさえ押さえておけば会話を開発することができます。

  • Intents
    • 文章のカテゴリ・意図を作成する。
  • Entities
    • 単語を登録する。
  • Dialog
    • 返答を記述する。

作ってみる

実際に会話を作成した方が理解は早いので、作成してみましょう。

何かテーマがある方が作りやすいので、テーマを「お正月のロボット」として開発していきます。

Intents

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-13-44-03

Intentsの作り方は2つあります。1つ目はCreate newでGUIベースに作る方法ですが、慣れてくると2つ目のImportを使います。Importではあらかじめ作成したcsvデータを元に、Conversationが自動的に振り分けてくれるので便利です。ということで今回はImportを使います。

今回は以下のようなcsvデータを用意しました。(文字コードはUTF-8)


あけましておめでとうございます,greeting
今年もよろしくお願いします,greeting
よいお年を,greeting
こんにちは,greeting
おはようございます,greeting
さようなら,greeting

このデータをImportすると以下のように画面が変わり、無事追加されたことがわかります。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-08-44

では、試しに会話をしてみましょう。画面右上にある %e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-14-31 のボタンを押すと、一番下にコメントを入力できる欄ができます。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-14-43

そこに「あけましておめでとうございます」と書き込み、Enterを打つと、

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-15-09

正しくgreetingに分類されました。

Dialog

次に、このセリフに対しての返答を書き込みます。

Dialogの画面でCreateを押すと以下のような画面が出てきます。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-23-23

Enter a conditionには先ほど作成したIntentsのカテゴリ名を、Enter a responseには返答を書きます。今回は「#greeting」と「おめでとうございます」を設定しました。

では、先ほどと同じように会話をしてみましょう。「あけましておめでとうございます」と打ってみてください。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-31-03

このように、先ほど追加した返答が返されます。

では、「こんにちは」と打ってみてください。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-38-40

「こんにちは」の返答が「おめでとうございます」となっています。これでは会話が成立しませんよね。そこでEntitiesの登場です。

Entities

Entitiesの画面を開くとIntentsにはなかったUse system entitiesというものがあります。これは数字や日付等の認識を可能にできますが今回は使用しません。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-41-16

Intentsと同じように以下のcsvデータをImportします。


greeting,hello,こんにちは,やあ,やっほー
greeting,bye,さようなら,バイバイ,じゃあね,またね
greeting,morning,おはよう,おはようございます
newyear,hello,あけましておめでとうございます,あけおめ
newyear,meet,よろしく,よろしくお願いします
year,year,今年,年

Importしたらこのようにカテゴリ分けが行われます。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-16-00-37

それではまた前回と同じように会話をしてみましょう。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-16-04-15

このように、先ほど登録した言葉を認識しています。あとは一気にDialogを作成します。

最終的にはこのようなフローになりました。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-16-31-51

会話を試してみた結果がこちらです。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-17-06-45

すべての発話に対して正しい返答ができています。

おわりに

このように簡単にロボットの会話を作成することができます!

今回は導入部分のみの解説にはなりましたが、より高度な扱いをすることが可能です。

次回はConversationとロボットを繋げる方法や、より高度な使い方などについて解説していきたいと思います。

 


会話を期待されながら残念ながらいまいち会話が噛み合わない Pepper、問題の一つは音声認識にあります。スマートフォンに話しかけたりするのとは違ってマイクと話者との距離があったり、小さい頭の中に CPU やらそれを冷却するファンやらが集積されている中に埋め込まれたマイクは、構造上ノイズを拾いやすかったりと、音声認識の精度を上げることに一定の技術的、環境的ハードルがありました。 また Pepper が標準でアプリデベロッパーに提供する音声認識はあらかじめ登録したキーワードに対して聞いた言葉をマッチングさせる、キーワードベースの音声認識であり、登録したキーワード以外のことを発話されると会話はとかく破綻してしまいがちでした。 Pepper の兄貴分にあたる NAO も状況は同じで、Pepper よりさらに小さな頭にいろんなものが集積されている分、問題はより深刻でした。

どうにか NAO にもっと会話をさせたい。試行錯誤をしてきた中でかなりいい感じになってきたものがありこの場で紹介させてください。

どうですか? 音声認識の機能自体は私たちが開発したわけではなく、クラウドの音声認識を使っているのですが、ここへの音声の送信をライブで行っているところに工夫があります。 レスポンスも申し分なく、ノイズ耐性もかなり良いです。

現在この技術をサービス化してより多くの人に使ってもらえるよう開発中です!

近年の機械学習の進化により音声認識の分野は急速に精度が上がってきているようです。ロボットとの会話を考えたとき次に待っているのは、聞いたことに対してロボットがどう答えるか。 この分野はまだまだ未成熟で、これからかなという感じです。 
まずは色々なボットにつなげてみたり、AIや会話エンジンといっているものにつなげてみたい。 私たちもこれらの技術を持っているベンダーさんを探していますが、自薦、他薦、オススメありましたら情報をいただければと思います!

かつて HTMLというコンテンツ配信技術が生まれ、Web製作という職業が生まれたように、音声認識、音声合成の技術が成熟し、会話エンジンの仕組みがある程度整理されると、ロボットに会話を覚えさせる「ロボット会話職人」のような職業が生まれてくるのかな、そんな妄想をしてしまう今日この頃です。