(57)【要約】      （修正有）【課題】コンピュータと人間とのより高度な対話内容をより簡単に拡充できるようにすること。【解決手段】シナリオ作成支援システムは、端末装置１０において、ＧＵＩ形成部と、データ生成部とを備え、サーバにおいて、データ提供部を備える。ＧＵＩ形成部は、シナリオにおけるシーンの流れを表すフローを構成するためのフロー生成部と、シーンの内容を定義するシーン生成部と、定義されたシーンの内容をビジュアルプログラミングするためのプログラム編集部とを含むユーザインターフェース画面を形成する。データ生成部は、ＧＵＩ形成部によって形成されたユーザインターフェース画面への入力に応じて、サーバに蓄積された要素となるデータを用いて、シナリオのデータを生成する。データ提供部は、端末装置によって要求された要素となるデータを提供する。【選択図】図３
2018032330.tif 000002
【特許請求の範囲】
【請求項１】
対話処理のシナリオのデータを生成する情報処理装置と、前記シナリオのデータの要素となるデータを蓄積するサーバとが通信可能に構成された情報処理システムであって、
前記情報処理装置は、
前記シナリオにおけるシーンの流れを表すフローを構成するためのフロー生成部と、前記シーンの内容を定義するシーン生成部と、定義された前記シーンの内容をビジュアルプログラミングするためのプログラム編集部とを含むユーザインターフェース画面を形成するインターフェース形成手段と、
前記インターフェース形成手段によって形成された前記ユーザインターフェース画面への入力に応じて、前記サーバに蓄積された前記要素となるデータを用いて、前記シナリオのデータを生成するデータ生成手段と、を備え、
前記サーバは、
前記情報処理装置によって要求された前記要素となるデータを提供するデータ提供手段を備えることを特徴とする情報処理システム。
【請求項２】
前記インターフェース形成手段は、前記フロー生成部において、前記シーンを表す画像情報を配列するための入力を受け付け、前記シーンを表す画像情報の配列が確定される前に、当該シーンを表す画像情報が配列された場合の前記シナリオにおけるシーンの流れを表示するナビゲーション表示処理を実行することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記インターフェース形成手段は、前記ナビゲーション表示処理において、前記シーンを表す画像情報に対応する前記シーンが、当該シーンの前または後のシーンと整合するか否かを報知することを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記インターフェース形成手段は、前記シーン生成部において、前記シーンにおいて実行されるイベントを定義するために、前記対話処理を実行するコンピュータの振る舞いを表す１または複数のアクションの入力を受け付けることを特徴とする請求項１から３のいずれか１項に記載の情報処理システム。
【請求項５】
前記インターフェース形成手段は、前記プログラム編集部において、前記シーンにおいて実行されるイベントのロジックを表すブロックと、当該ロジックで用いられるデータを表すブロックとを配列するための入力を受け付けることを特徴とする請求項１から４のいずれか１項に記載の情報処理システム。
【請求項６】
前記インターフェース形成手段は、前記ロジックを表すブロックとして、複数の前記イベントを並列処理するためのブロックの配列を受け付け、
前記データ生成手段は、複数の前記イベントを並列処理する前記シナリオのデータを生成することを特徴とする請求項５に記載の情報処理システム。
【請求項７】
前記インターフェース形成手段は、前記フロー生成部において、生成される前記シナリオのデータに関する分類項目の設定を受け付け、
前記データ生成手段は、前記分類項目が設定された前記シナリオのデータを生成することを特徴とする請求項１から６に記載の情報処理システム。
【請求項８】
前記データ提供手段は、前記要素となるデータとして、他の前記シナリオのデータを提供し、
前記インターフェース形成手段は、前記フロー生成部において、他の前記シナリオを前記シーンとする入力を受け付け、
前記データ生成手段は、他の前記シナリオを前記シーンに含む新たな前記シナリオを生成することを特徴とする請求項１から７のいずれか１項に記載の情報処理システム。
【請求項９】
前記データ生成手段によって生成された前記シナリオのデータを前記サーバに蓄積するために送信するシナリオデータ送信手段を備えることを特徴とする請求項１から８のいずれか１項に記載の情報処理システム。
【請求項１０】
対話処理のシナリオにおけるシーンの流れを表すフローを構成するためのフロー生成部と、前記シーンの内容を定義するシーン生成部と、定義された前記シーンの内容をビジュアルプログラミングするためのプログラム編集部とを含むユーザインターフェース画面を形成するインターフェース形成手段と、
前記インターフェース形成手段によって形成された前記ユーザインターフェース画面への入力に応じて、前記シナリオのデータを生成するデータ生成手段と、
を備えることを特徴とする情報処理装置。
【請求項１１】
対話処理のシナリオのデータを生成する情報処理装置と、前記シナリオのデータの要素となるデータを蓄積するサーバとが通信可能に構成された情報処理システムにおけるサーバであって、
前記情報処理装置によって要求された前記要素となるデータを提供するデータ提供手段と、
前記情報処理装置によって生成された前記シナリオのデータを、前記データ提供手段によって提供される前記要素となるデータとして蓄積するデータ蓄積手段と、
を備えることを特徴とするサーバ。
【請求項１２】
対話処理のシナリオのデータを生成する情報処理装置が実行する情報処理方法であって、
前記シナリオにおけるシーンの流れを表すフローを構成するためのフロー生成部と、前記シーンの内容を定義するシーン生成部と、定義された前記シーンの内容をビジュアルプログラミングするためのプログラム編集部とを含むユーザインターフェース画面を形成するインターフェース形成ステップと、
前記インターフェース形成ステップにおいて形成された前記ユーザインターフェース画面への入力に応じて、前記シナリオのデータを生成するデータ生成ステップと、
を含むことを特徴とする情報処理方法。
【請求項１３】
対話処理のシナリオのデータを生成する情報処理装置と、前記シナリオのデータの要素となるデータを蓄積するサーバとが通信可能に構成された情報処理システムにおけるサーバが実行する情報処理方法であって、
前記情報処理装置によって要求された前記要素となるデータを提供するデータ提供ステップと、
前記情報処理装置によって生成された前記シナリオのデータを、前記データ提供ステップにおいて提供される前記要素となるデータとして蓄積するデータ蓄積ステップと、
を含むことを特徴とする情報処理方法。
【請求項１４】
コンピュータに、
対話処理のシナリオにおけるシーンの流れを表すフローを構成するためのフロー生成部と、前記シーンの内容を定義するシーン生成部と、定義された前記シーンの内容をビジュアルプログラミングするためのプログラム編集部とを含むユーザインターフェース画面を形成するインターフェース形成機能と、
前記インターフェース形成機能によって形成された前記ユーザインターフェース画面への入力に応じて、前記シナリオのデータを生成するデータ生成機能と、
を実現させることを特徴とするプログラム。
【請求項１５】
対話処理のシナリオのデータを生成する情報処理装置と、前記シナリオのデータの要素となるデータを蓄積するサーバとが通信可能に構成された情報処理システムにおけるサーバを構成するコンピュータに、
前記情報処理装置によって要求された前記要素となるデータを提供するデータ提供機能と、
前記情報処理装置によって生成された前記シナリオのデータを、前記データ提供機能によって提供される前記要素となるデータとして蓄積するデータ蓄積機能と、
を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、サーバ、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、コンピュータと人間とが対話を行う対話システムが知られている。
このような対話システムにおいて、対話のデータ（対話のコンテンツ）を作成する場合、対話内容を考案するクリエータが作成したシナリオに従い、プログラマがプログラムを行うことにより、目的とする対話のデータが実現される。
ここで、対話とは、発話に基づくイベントをトリガとした状態遷移によって成り立つものであり、コンピュータと人間との対話のデータをプログラムする場合にも、プログラマが状態遷移に関する記述を行って、目的とする対話内容を実現している。
なお、非特許文献１には、ロボット開発におけるシナリオの作成を容易に行うための開発環境として、専用言語を用いたシナリオエディタに関する技術が開示されている。非特許文献１に記載されたシナリオエディタでは、発話、音声認識あるいはモーション等の機能ブロックを組み合わせることで、ロボットのシナリオを開発可能としている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「シナリオエディタ」、［ｏｎｌｉｎｅ］、ＮＥＣソリューションイノベータ株式会社、［平成２８年７月２１日検索］、インターネット＜ＵＲＬ：http://www.nec-solutioninnovators.co.jp/sl/robot/point05.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、コンピュータと人間との対話内容を拡充する場合、クリエータによって考案された対話内容毎に、プログラマが状態遷移に関する記述を行って、目的とする対話内容を実現するものとすると、作業負担が多大となり、コンピュータと人間との対話内容を容易に拡充することができない。
また、非特許文献１に記載された技術は、機能ブロックを組み合わせることでシナリオの開発を可能とするものであるが、組み合わせられる機能ブロックは、種々の目的でシナリオを作成する上で必ずしも適切な粒度とはなっていない可能性がある。また、機能ブロックを構成するロジックを変更する場合には、専用言語を理解してプログラムを変更する必要があることから、その作業は容易ではない。
なお、ビジュアルプログラミングによってコンピュータ上のキャラクタの動きをプログラムする手法等が知られているが、プログラム可能な機能は単純なものに留まり、このような手法を用いて高度な対話内容を実現することは困難である。
このように、従来の技術においては、コンピュータと人間との高度な対話内容を簡単に拡充することが困難であった。
【０００５】
本発明は、コンピュータと人間とのより高度な対話内容をより簡単に拡充できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の一態様の情報処理システムは、
対話処理のシナリオのデータを生成する情報処理装置と、前記シナリオのデータの要素となるデータを蓄積するサーバとが通信可能に構成された情報処理システムであって、
前記情報処理装置は、
前記シナリオにおけるシーンの流れを表すフローを構成するためのフロー生成部と、前記シーンの内容を定義するシーン生成部と、定義された前記シーンの内容をビジュアルプログラミングするためのプログラム編集部とを含むユーザインターフェース画面を形成するインターフェース形成手段と、
前記インターフェース形成手段によって形成された前記ユーザインターフェース画面への入力に応じて、前記サーバに蓄積された前記要素となるデータを用いて、前記シナリオのデータを生成するデータ生成手段と、を備え、
前記サーバは、
前記情報処理装置によって要求された前記要素となるデータを提供するデータ提供手段を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、コンピュータと人間とのより高度な対話内容をより簡単に拡充することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明に係るシナリオ作成支援システムのシステム構成を示す図である。
【図２】端末装置及びサーバを構成する情報処理装置のハードウェア構成を示す図である。
【図３】端末装置の機能構成を示すブロック図である。
【図４】シナリオ作成ＧＵＩの一例を示す模式図である。
【図５】サーバの機能構成を示すブロック図である。
【図６】端末装置が実行するＧＵＩ提供処理の流れを示すフローチャートである。
【図７】端末装置が実行するフロービルダー入出力処理の流れを示すフローチャートである。
【図８】端末装置が実行するシーンビルダー入出力処理の流れを示すフローチャートである。
【図９】端末装置が実行するブロックエディタ入出力処理の流れを示すフローチャートである。
【図１０】サーバが実行するシナリオ作成支援処理の流れを示すフローチャートである。
【図１１】キャラクタと人間とが対話を行う際に、キャラクタが人間の名前を尋ねるシナリオの一例を模式的に示す図である。
【図１２】ユーザ定義イベントが作成される手順の一例を模式的に示す図である。
【図１３】ユーザ定義イベントが作成される手順の一例を模式的に示す図である。
【図１４】ユーザ定義イベントが作成される手順の一例を模式的に示す図である。
【図１５】ユーザ定義イベントが作成される手順の一例を模式的に示す図である。
【図１６】フロービルダー部におけるシナリオのフローの表示例を示す模式図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について、図面を用いて説明する。
【００１０】
［構成］
［システム構成］
図１は、本発明に係るシナリオ作成支援システム１のシステム構成を示す図である。
シナリオ作成支援システム１は、本発明に係る情報処理システムの一実施形態として構成されるものであり、コンピュータ上に生成されたキャラクタが人間と対話する際のシナリオ（対話処理のシナリオ）の作成を支援するシステムである。
【００１１】
本実施形態において、シナリオ作成支援システム１では、キャラクタの一連の対話のフローを表すシナリオのデータが、シーンのデータを構成単位として構築される。シーンとは、対話のフローを構成する要素であり、各シーンは、対話における対話者の発話や操作あるいはシーンの遷移等に基づいて発生する各種イベントによって構成される。また、イベントが発生すると、そのイベントの内容が定義（ビジュアルプログラム）されたアクションが実行される。
また、シナリオ作成支援システム１において、シナリオのデータが構築される場合、ユーザに対して、後述するように、フロービルダー、シーンビルダー及びブロックエディタを含むＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）が提供される。本実施形態において、フロービルダーでは、シーンを表すアイコンを配列することで、一連の対話のフローを表すシナリオを構築することができる。また、シーンビルダーでは、各シーンの内容（音声認識等のシーンを構成するイベント）を定義することができる。さらに、ブロックエディタでは、シーンにおける動作内容（具体的には、シーンを構成するイベントで実行されるアクションの内容）を、ロジックを表すブロックと、データを表すブロックとを組み合わせることでビジュアルプログラムによって編集することができる。
【００１２】
図１に示すように、シナリオ作成支援システム１は、複数の端末装置１０と、サーバ２０とを含んで構成され、複数の端末装置１０とサーバ２０とは、ネットワーク３０を介して互いに通信可能に構成されている。
【００１３】
端末装置１０は、クリエータ等のユーザによって使用され、後述するＧＵＩ提供処理を実行することにより、シナリオのデータを構築するためのＧＵＩ（以下、「シナリオ作成ＧＵＩ」と称する。）を提供する。端末装置１０は、シナリオ作成ＧＵＩにおいて、シナリオを構成するための部品データをサーバ２０から取得し、ユーザが選択可能な形態で提供する。また、端末装置１０は、シナリオ作成ＧＵＩにおいて作成されたシナリオのデータをサーバ２０にアップロードする。サーバ２０にアップロードされたシナリオのデータは、他のシナリオのデータを作成する際に、部品データとして再利用することが可能となっている。
【００１４】
サーバ２０は、複数の部品データを格納した部品データベース（部品ＤＢ）と、複数のシナリオのデータを格納したシナリオデータベース（シナリオＤＢ）とを備えている。そして、サーバ２０は、後述するシナリオ作成支援処理を実行することにより、端末装置１０においてシナリオ作成ＧＵＩがユーザに提供される際に、部品ＤＢに格納されている部品データ及びシナリオＤＢに格納されているシナリオのデータを端末装置１０に適宜提供する。
【００１５】
［ハードウェア構成］
次に、シナリオ作成支援システム１の端末装置１０及びサーバ２０のハードウェア構成について説明する。
端末装置１０及びサーバ２０は、情報処理装置によって構成され、例えば端末装置１０はＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、サーバ２０はサーバコンピュータによって構成することができる。
【００１６】
図２は、端末装置１０及びサーバ２０を構成する情報処理装置８００のハードウェア構成を示す図である。
図２に示すように、情報処理装置８００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）８１１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８１２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１３と、バス８１４と、入力部８１５と、出力部８１６と、記憶部８１７と、通信部８１８と、ドライブ８１９と、を備えている。
【００１７】
ＣＰＵ８１１は、ＲＯＭ８１２に記録されているプログラム、または、記憶部８１７からＲＡＭ８１３にロードされたプログラムに従って各種の処理を実行する。
ＲＡＭ８１３には、ＣＰＵ８１１が各種の処理を実行する上において必要なデータ等も適宜記憶される。
【００１８】
ＣＰＵ８１１、ＲＯＭ８１２及びＲＡＭ８１３は、バス８１４を介して相互に接続されている。バス８１４には、入力部８１５、出力部８１６、記憶部８１７、通信部８１８及びドライブ８１９が接続されている。
【００１９】
入力部８１５は、各種釦等で構成され、指示操作に応じて各種情報を入力する。
出力部８１６は、ディスプレイやスピーカ等で構成され、画像や音声を出力する。
記憶部８１７は、ハードディスクあるいはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成され、各サーバで管理される各種データを記憶する。
通信部８１８は、ネットワークを介して他の装置との間で行う通信を制御する。
【００２０】
ドライブ８１９には、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリ等よりなる、リムーバブルメディア８２１が適宜装着される。ドライブ８１９によってリムーバブルメディア８２１から読み出されたプログラムは、必要に応じて記憶部８１７にインストールされる。
なお、上記ハードウェア構成は、情報処理装置８００の基本的構成であり、端末装置１０あるいはサーバ２０を構成する場合、適宜、付加的なハードウェアを備えることができる。例えば、端末装置１０を構成する場合、デジタル画像を撮像する撮像部を備えること等が可能である。
【００２１】
［機能的構成］
次に、端末装置１０及びサーバ２０の機能構成について説明する。
図３は、端末装置１０の機能構成を示すブロック図である。
図３に示すように、端末装置１０のＣＰＵ８１１がＧＵＩ提供処理を実行することにより、ＣＰＵ８１１において、ＧＵＩ形成部１１１と、ＧＵＩ入力受付部１１２と、データ生成部１１３と、データ実行部１１４と、シナリオデータ登録部１１５とが機能する。また、端末装置１０の記憶部８１７には、シナリオデータ記憶部１２１が形成される。
【００２２】
シナリオデータ記憶部１２１には、シナリオ作成ＧＵＩにおいて作成されたシナリオのデータが記憶される。
ＧＵＩ形成部１１１は、ＧＵＩ提供処理の実行開始と共に、表示画面上にシナリオ作成ＧＵＩを形成する。
図４は、シナリオ作成ＧＵＩの一例を示す模式図である。
図４に示すように、シナリオ作成ＧＵＩには、フロービルダー部１３１と、シーンビルダー部１３２と、ブロックエディタ部１３３とが含まれている。
【００２３】
フロービルダー部１３１は、シナリオ全体のフローを構成するためのＧＵＩである。フロービルダー部１３１において、ユーザは、シナリオを構成するシーンを表すアイコンを配列することで、目的とする対話の流れの枠組みを有するシナリオを構成することができる。即ち、ユーザは、シナリオをシーンの状態遷移として定義することができる。本実施形態において、フロービルダー部１３１では、シナリオを構成するシーンを予め用意された各種属性のシーンから選択して追加することが可能となっている。例えば、図４においては、シーンの属性として、円形のアイコンで表される通常のシーンと、四角形のアイコンで表される参照用のシーンとが用意されている。通常のシーンは、イベントやアクション等を定義することが可能であり、参照用のシーンは、他のシーンを参照するのみで、イベントやアクション等を定義することはできない。
【００２４】
なお、本実施形態においては、通常のシーンとして、シナリオ作成支援システム１において予め用意されている特定の内容を表すシーンのデータ（部品データ）を選択可能となっている。例えば、シナリオの作成時に、高い頻度で組み込まれる内容のシーンのデータを部品データとして予め用意しておくことができる。具体的には、キャラクタが挨拶するシーンのデータ等を部品データとして用意しておくことができる。また、上述のように、本実施形態においては、サーバ２０にアップロードされたシナリオのデータも、部品データとして再利用することが可能となっている。
【００２５】
また、フロービルダー部１３１において、予め用意されている部品データあるいはシナリオのデータを配列する場合、ＧＵＩ形成部１１１が、配列の適否を示すナビゲーション表示を実行する。具体的には、ユーザが部品データあるいはシナリオのデータのアイコンをドラッグし、作成中のシナリオのデータにおけるいずれかの位置に配列しようとした場合、ドラッグ中の状態において、ＧＵＩ形成部１１１は、配列後のシナリオのフローを表す接続線を一時的に表示する。即ち、ＧＵＩ形成部１１１は、作成中のシナリオのデータに、追加される部品データ等がドラッグされた場合、追加される部品データ等の親となるシーンのアイコンを識別して表示すると共に、親となるシーンのアイコンから、追加される部品データ等に繋がる仮想的な接続線を表示する。なお、この仮想的な接続線は、親となるシーンのアイコンから追加される部品データ等に接続可能な場合にのみ表示される。そのため、ユーザは、追加される部品データ等を当該位置に配列した場合に、適切なシナリオのフローとなるか否かを予め確認することができる。
【００２６】
なお、追加される部品データ等が、既に配列されているシーンのアイコンを接続する接続線の位置に重ねてドラッグされた場合、前後のシーンのアイコンとの間に、仮想的な接続線を表示してもよい。この場合にも、仮想的な接続線は、前後のシーンのアイコンと追加される部品データ等とを接続可能な場合にのみ表示される。これにより、ユーザは、前後のシーンとの関係において、追加される部品データ等が当該位置に配列可能であるか否かを予め確認することができる。例えば、前のシーン（親となるシーン）において音声認識した結果を受けて、複数の分岐先のシーン（後のシーン）に繋がることを前提とするフローの位置に、フローが終了するシーンや無関係なシーンにジャンプするシーンが配列されることを防ぐことができる。
このように、ＧＵＩ形成部１１１のナビゲーション表示機能により、シナリオ作成ＧＵＩにおいては、シーン間の整合性（ロジックあるいは引き渡されるデータ等の整合性）を担保しながら、シナリオのデータを作成することができる。
【００２７】
シーンビルダー部１３２は、各シーンの内容を定義するためのＧＵＩである。シーンビルダー部１３２において、ユーザは、シーンを構成するイベントをシーンに追加または削除することができると共に、各イベントの発生条件や分岐条件等、イベントの論理的な内容を定義することができる。また、１つのイベントの論理的な内容は、１つのアクションとして定義され、アクションの内容はブロックエディタ部１３３によって編集することができる。本実施形態において、各シーンには、シーンの開始時の内容を表す「シーン開始イベント」が少なくとも含まれ、「シーン開始イベント」に続く各種イベントを追加することができる。例えば、各シーンには、特定の発話パターンが音声認識によって検出された場合に開始される「音声認識パターン検出イベント」や、発話において特定のクラスに属する単語が音声認識によって検出された場合に開始される「音声認識クラス検出イベント」や、発話において特定の意図が音声認識によって検出された場合に開始される「意図検出イベント」等を追加することができる。ここで、単語のクラスとは、例えば、駅名や地名等、予め定義された特定の属性であり、発話における意図とは、例えば、人工知能等による自然言語処理で取得可能な意図である。
【００２８】
また、本実施形態において、シーンビルダー部１３２では、条件分岐によって発生するイベントの内容をそれぞれ独立したアクションとして定義することができる。そのため、音声認識パターン検出イベント等における分岐処理を定義する場合に、一般のプログラミングのように、分岐条件の判断及びそれぞれの分岐先における処理を一体として記述する必要がなく、それぞれの判断結果を含むイベントを定義し、各イベントに対する処理を記述することでプログラミングすることが可能となる。例えば、キャラクタが「お出かけしますか？」と発話するイベントに続いて、音声認識パターン検出イベントとして、音声認識結果に「はい」が含まれる場合のイベント及び「いいえ」が含まれる場合のイベントをそれぞれ定義しておくことにより、分岐条件の判断結果に対応したイベントを実行することができる。これにより、複雑で長大なプログラムを記述する必要がなくなり、シンプルなプログラミングの積み重ねによって、目的とする対話処理の内容を記述することが可能となる。
【００２９】
また、シーンビルダー部１３２には、キャラクタの振る舞いを表示するキャラクタ表示ウィンドウが形成されている。本実施形態において、キャラクタ表示ウィンドウに表示されるキャラクタの動作は、作成されるシナリオのデータに合わせて、ＭＭＤ（ＭｉｋｕＭｉｋｕＤａｎｃｅ）等の３Ｄコンピュータグラフィックスソフトウェアによって作成することが可能となっている。さらに、シーンビルダー部１３２におけるキャラクタ表示ウィンドウには、ユーザによって特定の機能が設定されたボタンアイコンを配置することができる。キャラクタ表示ウィンドウに配置されたボタンアイコンは、キャラクタが人間と対話する際に、キャラクタと共に表示される。キャラクタ表示ウィンドウにおけるボタンアイコンは、例えばシーン毎に定義することができ、ボタンアイコンが操作された場合の動作については、ブロックエディタ部１３３においてプログラムすることが可能である。
【００３０】
なお、本実施形態において、イベントには、イベントの発生条件が予め決められている「システム標準イベント」と、イベントの発生条件をユーザが定義可能な「ユーザ定義イベント」とが含まれる。上述の「シーン開始イベント」は「システム標準イベント」に該当し、「音声認識パターン検出イベント」、「音声認識クラス検出イベント」及び「意図検出イベント」等は「ユーザ定義イベント」に該当する。
【００３１】
ブロックエディタ部１３３は、シーンにおける動作内容をビジュアルプログラムによって編集するためのＧＵＩである。ブロックエディタ部１３３において、ユーザは、ロジックを表すブロックと、データを表すブロックとを組み合わせることで、ビジュアルプログラムによって、シーンにおける動作内容（シーンを構成するイベントで実行されるアクションの内容）を編集することができる。本実施形態において、ブロックエディタ部１３３では、イベントで実行されるアクションを予め用意された各種属性のブロックのサンプルから選択することが可能となっている。例えば、図４において、ブロックエディタ部１３３の領域の左端には、各種属性のブロックのサンプルが格納されたブロックサンプルメニューの領域が表示されている。これらブロックサンプルメニューのいずれかを選択すると、その属性のブロックのサンプルが一覧表示され、ユーザは、これらの中から目的とするブロックを選択することが可能となる。即ち、ブロックエディタ部１３３において選択可能なブロックには、音声認識、音声合成あるいはキャラクタの動作等の属性のブロックが含まれ、ユーザは、目的とするブロックを選択して、シーンにおける具体的な動作内容を編集することができる。
【００３２】
一例として、ブロックサンプルメニューの「音声合成」の中には、「発話する」というロジックを表すブロックが格納されており、図４においては、この「発話する」というブロックが選択されている。また、図４に示す例では、「発話する」というブロックの後に「文字列」というブロック及び「行き先」というブロックが配列されている。「文字列」のブロックは、後ろに配列されるブロックのデータを文字列として解釈する命令を表すものである。また、「行き先」のブロックは、変数「行き先」に格納されているデータを表し、例えば、図４に示す例では、「音声認識パターン検出イベント」で検出された地名（「京都」等）が格納されている。さらに、図４に示す例では、「行き先」というブロックの後に「定型句（に行くんだね）」のブロックが配列されている。「定型句（に行くんだね）」のブロックは、キャラクタの発話パターンの１つであり、キャラクタの対話相手である人間が、いずれかの場所に行く内容の対話を行った場合に、キャラクタの応答に用いられる。なお、「文字列」のブロック等、一部のブロックは、標準の設定を決めておくこと等により、ビジュアルプログラムにおける配列を省略できる構成としてもよい。
【００３３】
また、本実施形態において、ブロックエディタ部１３３において配列されるロジックあるいはデータのブロックは、ブロックの形状によって、前後のブロックとの整合性を示すものとなっている。即ち、ブロックの左右には、ブロックの内容に応じて所定の形状（凹凸形状）が形成されており、前に配列されたブロックと文法的あるいは論理的に整合しないブロックの場合、前に配列されたブロックの右端の形状とは、左端の形状が嵌まり合わない形状となっている。
これにより、ユーザは、文法的あるいは論理的に整合しないブロック同士であることを容易に認識できるため、不適切なプログラムが行われることを防ぐことが可能となる。
【００３４】
また、本実施形態においては、ロジックのブロックとして、並列処理を行うためのブロックが用意されている。この並列処理を行うためのブロックは、キャラクタに発話をさせながら、対応する動作をさせるためのプログラムを行う場合等に用いることができる。例えば、キャラクタに「こんにちは」と発話させながら、「おじぎする」という動作をさせる場合、並列処理を行うためのブロックにおける第１の処理（アクション）として、「発話する」というロジックのブロック及び「こんにちは」というデータのブロックを配列する。また、並列処理を行うためのブロックにおける第２の処理（アクション）として、「モーション実行」というロジックのブロック及び「おじぎ」というデータのブロックを配列する。このとき、並列処理を行うためのブロックが実行されると、キャラクタによる「こんにちは」の発音と、「おじぎ」の動作とが同時に行われる。
これにより、キャラクタに並列的な動作を行わせる場合に、並列的な動作の組み合わせ毎に命令を用意する必要がなくなり、要素となる動作を組み合わせることで、種々の並列的な動作を簡単にキャラクタに実行させることが可能となる。
なお、並列処理を行うためのブロックに定義された複数の処理（アクション）は、これらの全てが終了した時点で並列処理が終了したものとされ、この時点が次のイベントに移行する基準のタイミングとなる。
【００３５】
図３に戻り、ＧＵＩ入力受付部１１２は、シナリオ作成ＧＵＩの各部に対するユーザの入力を受け付け、受け付けた入力内容をＧＵＩ形成部１１１、データ生成部１１３、データ実行部１１４、あるいは、シナリオデータ登録部１１５に出力する。例えば、ＧＵＩ入力受付部１１２は、フロービルダー部１３１におけるシーンを表すアイコンの選択を受け付けたり、シーンビルダー部１３２におけるイベントを追加する指示の入力を受け付けたり、ブロックエディタ部１３３におけるブロックの選択を受け付けたりする。
【００３６】
データ生成部１１３は、シナリオ作成ＧＵＩの各部に対するユーザの入力に応じて、シナリオの作成に関する各種のデータを生成する。例えば、データ生成部１１３は、フロービルダー部１３１においてシーンを表すアイコンが選択された場合、作成中のシナリオのデータに、選択されたアイコンに対応するシーンのデータを追加する。また、データ生成部１１３は、シーンビルダー部１３２においてイベントを追加する指示が行われた場合、作成中のシナリオのデータにおいて、シーンのデータにイベントのデータを追加する。さらに、データ生成部１１３は、ブロックエディタ部１３３においてイベントで実行されるアクションのブロックが選択された場合、作成中のシナリオのデータに、選択されたブロックに対応するアクションのデータを追加する。
【００３７】
データ実行部１１４は、シナリオ作成ＧＵＩにおいて作成されたシナリオのデータを実行し、キャラクタによる人間との対話を進行する。
なお、データ実行部１１４は、ユーザの指定に応じて、シナリオ作成ＧＵＩにおいて作成されているシナリオのデータの一部を実行することも可能である。
これにより、ユーザは、作成中のシナリオのデータが実行された場合のシミュレーションを行いながら、シナリオのデータを作成することができる。
【００３８】
シナリオデータ登録部１１５は、ユーザの指示に応じて、シナリオ作成ＧＵＩにおいて作成されたシナリオのデータをサーバ２０に送信し、シナリオＤＢに登録する。
シナリオＤＢに登録されたシナリオのデータは、他のユーザがシナリオ作成ＧＵＩにおいてシナリオのデータを作成する際に、部品のデータとして再利用可能となる。
【００３９】
次に、サーバ２０の機能構成について説明する。
図５は、サーバ２０の機能構成を示すブロック図である。
図５に示すように、サーバ２０のＣＰＵ８１１がシナリオ作成支援処理を実行することにより、ＣＰＵ８１１において、シナリオ登録受付部２１１と、データ要求取得部２１２と、提供データ取得部２１３と、データ提供部２１４とが機能する。また、サーバ２０の記憶部８１７には、シナリオＤＢ２２１と、部品ＤＢ２２２とが形成される。
【００４０】
シナリオＤＢ２２１には、キャラクタと人間との種々の対話内容を表すシナリオのデータが記憶されている。
部品ＤＢ２２２には、特定の内容を表す種々の部品データが記憶されている。
【００４１】
シナリオ登録受付部２１１は、端末装置１０においてシナリオ作成ＧＵＩによって作成され、シナリオＤＢに登録するために送信されたシナリオのデータを受信し、シナリオＤＢ２２１に登録する。
【００４２】
データ要求取得部２１２は、シナリオ作成ＧＵＩで選択される部品データを要求するためのデータ要求を、端末装置１０から取得する。
【００４３】
提供データ取得部２１３は、データ要求取得部２１２によって取得されたデータ要求に示される部品データを部品ＤＢ２２２から取得する。なお、提供データ取得部２１３は、データ要求が部品データとしてのシナリオデータを要求するものである場合、データ要求に示されるシナリオデータをシナリオＤＢ２２１から取得する。
【００４４】
データ提供部２１４は、提供データ取得部２１３によって取得された部品データあるいはシナリオのデータを、データ要求を行った端末装置１０に提供する。
【００４５】
［動作］
次に、シナリオ作成支援システム１の動作を説明する。
初めに、端末装置１０の動作について説明する。
【００４６】
［ＧＵＩ提供処理］
図６は、端末装置１０が実行するＧＵＩ提供処理の流れを示すフローチャートである。
ＧＵＩ提供処理は、端末装置１０において、ＧＵＩ提供処理の実行を指示する操作が行われることに対応して開始される。
ステップＳ１において、ＧＵＩ形成部１１１は、表示画面上にシナリオ作成ＧＵＩ（図４参照）を形成する。
【００４７】
ステップＳ２において、ＧＵＩ形成部１１１は、ＧＵＩ入力受付部１１２を介してシナリオ作成ＧＵＩへの入力が行われたか否かの判定を行う。
ＧＵＩ入力受付部１１２を介してシナリオ作成ＧＵＩへの入力が行われた場合、ステップＳ２においてＹＥＳと判定されて、処理はステップＳ３に移行する。
一方、ＧＵＩ入力受付部１１２を介してシナリオ作成ＧＵＩへの入力が行われていない場合、ステップＳ２においてＮＯと判定されて、処理はステップＳ１１に移行する。
【００４８】
ステップＳ３において、ＧＵＩ形成部１１１は、シナリオ作成ＧＵＩへの入力がフロービルダー部１３１への入力であるか否かの判定を行う。
シナリオ作成ＧＵＩへの入力がフロービルダー部１３１への入力である場合、ステップＳ３においてＹＥＳと判定されて、処理はステップＳ４に移行する。
一方、シナリオ作成ＧＵＩへの入力がフロービルダー部１３１への入力でない場合、ステップＳ３においてＮＯと判定されて、処理はステップＳ５に移行する。
ステップＳ４において、ＧＵＩ形成部１１１は、フロービルダー入出力処理（後述）を実行する。
ステップＳ４の後、処理はステップＳ１１に移行する。
【００４９】
ステップＳ５において、ＧＵＩ形成部１１１は、シナリオ作成ＧＵＩへの入力がシーンビルダー部１３２への入力であるか否かの判定を行う。
シナリオ作成ＧＵＩへの入力がシーンビルダー部１３２への入力である場合、ステップＳ５においてＹＥＳと判定されて、処理はステップＳ６に移行する。
一方、シナリオ作成ＧＵＩへの入力がシーンビルダー部１３２への入力でない場合、ステップＳ５においてＮＯと判定されて、処理はステップＳ７に移行する。
ステップＳ６において、ＧＵＩ形成部１１１は、シーンビルダー入出力処理（後述）を実行する。
ステップＳ６の後、処理はステップＳ１１に移行する。
【００５０】
ステップＳ７において、ＧＵＩ形成部１１１は、シナリオ作成ＧＵＩへの入力がブロックエディタ部１３３への入力であるか否かの判定を行う。
シナリオ作成ＧＵＩへの入力がブロックエディタ部１３３への入力である場合、ステップＳ７においてＹＥＳと判定されて、処理はステップＳ８に移行する。
一方、シナリオ作成ＧＵＩへの入力がブロックエディタ部１３３への入力でない場合、ステップＳ７においてＮＯと判定されて、処理はステップＳ９に移行する。
ステップＳ８において、ＧＵＩ形成部１１１は、ブロックエディタ入出力処理（後述）を実行する。
ステップＳ８の後、処理はステップＳ１１に移行する。
【００５１】
ステップＳ９において、ＧＵＩ形成部１１１は、シナリオ作成ＧＵＩへの入力が作成中のシナリオの実行を指示する操作であるか否かの判定を行う。なお、ステップＳ９においては、作成中のシナリオの一部（１シーンのみ等）または全体の実行の指示が受け付けられる。
シナリオ作成ＧＵＩへの入力が作成中のシナリオの実行を指示する操作である場合、ステップＳ９においてＹＥＳと判定されて、処理はステップＳ１０に移行する。
一方、シナリオ作成ＧＵＩへの入力が作成中のシナリオの実行を指示する操作でない場合、ステップＳ９においてＮＯと判定されて、処理はステップＳ１１に移行する。
ステップＳ１０において、データ実行部１１４は、ステップＳ９において実行が指示されたシナリオ（一部または全体）を実行する。
【００５２】
ステップＳ１１において、ＧＵＩ形成部１１１は、シナリオ作成ＧＵＩへの入力がシナリオのデータをサーバ２０のシナリオＤＢに登録する指示のための操作であるか否かの判定を行う。
シナリオ作成ＧＵＩへの入力がシナリオのデータをサーバ２０のシナリオＤＢに登録する指示のための操作である場合、ステップＳ１１においてＹＥＳと判定されて、処理はステップＳ１２に移行する。
一方、シナリオ作成ＧＵＩへの入力がシナリオのデータをサーバ２０のシナリオＤＢに登録する指示のための操作でない場合、ステップＳ１１においてＮＯと判定されて、処理はステップＳ１３に移行する。
ステップＳ１２において、シナリオデータ登録部１１５は、シナリオのデータをシナリオＤＢに登録するためにサーバ２０に送信する。
【００５３】
ステップＳ１３において、ＧＵＩ形成部１１１は、シナリオ作成ＧＵＩの終了を指示する操作が行われたか否かの判定を行う。
シナリオ作成ＧＵＩの終了を指示する操作が行われた場合、ステップＳ１３においてＹＥＳと判定されて、ＧＵＩ提供処理は終了となる。
一方、シナリオ作成ＧＵＩの終了を指示する操作が行われていない場合、ステップＳ１３においてＮＯと判定されて、処理はステップＳ２に移行する。
【００５４】
［フロービルダー入出力処理］
次に、ＧＵＩ提供処理のステップＳ４で実行されるフロービルダー入出力処理について説明する。
図７は、端末装置１０が実行するフロービルダー入出力処理の流れを示すフローチャートである。
ステップＳ４１において、ＧＵＩ形成部１１１は、シーンを表すアイコンのドラッグが行われたか否かの判定を行う。
シーンを表すアイコンのドラッグが行われた場合、ステップＳ４１においてＹＥＳと判定されて、処理はステップＳ４２に移行する。
一方、シーンを表すアイコンのドラッグが行われていない場合、ステップＳ４１においてＮＯと判定されて、処理はステップＳ４３に移行する。
ステップＳ４２において、ＧＵＩ形成部１１１は、シーンを表すアイコンの配列の適否をナビゲーション表示すると共に、シーンを表すアイコンの選択を受け付ける。ステップＳ４２で受け付けられたアイコンの選択は、逐次、データ生成部１１３によってシナリオのデータに反映される。即ち、ステップＳ４２では、適切なシナリオのフローとなるか否かを予め確認しながら、シーンを表すアイコンを配列することができる。
【００５５】
ステップＳ４３において、ＧＵＩ形成部１１１は、プロパティの編集を指示する操作が行われたか否かの判定を行う。なお、プロパティとは、シナリオのデータの作者、更新日時等の属性情報である。本実施形態において、シナリオのデータのプロパティには、シナリオのデータのカテゴリを定義するための「分類項目」を設定することが可能である。例えば、「分類項目」として、「グルメ検索」−「渋谷」と階層的に設定しておくことより、他のユーザ等によって「渋谷のグルメ検索シナリオ」というシーンの検索が行われた場合に、容易に適切なシナリオのデータを検索することが可能となる。
プロパティの編集を指示する操作が行われた場合、ステップＳ４３においてＹＥＳと判定されて、処理はステップＳ４４に移行する。
一方、プロパティの編集を指示する操作が行われていない場合、ステップＳ４３においてＮＯと判定されて、処理はステップＳ４５に移行する。
ステップＳ４４において、ＧＵＩ形成部１１１は、プロパティの編集のための画面を表示し、プロパティの編集を受け付ける。ステップＳ４４で受け付けられたプロパティの編集内容は、逐次、データ生成部１１３によってシナリオのデータに反映される。
【００５６】
ステップＳ４５において、ＧＵＩ形成部１１１は、シナリオ変数の編集を指示する操作が行われたか否かの判定を行う。なお、シナリオ変数とは、１つのシナリオの実行中は常に有効となる変数であり、シナリオに含まれるシーンに共通して用いることが可能な変数である。
シナリオ変数の編集を指示する操作が行われた場合、ステップＳ４４においてＹＥＳと判定されて、処理はステップＳ４６に移行する。
一方、シナリオ変数の編集を指示する操作が行われていない場合、ステップＳ４４においてＮＯと判定されて、処理はステップＳ４７に移行する。
ステップＳ４６において、ＧＵＩ形成部１１１は、シナリオ変数の編集のための画面を表示し、シナリオ変数の編集を受け付ける。ステップＳ４６で受け付けられたシナリオ変数の編集内容は、逐次、データ生成部１１３によってシナリオのデータに反映される。
【００５７】
ステップＳ４７において、ＧＵＩ形成部１１１は、シーン変数の編集を指示する操作が行われたか否かの判定を行う。なお、シーン変数とは、シナリオにおける１つのシーンの実行中にのみ有効となる変数であり、その１つのシーン内でのみ用いることが可能な変数である。
シーン変数の編集を指示する操作が行われた場合、ステップＳ４７においてＹＥＳと判定されて、処理はステップＳ４８に移行する。
一方、シーン変数の編集を指示する操作が行われていない場合、ステップＳ４７においてＮＯと判定されて、処理はＧＵＩ提供処理に戻る。
ステップＳ４８において、ＧＵＩ形成部１１１は、シーン変数の編集のための画面を表示し、シーン変数の編集を受け付ける。ステップＳ４８で受け付けられたシーン変数の編集内容は、逐次、データ生成部１１３によってシナリオのデータに反映される。
ステップＳ４８の後、処理はＧＵＩ提供処理に戻る。
【００５８】
［シーンビルダー入出力処理］
次に、ＧＵＩ提供処理のステップＳ６において実行されるシーンビルダー入出力処理について説明する。
図８は、端末装置１０が実行するシーンビルダー入出力処理の流れを示すフローチャートである。
ステップＳ６１において、ＧＵＩ形成部１１１は、イベントの追加または削除を指示する操作が行われたか否かの判定を行う。
イベントの追加または削除を指示する操作が行われた場合、ステップＳ６１においてＹＥＳと判定されて、処理はステップＳ６２に移行する。
一方、イベントの追加または削除を指示する操作が行われていない場合、ステップＳ６１においてＮＯと判定されて、処理はステップＳ６３に移行する。
【００５９】
ステップＳ６２において、ＧＵＩ形成部１１１は、イベントの追加または削除を受け付ける。ステップＳ６２で受け付けられたイベントの追加または削除は、逐次、データ生成部１１３によってシナリオのデータに反映される。
ステップＳ６３において、ＧＵＩ形成部１１１は、キャラクタ表示ウィンドウへのボタンアイコンの配置を指示する操作が行われたか否かの判定を行う。
キャラクタ表示ウィンドウへのボタンアイコンの配置を指示する操作が行われた場合、ステップＳ６３においてＹＥＳと判定されて、処理はステップＳ６４に移行する。
一方、キャラクタ表示ウィンドウへのボタンアイコンの配置を指示する操作が行われていない場合、ステップＳ６３においてＮＯと判定されて、処理はＧＵＩ提供処理に戻る。
ステップＳ６４において、ＧＵＩ形成部１１１は、キャラクタ表示ウィンドウにボタンアイコンを配置する。ステップＳ６２で実行されたボタンアイコンの配置は、逐次、データ生成部１１３によってシナリオのデータに反映される。
ステップＳ６４の後、処理はＧＵＩ提供処理に戻る。
【００６０】
［ブロックエディタ入出力処理］
次に、ＧＵＩ提供処理のステップＳ８で実行されるブロックエディタ入出力処理について説明する。
図９は、端末装置１０が実行するブロックエディタ入出力処理の流れを示すフローチャートである。
ステップＳ８１において、ＧＵＩ形成部１１１は、ブロックサンプルメニューの選択を指示する操作が行われたか否かの判定を行う。
ブロックサンプルメニューの選択を指示する操作が行われた場合、ステップＳ８１においてＹＥＳと判定されて、処理はステップＳ８２に移行する。
一方、ブロックサンプルメニューの選択を指示する操作が行われていない場合、ステップＳ８１においてＮＯと判定されて、処理はステップＳ８７に移行する。
【００６１】
ステップＳ８２において、ＧＵＩ形成部１１１は、選択されたサンプルメニューに対応するブロックのサンプルを一覧表示する。
ステップＳ８３において、ＧＵＩ形成部１１１は、一覧表示されたサンプルのいずれかの選択を指示する操作が行われたか否かの判定を行う。
一覧表示されたサンプルのいずれかの選択を指示する操作が行われた場合、ステップＳ８３においてＹＥＳと判定されて、処理はステップＳ８４に移行する。
一方、一覧表示されたサンプルのいずれかの選択を指示する操作が行われていない場合、ステップＳ８３においてＮＯと判定されて、処理はステップＳ８７に移行する。
【００６２】
ステップＳ８４において、ＧＵＩ形成部１１１は、選択されたサンプルのブロックが前後に配置されたブロックと整合するか否かの判定を行う。
選択されたサンプルのブロックが前後に配置されたブロックと整合する場合、ステップＳ８４においてＹＥＳと判定されて、処理はステップＳ８５に移行する。
一方、選択されたサンプルのブロックが前後に配置されたブロックと整合しない場合、ステップＳ８４においてＮＯと判定されて、処理はステップＳ８６に移行する。
ステップＳ８５において、ＧＵＩ形成部１１１は、選択されたサンプルのブロックを配列する。ステップＳ８５で受け付けられたサンプルのブロックの配列は、逐次、データ生成部１１３によってシナリオのデータに反映される。
ステップＳ８５の後、処理はステップＳ８７に移行する。
【００６３】
ステップＳ８６において、ＧＵＩ形成部１１１は、選択されたサンプルのブロックが前後に配置されたブロックと整合しない旨のアラートを報知（例えば、表示あるいは音声出力等）する。
ステップＳ８７において、ＧＵＩ形成部１１１は、配列されたサンプルのブロックにデータの入力を行う操作が行われたか否かの判定を行う。
配列されたサンプルのブロックにデータの入力を行う操作が行われた場合、ステップＳ８７においてＹＥＳと判定されて、処理はステップＳ８８に移行する。
一方、配列されたサンプルのブロックにデータの入力を行う操作が行われていない場合、ステップＳ８７においてＮＯと判定されて、処理はＧＵＩ提供処理に戻る。
【００６４】
ステップＳ８８において、ＧＵＩ形成部１１１は、サンプルのブロックをデータの入力を受け付ける状態で表示し、データの入力を受け付ける。ステップＳ８７で受け付けられたデータの入力は、逐次、データ生成部１１３によってシナリオのデータに反映される。
ステップＳ８８の後、処理はＧＵＩ提供処理に戻る。
【００６５】
次に、サーバ２０の動作について説明する。
［シナリオ作成支援処理］
図１０は、サーバ２０が実行するシナリオ作成支援処理の流れを示すフローチャートである。
シナリオ作成支援処理は、サーバ２０において、シナリオ作成処理の実行を指示する操作が行われることに対応して開始される。
【００６６】
ステップＳ１０１において、データ要求取得部２１２は、シナリオ作成ＧＵＩで選択される部品データを要求するためのデータ要求を、端末装置１０から取得したか否かの判定を行う。
シナリオ作成ＧＵＩで選択される部品データを要求するためのデータ要求を、端末装置１０から取得した場合、ステップＳ１０１においてＹＥＳと判定されて、処理はステップＳ１０２に移行する。
一方シナリオ作成ＧＵＩで選択される部品データを要求するためのデータ要求を、端末装置１０から取得していない場合、ステップＳ１０１においてＮＯと判定されて、処理はステップＳ１０４に移行する。
【００６７】
ステップＳ１０２において、提供データ取得部２１３は、データ要求取得部２１２によって取得されたデータ要求に示される部品データを部品ＤＢ２２２から取得する。このとき、提供データ取得部２１３は、データ要求が部品データとしてのシナリオデータを要求するものである場合、データ要求に示されるシナリオデータをシナリオＤＢ２２１から取得する。
【００６８】
ステップＳ１０３において、データ提供部２１４は、提供データ取得部２１３によって取得された部品データあるいはシナリオのデータを、データ要求を行った端末装置１０に提供する。
ステップＳ１０４において、シナリオ登録受付部２１１は、シナリオＤＢに登録するためのシナリオのデータを受信したか否かの判定を行う。
シナリオＤＢに登録するためにシナリオのデータを受信した場合、ステップＳ１０４においてＹＥＳと判定されて、処理はステップＳ１０５に移行する。
一方、シナリオＤＢに登録するためにシナリオのデータを受信していない場合、ステップＳ１０４においてＮＯと判定されて、シナリオ作成支援処理が繰り返される。
【００６９】
ステップＳ１０５において、シナリオ登録受付部２１１は、受信したシナリオのデータをシナリオＤＢ２２１に登録する。
ステップＳ１０５の後、シナリオ作成支援処理が繰り返される。
【００７０】
このように、本実施形態におけるシナリオ作成支援システム１では、シナリオ作成ＧＵＩによって視覚的にわかり易い形態でシナリオの作成を可能とすると共に、シーンにおけるイベントを、基本的な動作のブロックを選択してプログラムすることを可能としている。また、高い頻度でシナリオに組み込まれる内容のシーンのデータ等が部品データとして用意され、この部品データをシナリオのフローとして選択することを可能としている。さらに、作成されたシナリオのデータは、以降、他のシナリオのデータを作成する際に、部品データとして利用することが可能となっている。
そのため、幅広いクリエータが簡単にシナリオの考案からプログラムまでを行えるシナリオ作成環境を提供でき、シナリオ（コンテンツ）の開発を活発化させることが可能となる。また、作成されたシナリオの共有（再利用）を可能とすることで、クリエータのコミュニティの形成・発展に貢献することができる。
【００７１】
［シナリオの具体例］
次に、上述のような処理により、シナリオ作成支援システム１において作成されるシナリオの具体例について説明する。
図１１は、キャラクタと人間（対話者）とが対話を行う際に、キャラクタが対話者の名前を尋ねるシナリオの一例を模式的に示す図である。
図１１において、シーン構成内容の欄には、各シーンにおけるイベント及びアクションの内容が示され、シーン実行内容の欄には、シナリオを実行した場合のキャラクタと人間との対話内容の例が示されている。
【００７２】
図１１に示すように、シーン１は、キャラクタが対話者に挨拶を行うために作成されたシーンである。
シーン１には、シーン開始イベントが含まれ、シーン開始イベントのアクションとして、キャラクタが「はじめまして。「あおい」といいます。あなたのことは何て呼べばいいかな？」と発話する内容（キャラクタ発話）がプログラムされている。
また、シーン１には、シーン開始イベントのアクションとして、キャラクタ発話に次いで、シーン２に遷移する内容（シーン遷移）がプログラムされている。
【００７３】
シーン２は、対話者の回答待ちのために作成されたシーンである。
シーン２には、シーン開始イベントが含まれ、シーン開始イベントのアクションとして、音声認識を開始する内容（音声認識開始）がプログラムされている。
また、シーン２には、音声認識パターン検出イベントが含まれ、音声認識パターン検出イベントには、名前の単語のみが回答される発話パターンである「｛ｎａｍｅ｝」、名前と“って呼んで。”という語句の発話パターンである「｛ｎａｍｅ｝って呼んで。」、「私の名前は」と、名前と、「です。」という語句のパターンである「私の名前は｛ｎａｍｅ｝です。」といった発話パターンが定義されている。なお、｛ｎａｍｅ｝は、図１１に示すシナリオで用いられるシナリオ変数である。音声認識パターン検出イベントでは、これらの発話パターンにおけるシナリオ変数｛ｎａｍｅ｝に該当する単語が抜き出され、シナリオ変数に格納される。
【００７４】
また、シーン２には、音声認識パターン検出イベントのアクションとして、シーン３に遷移する内容（シーン遷移）がプログラムされている。
さらに、シーン２には、音声認識終了イベントが含まれ、音声認識終了イベントのアクションとして、キャラクタが「ごめんなさい。よく聞こえなかったよ。名前を教えてほしいな。」と発話する内容（キャラクタ発話）及び音声認識を開始する内容（音声認識開始）がプログラムされている。
【００７５】
シーン３は、名前の確認のために作成されたシーンである。
シーン３には、シーン開始イベントが含まれ、シーン開始イベントのアクションとして、キャラクタが名前（｛ｎａｍｅ｝）と、“さんって呼びますね。”という語句を発話する内容（キャラクタ発話）及び音声認識を開始する内容（音声認識開始）がプログラムされている。
また、シーン３には、音声認識パターン検出イベントが含まれ、音声認識パターン検出イベントには、“はい。”、“いいよ。”といった発話パターンが定義されている。
また、シーン３には、音声認識パターン検出イベントのアクションとして、シーン４に遷移する内容（シーン遷移）がプログラムされている。
さらに、シーン３には、音声認識終了イベントが含まれ、音声認識終了イベントのアクションとして、キャラクタが「ごめんなさい。よく聞こえなかったよ。名前を教えてほしいな。」と発話する内容（キャラクタ発話）及びシーン２に遷移する内容（シーン遷移）がプログラムされている。
【００７６】
シーン４は、名前の確定のために作成されたシーンである。
シーン４には、シーン開始イベントが含まれ、シーン開始イベントのアクションとして、キャラクタが名前（｛ｎａｍｅ｝）と、“さん、ヨロシクね。”という語句を発話する内容（キャラクタ発話）がプログラムされている。
なお、シーン３において、発話パターンが検出されなかった場合、シーン２にジャンプする。
【００７７】
このようなシーン構成内容の下、シーンのデータが実行された場合、シーン１においては、キャラクタが、「はじめまして。「あおい」といいます。あなたのことは何て呼べばいいかな？」と発話する。
そして、シーン２において、対話者が、「山田って呼んで。」と発話したとすると、シーン３において、キャラクタが、「山田さんって呼びますね。」と発話する。
これに対して、シーン３において、対話者が、「はい。」と発話すると、シーン４において、キャラクタが、「山田さん、ヨロシクね。」と発話する。
【００７８】
このように、各シーンの実行時には、システム標準イベント及びユーザ定義イベントを含む種々のイベントが発生する。例えば、システム標準イベントとして、各シーンの開始時には、シーンの開始時に１度のみ発生するシーン開始イベントが発生する。また、各シーンにおいて、特定のパターンが発話された場合にイベントが発生するようユーザによって定義された各種ユーザ定義イベントが発生する。これらのイベントに対して、シナリオの作成者が、種々のアクションを設定することで、シナリオが構成される。
なお、各アクションは、ブロックエディタ部１３３においてブロックを配列することでプログラムされる。
【００７９】
［ユーザ定義イベントの作成例］
次に、シナリオ作成支援システム１において作成されるユーザ定義イベントの具体例について説明する。
図１２〜図１５は、ユーザ定義イベントが作成される手順の一例を模式的に示す図である。
図１２〜図１５では、シーン２にシーン変数「行き先」を定義すると共に、行き先を尋ねる音声認識パターン検出イベントを定義し、さらに、音声認識検出イベントで検出された行き先を示す発話内容をシーン変数「行き先」に格納するためのプログラムをブロックエディタ部１３３によって作成する例を示している。
【００８０】
図１２に示すように、まず、フロービルダー部１３１においてシーン２が選択され、シーン２のシーン変数として、「行き先」が作成される。また、シーンビルダー部１３２において、音声認識パターン検出イベントの作成の指示が入力される。
次に、図１３に示すように、新しく生成された音声認識パターン検出イベントにおいて、イベント発生ルールを編集するための指示が入力される。ここで編集されるイベント発生ルールは、音声認識パターン検出イベントが発生するための条件を表すものである。
【００８１】
次に、図１４に示すように、音声認識パターン検出イベントのイベント発生ルールを編集するための画面において、今回定義する音声認識パターン検出イベントが発生するための発話パターンの定義が行われる。本実施形態において、発話パターンの定義には、一般的な「正規表現」を用いることができる。ここで、対話者の発話の中から情報を抽出する場合、抽出した情報を保存するための変数（シーン変数またはシナリオ変数）が指定される。図１４の例では、対話者が「○○に行きたい。」と発話した場合に、「○○」の情報がシーン変数「行き先」に保存されるよう設定されている。
【００８２】
次に、図１５に示すように、ブロックエディタ部１３３において、対話者が「○○に行きたい。」と発話した場合のアクションがビジュアルプログラミングで作成される。図１５に示す例では、対話者が「京都に行きたい」と発話した場合に、「京都に行くんだね。」とキャラクタが応答するアクションがプログラムされている。
このような手順により、ユーザが目的とするユーザ定義イベントのプログラムを容易に行うことができる。
【００８３】
［フロービルダー部におけるフローの表示例］
次に、フロービルダー部１３１においてシナリオのフローを表示する場合の表示例について説明する。
図１６は、フロービルダー部１３１におけるシナリオのフローの表示例を示す模式図である。
上述のように、シナリオのフローが作成される場合、ユーザがシナリオのアイコンをドラッグすることにより、目的とするフローの配列を作成する。
そこで、フローの前後関係及び並列関係をユーザにわかり易くするため、フロービルダー部１３１においては、フローの作成領域をマトリクス表示することができる。
即ち、図１６に示すように、先頭のシーンのアイコン（最上位のシーンのアイコン）が左端の列に配置され、後続のフローのアイコンは、順次、右側の列に配置される。また、分岐等により並列的な関係にあるシーンのアイコンは、同一の列において異なる行に配置される。なお、最後尾のシーンのアイコン（末尾のシーンのアイコン）の後ろのマスは、シーンを追加可能とするために空白のマスとされている。
このような表示形態において、同一の親（１つ上位）のシーンから分岐した並列的な関係にあるシーンのアイコン間については、それらの位置が置換可能となっている。
また、図１６において、破線で示すように、ナビゲーション表示が行われる場合、ドラッグされたアイコンが特定の列に位置している場合に、その親となるシーンのアイコンが識別して表示されると共に、親となるシーンのアイコンから、追加されるシーンのアイコンに繋がる仮想的な接続線が表示される。
このような表示形態により、ユーザは、シナリオのフローの作成をより容易に行うことが可能となる。
【００８４】
［変形例１］
上述の実施形態において示したものに加え、対話処理のシナリオ中で発生するイベントとして、種々のものを定義することが可能である。
例えば、端末装置１０の位置情報を契機として発生するイベントを定義することができる。
この場合、端末装置１０に、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）や、携帯電話基地局からの電波強度等を用いて現在位置を取得する現在位置取得部を備えておき、端末装置１０の現在位置が予め設定された位置の範囲に入った場合に発生するイベントを定義することが可能である。
これにより、端末装置１０に備えられているハードウェアと連携すること等により、多様な契機によって発生する種々のイベントを定義することができる。
【００８５】
以上のように構成されるシナリオ作成支援システム１は、端末装置１０と、サーバ２０とを含む。端末装置１０は、ＧＵＩ形成部１１１と、データ生成部１１３とを備える。また、サーバ２０は、データ提供部２１４を備える。
ＧＵＩ形成部１１１は、シナリオにおけるシーンの流れを表すフローを構成するためのフロー生成部（フロービルダー部１３１）と、シーンの内容を定義するシーン生成部（シーンビルダー部１３２）と、定義されたシーンの内容をビジュアルプログラミングするためのプログラム編集部（ブロックエディタ部１３３）とを含むユーザインターフェース画面（シナリオ作成ＧＵＩ）を形成する。
データ生成部１１３は、ＧＵＩ形成部１１１によって形成されたユーザインターフェース画面への入力に応じて、サーバ２０に蓄積された要素となるデータ（部品データ）を用いて、シナリオのデータを生成する。
データ提供部２１４は、端末装置１０によって要求された要素となるデータを提供する。
これにより、ユーザは、視覚的にわかり易いユーザインターフェース画面において、シナリオを構成する要素となるデータを選択し、シナリオにおけるシーンの内容を定義しつつ、シーンの内容をビジュアルプログラミングすることができる。また、ユーザは、シナリオを構成する要素となるデータとして、サーバ２０から提供されたものを用いることができる。
したがって、コンピュータと人間とのより高度な対話内容をより簡単に拡充することが可能となる。
【００８６】
ＧＵＩ形成部１１１は、フロー生成部において、シーンを表す画像情報を配列するための入力を受け付け、シーンを表す画像情報の配列が確定される前に、当該シーンを表す画像情報が配列された場合のシナリオにおけるシーンの流れを表示するナビゲーション表示処理を実行する。
これにより、ユーザは、追加しようとしているシーンをその位置に配列した場合に、適切なシナリオのフローとなるか否かを予め確認することが可能となる。
【００８７】
ＧＵＩ形成部１１１は、ナビゲーション表示処理において、シーンを表す画像情報に対応するシーンが、当該シーンの前または後のシーンと整合するか否かを報知する。
これにより、シーン間の整合性を担保しながら、シナリオのデータを作成することが可能となる。
【００８８】
ＧＵＩ形成部１１１は、シーン生成部において、シーンにおいて実行されるイベントを定義するために、対話処理を実行するコンピュータの振る舞いを表す１または複数のアクションの入力を受け付ける。
これにより、ユーザは、イベントの内容を柔軟に定義することが可能となる。
【００８９】
ＧＵＩ形成部１１１は、プログラム編集部において、シーンにおいて実行されるイベントのロジックを表すブロックと、当該ロジックで用いられるデータを表すブロックとを配列するための入力を受け付ける。
これにより、ユーザは、ロジックを表すブロックと、データを表すブロックとを組み合わせることで、ビジュアルプログラムによって、シーンの内容を入力することが可能となる。
【００９０】
ＧＵＩ形成部１１１は、ロジックを表すブロックとして、複数のイベントを並列処理するためのブロックの配列を受け付ける。
データ生成部１１３は、複数のイベントを並列処理するシナリオのデータを生成する。
これにより、要素となるイベントを組み合わせることで、種々の並列的な動作を簡単にプログラムすることが可能となる。
【００９１】
ＧＵＩ形成部１１１は、フロー生成部において、生成されるシナリオのデータに関する分類項目の設定を受け付ける。
データ生成部１１３は、分類項目が設定されたシナリオのデータを生成する。
これにより、容易に適切なシナリオのデータを検索することが可能となる。
【００９２】
データ生成部１１３は、要素となるデータとして、他のシナリオのデータを提供する。
ＧＵＩ形成部１１１は、フロー生成部において、他のシナリオをシーンとする入力を受け付ける。
データ生成部１１３は、他のシナリオをシーンに含む新たなシナリオを生成する。
これにより、他のシナリオのデータをシーンのデータとして利用することが可能となる。
【００９３】
また、端末装置１０は、シナリオデータ登録部１１５を備える。
シナリオデータ登録部１１５は、データ生成部１１３によって生成されたシナリオのデータをサーバ２０に蓄積するために送信する。
これにより、ユーザは、自らが作成したシナリオのデータをシーンのデータとして提供することができる。
【００９４】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
例えば、上述の実施形態において、サーバ２０の構成は一例として示したものであり、シナリオ作成支援システム１全体として、サーバ２０の機能が備えられていれば、サーバ２０の機能を複数のサーバに分割して実装したり、端末装置１０にサーバ２０の機能の一部を実装したりすることができる。
【００９５】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。
換言すると、図３及び図５の機能的構成は例示に過ぎず、特に限定されない。即ち、上述した一連の処理を全体として実行できる機能がシナリオ作成支援システム１に備えられていれば足り、この機能を実現するためにどのような機能ブロックを用いるのかは特に図３及び図５の例に限定されない。
また、１つの機能ブロックは、ハードウェア単体で構成してもよいし、ソフトウェア単体で構成してもよいし、それらの組み合わせで構成してもよい。
【００９６】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、コンピュータ等にネットワークや記録媒体からインストールされる。
コンピュータは、専用のハードウェアに組み込まれているコンピュータであってもよい。また、コンピュータは、各種のプログラムをインストールすることで、各種の機能を実行することが可能なコンピュータ、例えば汎用のパーソナルコンピュータであってもよい。
【００９７】
このようなプログラムを含む記録媒体は、ユーザにプログラムを提供するために装置本体とは別に配布される図２のリムーバブルメディア８２１により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される記録媒体等で構成される。リムーバブルメディア８２１は、例えば、磁気ディスク（フロッピディスクを含む）、光ディスク、または光磁気ディスク等により構成される。光ディスクは、例えば、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ），ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等により構成される。光磁気ディスクは、ＭＤ（Ｍｉｎｉ−Ｄｉｓｋ）等により構成される。また、装置本体に予め組み込まれた状態でユーザに提供される記録媒体は、例えば、プログラムが記録されている図２のＲＯＭ８１２や、図２の記憶部８１７に含まれるＤＲＡＭ等で構成される。
【００９８】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムの用語は、複数の装置や複数の手段等より構成される全体的な装置を意味するものとする。
【符号の説明】
【００９９】
１  シナリオ作成支援システム、１０  端末装置、２０  サーバ、３０  ネットワーク、１１１  ＧＵＩ形成部、１１２  ＧＵＩ入力受付部、１１３  データ生成部、１１４  データ実行部、１１５  シナリオデータ登録部、１２１  シナリオデータ記憶部、１３１  フロービルダー部、１３２  シーンビルダー部、１３３  ブロックエディタ部、２１１  シナリオ登録受付部、２１２  データ要求取得部、２１３  提供データ取得部、２１４  データ提供部、２２１  シナリオＤＢ、２２２  部品ＤＢ、８００  情報処理装置、８１１  ＣＰＵ、８１２  ＲＯＭ、８１３  ＲＡＭ、８１４  バス、８１５  入力部、８１６  出力部、８１７  記憶部、８１８  通信部、８１９  ドライブ、８２１  リムーバブルメディア
【図１】
2018032330.tif 000003
【図２】
2018032330.tif 000004
【図３】
2018032330.tif 000005
【図４】
2018032330.tif 000006
【図５】
2018032330.tif 000007
【図６】
2018032330.tif 000008
【図７】
2018032330.tif 000009
【図８】
2018032330.tif 000010
【図９】
2018032330.tif 000011
【図１０】
2018032330.tif 000012
【図１１】
2018032330.tif 000013
【図１２】
2018032330.tif 000014
【図１３】
2018032330.tif 000015
【図１４】
2018032330.tif 000016
【図１５】
2018032330.tif 000017
【図１６】
2018032330.tif 000018