(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
以下、本発明の実施形態について、図面を参照して説明する。
(第1の実施形態)
まず、本発明の第1の実施形態に係る情報処理装置1の概要について説明する。
情報処理装置1は、ユーザが発話した音声を受音し、受音した音声の発話内容に応じた機能を実現する。情報処理装置1には、予め設定された複数の音声コマンド(VC:Voice Command)のうち、入力された音声で指示される音声コマンドを特定し、特定した音声コマンドで指示される処理を実行する。音声コマンドグループは、システムコマンドグループと2個以上のアプリコマンドグループを含む。システムコマンドグループは、1個以上のシステムコマンドを含む。システムコマンドは、情報処理装置1に実装されるシステムの機能を制御するための音声コマンドである。個々のアプリコマンドグループは、アプリごとに設定され、それぞれ1個以上のアプリコマンドを含む。アプリコマンドは、個々のアプリの機能を制御するための音声コマンドである。
システムコマンドには、個々のアプリの実行開始を示すアプリ開始コマンドが含まれる。情報処理装置1は、アプリ開始コマンドで指示されたアプリの実行中において、当該アプリに対するアプリコマンドを有効にし、他のアプリに対するアプリコマンドを無効にする。情報処理装置1は、各時点において1つの実行中のアプリに対する音声コマンドを有効にし、その他の音声コマンドを無効にする。よって、音声により操作可能とするアプリは、アプリ開始コマンドで指示された1つのアプリに限定され、他のアプリの動作には及ばない(
図4参照)。
【0019】
なお、本願では、アプリ等のプログラムに記述されたコマンドや各種の指令で指示される処理を実行することを、「プログラムを実行する」と呼ぶことがある。また、同様に、コマンドで指示される処理を実行することを、「コマンドを実行する」と呼ぶことがある。情報処理装置1は、PC、タブレット端末装置、携帯電話機(いわゆるスマートフォンを含む)など、いずれの形態で実現されてもよい。
【0020】
次に、本実施形態に係る情報処理装置1の構成例について説明する。
図1は、本実施形態に係る情報処理装置1のハードウェア構成例を示す概略ブロック図である。
情報処理装置1は、システムデバイスと、周辺デバイスと、を含んで構成される。情報処理装置1は、システムデバイスには、CPU(Central Processing Unit)11、システムメモリ13、GPU(Graphics Processing Unit)15、およびI/O(Input Output)コントローラ21、が含まれる。
【0021】
CPU11には、システムメモリ13とI/Oコントローラ21が接続されている。
GPU15には、ディスプレイ17とI/Oコントローラ21が接続されている。
I/Oコントローラ21には、CPU11、GPU15、オーディオデバイス23、通信モジュール25、HDD(Hard Disk Drive)27、およびEC(Embedded Controller;エンベデッドコントローラ)31が接続されている。オーディオデバイス23には、マイクロホンが含まれる。
EC31は、プロセッサ、記憶媒体、およびプログラマブルロジック回路を含んで構成されるマイクロコンピュータである。プロセッサとして、例えば、CPU11とは別個のCPUが含まれる。記憶媒体として、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)が含まれる。EC31は、CPU11とは独立に動作する。
EC31には、入力デバイス33が接続されている。入力デバイス33は、ユーザの操作を受け付け、受け付けた操作に応じた操作信号をEC31に出力する。入力デバイス33には、例えば、キーボード、マウス、タッチセンサなどのいずれか、またはそれらの任意の組み合わせが含まれる。
【0022】
図2は、本実施形態に係る情報処理装置1の機能構成例を示す概略ブロック図である。 情報処理装置1は、制御部100と、記憶部120と、を含んで構成される。
制御部100は、音声入力部102、発話情報要求部104、コマンド特定部112、およびコマンド実行部114を含んで構成される。
記憶部120は、コマンド記憶部122を含んで構成される。
【0023】
図3は、本実施形態に係る情報処理装置1の機能の階層構造の一例を示す説明図である。
CPU11は、所定のプログラムを実行し、情報処理装置1が有するハードウェア資源と協働して上記各部の機能を提供する。CPU11は、例えば、オーディオデバイスドライバを実行し、マイクロホンMICと協働して音声入力部102の機能を提供する。CPU11は、通信モジュールドライバを実行し、通信モジュールと協働して発話情報要求部104の機能を提供する。CPU11は、例えば、OS上で所定のアプリを実行して、コマンド特定部112、コマンド実行部114およびコマンド記憶部122の機能を提供する。CPU11は、OSを実行し、各アプリで共通して利用される基本的な機能を提供する。つまり、「OS上でアプリを実行する」とは、そのOSの実行により、アプリに対してインタフェースとリソースを提供し、提供されたインタフェースとリソースを用いてそのアプリを実行することを意味する。
【0024】
音声入力部102は、マイクロホンMICから入力される音声データを発話情報要求部104に出力する。
発話情報要求部104は、音声入力部102から入力される音声データで表される発話内容を示す発話情報を音声認識部ASR(後述)に要求する。発話情報要求部104は、通信モジュール25を用い、ネットワークを経由して音声認識部ASRに送信する。
【0025】
音声認識部ASRは、例えば、音声認識処理を実行する音声認識サーバ装置である。音声認識部ASRは、情報処理装置1から受信した音声データに対して音声認識処理を実行して発話内容を定め、定めた発話内容を示す発話情報を情報処理装置1に送信する。
音声認識処理として、既存の手法が利用可能である。音声認識処理は、例えば、発話がなされている発話区間の特定、発話区間から発話された発音を示す音韻列の特定、音韻列から発話内容を示す語句の特定、などの処理を含む。
【0026】
コマンド特定部112は、音声認識部ASRから受信した発話情報と、コマンド記憶部122に記憶された音声コマンドグループが示す有効な音声コマンドのそれぞれとを照合し、発話情報と合致する音声コマンドを特定する。コマンド特定部112は、例えば、発話情報が示す文字列に含まれる文字のうち、個々の有効な音声コマンドを示す文字とその順序が一致する文字の個数の比率を一致度として計算する。コマンド特定部112は、計算した一致度が所定の一致度の閾値(例えば、85%〜95%)以上である音声コマンドのうち、一致度が最も高い音声コマンドを特定する。コマンド特定部112は、特定した音声コマンドを示す音声コマンド情報をコマンド実行部114に出力する。
【0027】
また、コマンド特定部112は、実行中のアプリの実行状態を監視し、コマンド実行部114が実行を開始させている実行中のアプリを特定する。コマンド特定部112は、音声コマンドグループのうち、特定した実行中のアプリのアプリコマンドを有効と判定し、その他のアプリのアプリコマンドを無効と判定する。
コマンド特定部112は、コマンド実行部114が実行を終了させたアプリを特定する。コマンド特定部112は、コマンド記憶部122に記憶された音声コマンドグループのうち、実行を終了させたアプリのアプリコマンドを無効と判定し、システムコマンドを有効と判定する。なお、コマンド特定部112には、電源投入直後いずれのアプリも実行を開始していない状況において、初期設定としてシステムコマンドを有効と設定しておく。
コマンド実行部114が実行を開始させたアプリが存在しない場合、またはコマンド実行部114が実行を開始させたアプリであって、実行中のアプリが存在しない場合には、コマンド特定部112は、いずれのアプリのアプリコマンドを無効と判定し、システムコマンドを有効と判定する。
【0028】
コマンド実行部114は、コマンド特定部112から入力される音声コマンド情報で示される音声コマンドが指示する処理を実行する。
入力される音声コマンド情報がアプリの実行開始を示すアプリ開始コマンドを示す場合、コマンド実行部114は、そのアプリのOS上での実行開始をCPU11に指示する。より具体的には、コマンド実行部114は、実行を開始(起動)させるアプリについて、実行中のOSのCreateProcess関数を呼び出す。CreateProcess関数は、アプリを実行するプロセスの生成を指示するため関数である。
図3に例示されるように、アプリ開始コマンドがアプリAPP1の実行を示すとき、コマンド実行部114はOSにアプリAPP1の実行を指示する。コマンド実行部114は、アプリの起動完了を示す起動完了情報がOSから返り値として入力されるとき、実行を開始させたアプリを示す音声起動アプリ情報を生成し、生成した音声起動アプリ情報を記憶部120に記憶する。
【0029】
入力される音声コマンド情報がアプリの実行終了を示すアプリ終了コマンドを示す場合、コマンド実行部114は、そのアプリのOS上での実行終了をCPU11に指示する。より具体的には、コマンド実行部114は、実行を終了させるアプリについて、実行中のOSのTerminateProcess関数を呼び出す。TerminateProcess関数は、アプリを実行するプロセスの終了を指示するため関数である。例えば、アプリ終了コマンドがアプリAPP1の実行終了を示す場合、コマンド実行部114は、OSにアプリAPP1の実行終了を指示する。コマンド実行部114は、実行終了を指示したアプリの実行終了を示す実行終了情報がOSから返り値として入力されるとき、記憶部120に記憶される音声起動アプリ情報を、そのアプリの実行終了を示す音声起動アプリ情報に更新する。
よって、コマンド特定部112は、記憶部120に記憶された音声起動アプリ情報を参照して、コマンド実行部114が実行を開始させた実行中のアプリを特定することができる。
【0030】
なお、
図2、
図3に示す例では、音声認識部ASRが情報処理装置1と別体として構成されネットワークを用いて相互に接続される場合を前提にしているが、これには限られない。情報処理装置1は、発話情報要求部104から入力される音声データに対して音声認識処理を行い、処理結果として得られる発話情報をコマンド特定部112に出力する音声認識部ASRを内蔵してもよい。その構成のもとでは、情報処理装置1は、必ずしも通信モジュール25を備えていなくてもよい。
【0031】
また、上記の説明では、音声認識部ASRは、1回の発話に係る音声データの処理結果として1つの発話内容を示す発話情報を提供する場合を例にしたが、これには限られない。音声認識部ASRは、音声認識処理により1回の発話に係る音声データの処理結果として、複数の発話情報とその発話情報に対する認識尤度を提供してもよい。その場合、コマンド特定部112は、各発話情報について個々の有効な音声コマンドごとに一致度を計算し、計算した一致度とその発話情報に対する認識尤度のそれぞれについて、所定の重み係数を乗じて得られる乗算値の和を総合一致度として計算してもよい。そして、コマンド特定部112は、計算した総合一致度が所定の総合一致度の閾値以上である音声コマンドのうち、最も高い総合一致度を与える音声コマンドを特定する。
なお、音声認識部ASRは、発話情報に基づいて音声コマンドを特定できない場合であっても、そのまま新たな発話情報を待ち受ければよい。
【0032】
(動作例)
次に、本実施形態に係る情報処理装置1の動作例について説明する。
図4は、本実施形態に係る情報処理装置1の動作例を示す説明図である。
図4は、上段に音声コマンドの種別ごとの有効期間と、下段にユーザの発話により指示される音声コマンドを示す。左右方向は、時刻を示す。また、×印は、無効な音声コマンドを示す。
まず、ユーザの発話によりアプリAPP1の実行開始(起動指示)を示すアプリ開始コマンドが指示されるとき、コマンド特定部112は、音声認識部ASRからの発話情報から、システムコマンドのうちアプリAPP1のアプリ開始コマンドを特定する。このとき、コマンド実行部114は、アプリAPP1の実行を開始させる。コマンド特定部112は、アプリAPP1のアプリコマンドを有効とし、システムコマンドを無効とする。よって、アプリAPP1のアプリコマンド(つまり、APP1のVC)の有効期間T1が開始される。有効期間T1内では、コマンド特定部112は、音声認識部ASRからの発話情報から、アプリAPP1のアプリコマンドのいずれかを特定することができ、その他のアプリのアプリコマンドまたはシステムコマンドを特定することはできない。例えば、コマンド特定部112は、アプリAPP1のアプリコマンドのうち、ユーザの発話により指示されるアプリコマンドVC11、VC12、VC13をそれぞれ認識することができる。コマンド実行部114は、コマンド特定部112が認識したアプリAPP1のアプリコマンドVC11、VC12、VC13で指示される処理を実行する。他方、コマンド特定部112は、アプリAPP2のアプリコマンド、例えば、アプリコマンドVC22を認識することはできない。そのため、アプリAPP2のアプリコマンドVC22で指示される処理は実行されない。
【0033】
次に、ユーザの発話によりアプリAPP1の実行終了(終了指示)を示すアプリ終了コマンドが指示されるとき、コマンド特定部112は、音声認識部ASRからの発話情報から、アプリAPP1のアプリコマンドのうちアプリAPP1のアプリ終了コマンドを特定する。このとき、コマンド実行部114は、アプリAPP1の実行を終了させる。コマンド特定部112は、アプリAPP1のアプリコマンドを無効とし、システムコマンドを有効とする。よって、アプリAPP1のアプリコマンドの有効期間T1が終了し、新たなシステムコマンド有効期間TS1が開始される。
【0034】
次に、ユーザの発話によりアプリAPP2の実行開始(起動指示)を示すアプリ開始コマンドが指示されるとき、コマンド特定部112は、音声認識部ASRからの発話情報から、システムコマンドのうちアプリAPP2のアプリ開始コマンドを特定する。このとき、コマンド実行部114は、アプリAPP2の実行を開始させる。コマンド特定部112は、アプリAPP2のアプリコマンドを有効とし、システムコマンドを無効とする。よって、システムコマンド有効期間TS1が終了し、アプリAPP2のアプリコマンドの有効期間T2が開始される。有効期間T2内では、コマンド特定部112は、音声認識部ASRからの発話情報から、アプリAPP2のアプリコマンドのいずれかを特定することができ、その他のアプリのアプリコマンドまたはシステムコマンドを特定することはできない。例えば、コマンド特定部112は、アプリAPP2のアプリコマンドのうち、ユーザの発話により指示されるアプリコマンドVC21、VC22、VC23をそれぞれ認識することができる。コマンド実行部114は、コマンド特定部112が認識したアプリAPP2のアプリコマンドVC21、VC22、VC23で指示される処理を実行する。他方、コマンド特定部112は、アプリAPP1のアプリコマンド、例えば、アプリコマンドVC12を認識することはできない。
【0035】
次に、ユーザの発話によりアプリAPP2の実行終了(終了指示)を示すアプリ終了コマンドが指示されるとき、コマンド特定部112は、音声認識部ASRからの発話情報から、アプリAPP2のアプリコマンドのうちアプリAPP2のアプリ終了コマンドを特定する。このとき、コマンド実行部114は、アプリAPP2の実行を終了させる。コマンド特定部112は、アプリAPP2のアプリコマンドを無効とし、システムコマンドを有効とする。よって、アプリAPP2のアプリコマンドの有効期間T2が終了し、新たなシステムコマンド有効期間TS2が開始される。
【0036】
(音声コマンド)
次に、音声コマンドの例について説明する。
図5は、本実施形態に係るシステムコマンドの例を示す図である。
図5の各行は、システムコマンドごとに指示される機能を示す。第1行の「Open…」は、アプリ…の実行開始を示すアプリ開始コマンドである。第3行の「Shutdown」は、システムのシャットダウンを示す。
【0037】
図6は、本実施形態に係るアプリコマンドの第1例を示す図である。
図6は、描画用アプリAPP1に対する操作に係るアプリコマンド1を各行に例示する。個々のアプリコマンド1で指示される機能を対応付けて示される。第1行の「Maximize」は、ウィンドウの最大化を示すアプリコマンドである。第8行の「Finish APP1」は、アプリAPP1の実行終了を示すアプリ終了コマンドである。
図7は、本実施形態に係るアプリコマンドの第2例を示す図である。
図7は、プレゼンテーション用アプリAPP2に対する操作に係るアプリコマンド2を各行に例示する。第1行の「Start Presentation」は、プレゼンテーション機能の開始を示すアプリコマンドである。第8行の「Finish APP2」は、アプリAPP2の実行終了を示すアプリ終了コマンドである。
このように、アプリごとのアプリコマンドグループには、それぞれのアプリのアプリ終了コマンドが含まれる。アプリの実行中においては、そのアプリのアプリコマンドだけが有効となるが、アプリコマンドにそのアプリのアプリ終了コマンドを含めることで実行終了を音声で指示する契機が確保される。
【0038】
なお、コマンド特定部112は、その時点で有効なコマンドを示すコマンドリストを生成し、生成したコマンドリストをディスプレイ17に出力してもよい。ディスプレイ17は、コマンド特定部112から入力されたコマンドリストをユーザが視認できる形態で提示する。例えば、現時刻がアプリAPP1のアプリコマンドの有効期間T1内である場合には、コマンド特定部112は、アプリAPP1のアプリコマンドを含み、アプリAPP2のアプリコマンドやシステムコマンドを含まないコマンドリストをディスプレイ17に提示させる。現時刻がアプリAPP2のアプリコマンドの有効期間T2内である場合には、コマンド特定部112は、アプリAPP2のアプリコマンドを含み、アプリAPP1のアプリコマンドやシステムコマンドを含まないコマンドリストをディスプレイ17に提示させる。現時刻がシステムコマンド有効期間TS1、TS2内である場合には、コマンド特定部112は、システムコマンドを含み、アプリコマンドを含まないコマンドリストをディスプレイ17に提示させる。
従って、コマンドリストを視認したユーザは、その時点で有効な音声コマンドを把握することができる。そのため、無効な音声コマンドの発話を回避することができる。
【0039】
(動作フロー)
次に、本実施形態に係る音声操作処理の例について説明する。
図8は、本実施形態に係る音声操作処理の一例を示すフローチャートである。
(ステップS102)コマンド特定部112は、音声認識部ASR(音声認識エンジン)から発話情報を取得する。その後、ステップS104の処理に進む。
(ステップS104)コマンド特定部112は、その時点でアプリコマンドが有効であるとき(ステップS104 YES)、ステップS116の処理に進む。アプリコマンドが無効であるとき(ステップS104 NO)、ステップS106の処理に進む。なお、コマンド特定部112には、初期設定として、有効なシステムコマンドであり、いずれのアプリのアプリコマンドが無効であることを設定させておく。
【0040】
(ステップS106)コマンド特定部112は、取得した発話情報とシステムコマンドのそれぞれとを照合し、発話情報と合致するシステムコマンドの有無を判定する。コマンド特定部112は、発話情報と合致するシステムコマンドを有すると判定するとき(ステップS106 YES)、発話情報と合致するシステムコマンドを特定し、ステップS108の処理に進む。コマンド特定部112は、発話情報と合致するシステムコマンドを有しないと判定するとき(ステップS106 NO)、ステップS102の処理に戻る。
【0041】
(ステップS108)コマンド特定部112は、特定したシステムコマンドがいずれかのアプリのアプリ開始コマンドであるとき(ステップS108 YES)、ステップS112の処理に進む。コマンド特定部112は、特定したシステムコマンドが他のシステムコマンドであるとき(ステップS108 NO)、ステップS110の処理に進む。
(ステップS110)コマンド実行部114は、コマンド特定部112が特定した他のシステムコマンドを実行する。その後、ステップS102の処理に戻る。
【0042】
(ステップS112)コマンド実行部114は、コマンド特定部112が特定したアプリ開始コマンドで指示されるアプリの実行を開始(起動)する。その後、ステップS114の処理に進む。
(ステップS114)コマンド特定部112は、特定したアプリ開始コマンドで指示されるアプリのアプリコマンドを有効にし、システムコマンドを無効にする。その後、ステップS102の処理に戻る。
【0043】
(ステップS116)コマンド特定部112は、取得した発話情報と有効なアプリコマンドのそれぞれとを照合し、発話情報と合致するアプリコマンドの有無を判定する。コマンド特定部112は、発話情報と合致するアプリコマンドを有すると判定するとき(ステップS116 YES)、発話情報と合致するアプリコマンドを特定し、ステップS118の処理に進む。コマンド特定部112は、発話情報と合致するアプリコマンドを有しないと判定するとき(ステップS116 NO)、ステップS102の処理に戻る。
【0044】
(ステップS118)コマンド特定部112は、特定したアプリコマンドがアプリ終了コマンドであるとき(ステップS118 YES)、ステップS120の処理に進む。コマンド特定部112は、特定したアプリコマンドが他のアプリコマンドであるとき(ステップS118 NO)、ステップS124の処理に進む。
(ステップS120)コマンド実行部114は、コマンド特定部112が特定したアプリ終了コマンドで指示されるアプリの実行を終了する。その後、ステップS122の処理に進む。
(ステップS122)コマンド特定部112は、特定したアプリ終了コマンドで指示されるアプリのアプリコマンドを無効にし、システムコマンドを有効にする。その後、ステップS102の処理に戻る。
(ステップS124)コマンド実行部114は、コマンド特定部112が特定した他のアプリコマンドを実行する。その後、ステップS102の処理に戻る。
【0045】
(マルチウィンドウ機能への適用)
上記の説明では、コマンド実行部114が、音声コマンドにより同時に2件以上のアプリを実行せず、1件のアプリのみの実行を可能とする場合を例にしたが、これには限られない。制御部100は、マルチウィンドウ機能のもとで、入力デバイス33から入力される操作信号でさらに別のアプリを実行可能とし、実行中のアプリの機能を操作可能としてもよい。一般にマルチウィンドウ機能を有するOSのもとでは、制御部100は、実行中のアプリのそれぞれについてウィンドウをディスプレイ17に表示させる。制御部100は、複数のウィンドウを表示させるとき、いずれか1つのウィンドウをアクティブウィンドウとして定める。制御部100は、アクティブウィンドウの領域内を指示する操作信号に基づいてアクティブウィンドウに係るアプリ(以下、フォアグランドアプリ)の動作を制御し、その他のウィンドウ(以下、非アクティブウィンドウ)に係るアプリ(以下、バックグランドアプリ)の動作を制御しない。アクティブウィンドウを表示させ、受け付けた操作信号に基づいて動作を制御可能としている状態は、一般にフォアグランドと呼ばれる。
【0046】
OSを実行して得られる機能には、アクティブウィンドウを非アクティブウィンドウよりも優先表示する機能が含まれる。優先表示とは、アクティブウィンドウと非アクティブウィンドウと重なり合う重複領域において、非アクティブウィンドウの重複領域を表示させずにアクティブウィンドウの重複領域を表示することを意味する。優先表示には、アクティブウィンドウの周縁部を非アクティブウィンドウの周縁部よりも目立つ態様で表示すること、などが含まれることがある。制御部100は、例えば、新たに実行を開始したアプリに係るウィンドウをアクティブウィンドウとして定め、実行中のアプリに係るウィンドウを非アクティブウィンドウとして定める。また、制御部100は、操作信号で指示される非アクティブウィンドウを新たにアクティブウィンドウとして定め、その時点におけるアクティブウィンドウを非アクティブウィンドウとして定める。制御部100は、実行中のアプリとフォアグランドアプリをさらに示す実行アプリ情報を生成し、記憶部120に記憶する。制御部100は、アプリの実行開始、実行中のアプリの実行終了、およびフォアグランドアプリの変更ごとに実行アプリ情報を更新する。
【0047】
コマンド特定部112は、操作信号に応じて実行開始が指示されたアプリ(以下、非音声起動アプリ)のいずれか(例えば、アプリAPP2)が新たにフォアグランドアプリとなると判定する場合を仮定する。この場合、コマンド特定部112は、新たなフォアグランドアプリとして判定した非音声起動アプリに係るアプリコマンドを有効にし、システムコマンドを無効にしてもよい。コマンド特定部112は、アプリ実行情報と音声起動アプリ情報を所定時間ごとにモニタし、アプリ実行情報が示す実行中のアプリのうち、音声起動アプリ情報が示すアプリ開始コマンドで実行が開始されたアプリを除くアプリを、非音声起動アプリとして特定することができる。また、コマンド特定部112は、特定した非音声起動アプリが、アプリ実行情報が示すフォアグランドアプリと一致すると判定するとき、非音声起動アプリがフォアグランドアプリであると判定することができる。
【0048】
マルチウィンドウ機能のもとでは、既に音声起動アプリ(
図9の例では、アプリAPP1)が実行中であるとき、コマンド特定部112は、非音声起動アプリ(
図9の例では、アプリAPP2)が新たなフォアグランドアプリと判定する場合が生じうる。その場合、コマンド特定部112は、新たなフォアグランドアプリに係るアプリコマンドを有効とし、実行中の音声起動アプリに係るアプリコマンドを無効にする。コマンド実行部114は、有効にされたアプリコマンドを用いてフォアグランドアプリである非音声起動アプリの動作を制御することができる。
その後、コマンド特定部112は、実行アプリ情報を参照して、フォアグランドアプリの実行が終了し、かつ、音声起動アプリがまだ実行中と判定するとき、実行を終了させたフォアグランドアプリに係るアプリコマンドを無効にし、実行中の音声起動アプリに係るアプリコマンドを有効にしてもよい。このとき、制御部100は、実行中の音声起動アプリをフォアグランドアプリとして定めてもよい。これにより、実行が継続している音声起動アプリに対する音声による動作の制御を再開するとともに、フォアグランドアプリとして操作信号に応じた操作も可能となる。
【0049】
コマンド特定部112は、実行アプリ情報を参照して、フォアグランドアプリとして定めた非音声起動アプリが実行を継続しながらバックグランドアプリとなり、他の実行中のアプリ(例えば、アプリAPP3)が新たにフォアグランドアプリと判定する場合がある。この場合には、コマンド特定部112は、もとのフォアグランドアプリに係るアプリコマンドを無効にし、新たなフォアグランドアプリに係るアプリコマンドを有効にしてもよい。
【0050】
また、コマンド特定部112は、既に音声起動アプリ(
図10の例では、APP1)が実行中であるとき、非音声起動アプリのいずれか(
図10の例では、APP2)が新たにフォアグランドアプリとなると判定する場合がある。この場合において、コマンド特定部112は、発話情報に基づいてその時点で有効なアプリコマンドのいずれかを認識した時点で、実行中の音声起動アプリをフォアグランドアプリとし、その他の実行中のアプリをバックグランドアプリとしてもよい。コマンド実行部114は、フォアグランドアプリとする際、その音声起動アプリについて実行中のOSのSetForeGroundWindow関数を呼び出す。SetForeGroundWindow関数は、対象となるアプリに係るウィンドウをフォアグランドにすること、つまりアクティブウィンドウとすることを指示するための関数である。このとき、コマンド特定部112は、直前にバックグランドコマンドとした非音声起動アプリに係るアプリコマンドを無効にしたまま維持する。
従って、コマンド実行部114は、実行中の音声起動アプリをユーザの発話に応じて認識されたアプリコマンドで制御することができる。同時に実行中のアプリの件数に関わらず、音声起動アプリの実行が終了するまで他のアプリの音声コマンドが有効にならないので、ユーザは、フォアグランドアプリとして音声起動アプリとしての操作に専念することができる。
【0051】
また、コマンド特定部112は、音声起動アプリの実行終了を判定するとき、音声起動アプリに係るアプリコマンドを無効にし、新たにフォアグランドアプリとなると判定した非音声起動アプリに係るアプリコマンドを有効にしてもよい。これにより、ユーザは、音声コマンドにより起動を指示しなくても、関心を有するアプリに対して音声による動作の制御を実現することができる。
【0052】
(アプリコマンドグループの階層化)
アプリコマンドグループの少なくとも1つは、複数の階層に階層化されてもよい。
つまり、アプリコマンドグループは、例えば、N(Nは、2以上の整数)階層の階層別コマンドグループを有してもよい。第n(nは、1以上N以下の整数)階層の階層別コマンドグループは、1以上の第n階層の機能のそれぞれに対する階層別コマンドを含む。但し、第n(nは、1以上N−1以下の整数)階層の階層別コマンドグループは、1以上の第n+1階層の機能の実行開始を示す第n+1階層機能開始コマンドを有する。また、第n(nは、2以上N以下の整数)階層の階層別コマンドグループは、第n階層の機能の実行終了を示す第n階層機能終了コマンドを有する。
【0053】
コマンド特定部112は、発話情報に基づいて第n+1階層開始コマンドのいずれかを特定するとき、特定した第n+1階層機能の階層別コマンドを有効にし、第n階層機能の階層別コマンドと他の第n+1階層機能の階層別コマンドを無効とする。これにより、コマンド実行部114は、第n階層機能に対する制御を終了し、特定された第n+1階層機能に対する制御を開始することができる。
コマンド特定部112は、発話情報に基づいて第n+1階層機能終了コマンドを特定するとき、特定した第n+1階層の階層別コマンドを無効にし、第n階層機能の階層別コマンドを再度有効にする。
【0054】
次に、階層化されたアプリコマンドグループの例について説明する。
図11−14は、階層化されたアプリコマンドグループの例を示す図である。
図11−14は、プレゼンテーション用アプリAPP2に係るアプリコマンドの例を示す。
図11は、本実施形態に係る第1階層の機能の階層別コマンドの例を示す。
図11の第1行の「Start Presentation」、第2行の「Start Document Preparation」は、それぞれ第2階層の機能の実行開始を示す第2階層機能開始コマンドである。第3行の「Finish APP2」は、アプリAPP2の実行終了を指示するためのアプリ終了コマンドである。
【0055】
図12は、「Start Presentation」で指示される第2階層の機能としてプレゼンテーションに係る階層別コマンドを含む。
図12の第1−4行に示すコマンドは、いずれも通常の第2階層の階層別コマンドである。例えば、
図12の第1行の「Go to next」は、現ページに代え、次ページの資料画面の提示を指示するための第2階層の階層別コマンドである。
図12の第5行の「Finish Presentation」は、プレゼンテーションの終了を指示するための第2階層機能終了コマンドである。コマンド特定部112が、発話情報に基づいてこのコマンドを特定するとき、
図12に示す第2階層機能の階層別コマンドを無効にし、
図11に示す第1階層機能の階層別コマンドを有効にする。
【0056】
図13は、「Start Document Preparation」で指示される第2階層の機能として文書作成に係る階層別コマンドを含む。
図13の第1−7行に示すコマンドは、いずれも通常の第2階層の階層別コマンドである。例えば、
図13の第1行の「Maximize」は、アプリAPP2の現在表示中のウィンドウの最大化を指示するための階層別コマンドである。
図13の第8行の「Open Entry Field」は、第3階層の機能として文字入力欄をアプリAPP2に係るウィンドウ内に表示させることで、文字入力を開始するための第3階層機能開始コマンドである。コマンド特定部112が、発話情報に基づいてこのコマンドを特定するとき、
図13に示す第2階層機能の階層別コマンドを無効にし、
図14に示す第3階層機能の階層別コマンドを有効にする。
図13の第9行の「Finish Document Preparation」は、文書作成の終了を指示するための第2階層機能終了コマンドである。コマンド特定部112が、発話情報に基づいてこのコマンドを特定するとき、
図13に示す第2階層機能の階層別コマンドを無効にし、
図11に示す第1階層機能の階層別コマンドを有効にする。
【0057】
図14は、「Open Entry Field」で指示される第3階層の機能として文字入力に係る階層別コマンドを含む。
図14の第1行の「…」は、任意の文字列に対する文字入力処理、つまり、文字入力欄の表示中に発話情報が示す文字情報を保存し、保存した文字情報を文字入力欄に表示する処理を指示するための階層別コマンドであることを示す。
図14の第2行の「Close Entry Field」は、文字入力処理の終了を指示するための第3階層機能終了コマンドである。コマンド特定部112が、発話情報に基づいてこのコマンドを特定するとき、
図14に示す第3階層機能の階層別コマンドを無効にし、
図13に示す第2階層機能の階層別コマンドを有効にする。
【0058】
以上に説明したように、本実施形態に係る情報処理装置は、予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定部112と、特定された音声コマンドで指示される処理を実行するコマンド実行部114と、を備える。コマンドグループは、システムの動作に対するシステムコマンドを1以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを1以上含むアプリケーションコマンドグループとを含む。システムコマンドの1つは、アプリの実行開始を示すアプリ開始コマンドである。コマンド特定部112は、アプリ開始コマンドで指示されたアプリの実行中に、当該アプリのアプリコマンドを有効にし、システムコマンドと他のアプリのアプリを無効にする。
この構成によれば、同時に1つの実行中のアプリに対するアプリコマンドを有効とし、その他のアプリコマンドを無効にすることができる。音声により操作可能とするアプリは、アプリ開始コマンドで指示された1つのアプリに限定され、他のアプリの動作には及ばない。そのため、所望のアプリ以外の他のアプリに対する操作を回避することができる。その機能の実現のために個々のアプリに対してアプリコマンドを定義しておけば、個々のアプリやOSの改修、その他のソフトウェアの開発を要しないため、既存のアプリに対して容易に適用することができる。
【0059】
また、個々のアプリのアプリコマンドの1つとして、当該アプリの実行終了を示すアプリ終了コマンドを設定しておく。コマンド特定部112は、アプリ終了コマンドで指示されたアプリの実行終了に応じて、当該アプリのアプリを無効にし、システムコマンドを有効にしてもよい。
この構成によれば、音声によりアプリを操作可能とする期間が、発話により指示されたアプリ開始コマンドが特定されてから、アプリ終了コマンドが特定されるまでの期間に限定される。そして、その期間の終了後、発話により指示されたシステムコマンドに応じてシステムに対する操作、例えば、再度のアプリの実行開始が可能となる。
【0060】
また、コマンド特定部112は、他のアプリ、即ち、非音声起動アプリの実行が開始されるとき、他のアプリのアプリを有効にし、既にアプリ開始コマンドで実行開始が指示された音声起動アプリのアプリを無効にしてもよい。
この構成によれば、非音声起動アプリの実行開始に伴い、発話により指示されたアプリコマンドに応じて、そのアプリの操作が可能になる。
【0061】
また、コマンド特定部112は、他のアプリの実行が終了するとき、他のアプリのアプリを無効にし、その時点で実行中の音声起動アプリのアプリを有効にしてもよい。
この構成によれば、非音声起動アプリの実行終了に伴い、既に起動していた音声起動アプリに対して、発話により指示されたアプリコマンドに応じた操作を再度可能にすることができる。
【0062】
また、コマンド特定部112は、アプリ開始コマンドで実行開始が指示された音声起動アプリの実行中に、他のアプリの実行が指示されるとき、音声起動アプリのアプリを有効のまま維持し、他のアプリのアプリケーションコマンドを無効としてもよい。
この構成によれば、音声起動アプリの実行中に非音声起動アプリの実行が指示されても、音声起動アプリに対して、発話により指示されたアプリコマンドに応じた操作可能な状態を維持することができる。そのため、実行開始を指示したアプリごとに、操作手段の使い分けがなされる。
【0063】
また、コマンド特定部112が、発話情報に基づいてアプリ開始コマンドを特定するとき、コマンド実行部114は、アプリ開始コマンドで指示されたアプリを実行するためのプロセスをOSに生成させてもよい。コマンド特定部112が、発話情報に基づいてアプリの実行終了を示すアプリ終了コマンドを特定するとき、コマンド実行部114は、そのアプリのプロセスをOSに終了させてもよい。
この構成によれば、予めアプリごとに定義したアプリコマンドに応じた操作の開始ならびに終了を既存のOS上で実現することができる。
【0064】
また、アプリケーションコマンドグループは、N(Nは、2以上の整数)階層の階層別コマンドグループを含み、第n(nは、1以上N以下の整数)階層の階層別コマンドグループは、第n階層の機能に対する階層別コマンドを含み、第n(nは、1以上N−1以下の整数)階層の階層別コマンドの少なくともいずれかは、第n+1階層の機能の実行開始を示す第n+1階層機能開始コマンドであり、第n+1(nは、1以上N−1以下の整数)階層の階層別コマンドの1つは、第n+1階層の機能の実行終了を示す第n+1階層機能終了コマンドであってもよい。コマンド特定部112は、第n+1階層開始コマンドのいずれかを特定するとき、特定した第n+1階層機能の階層別コマンドを有効にし、第n階層機能の階層別コマンドと他の第n+1階層機能の階層別コマンドを無効とし、第n+1階層機能終了コマンドを特定するとき、特定した第n+1階層の階層別コマンドを無効にし、第n階層機能の階層別コマンドを有効にしてもよい。
この構成によれば、同時に1つの実行中の階層の機能に対する階層別コマンドを有効とし、その他の階層の機能を無効にすることができる。音声により操作可能とする機能は、アプリ開始コマンドにより指示された1つのアプリに限定され、他のアプリの動作には及ばない。そのため、ユーザの発話により所望の階層の機能以外の機能に対する操作を回避することができる。
【0065】
また、コマンド特定部112は、アプリ開始コマンドで指示されたアプリの実行中に、当該アプリの機能に対して有効なコマンドを示すコマンドリストを表示部(例えば、ディスプレイ17)に出力する。
この構成によれば、ユーザはその時点で有効なコマンドを視認することができるため、ユーザに対して無効なコマンドに対する発話を回避させることができる。
【0066】
また、上記の説明では、主に文書作成用アプリとプレゼンテーション用アプリに適用する場合を例にしたが、他の種別のアプリ、例えば、表計算用アプリ、ブラウザ、通話用アプリなどに適用されてもよい。
CPU11は、OS上で所定の1個のアプリを実行して、コマンド特定部112、コマンド実行部114およびコマンド記憶部122の機能を提供してもよいし、所定の複数のアプリを実行して、コマンド特定部112、コマンド実行部114およびコマンド記憶部122の機能を提供してもよい。また、ディスプレイ17、入力デバイス33の双方または一方は、情報処理装置1の他の部材と各種のデータを送受信することができれば、他の部材と物理的に接続されていてもよいし、別体であってもよい。
また、音声認識部ASRは、情報処理装置1が別体である場合を例にしたが、情報処理装置1と一体化されていてもよい。その場合、音声認識部ASRと発話情報要求部104もしくはコマンド特定部112との間の送受信に代えて、情報処理装置1内部での入出力がなされていればよい。
【0067】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成は上述の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。上述の実施形態において説明した各構成は、任意に組み合わせることができる。