(57)【要約】      （修正有）【課題】既存のアプリに対して音声コマンドを適用できる場面を広げ、ユーザにより快適な利用環境を提供する。【解決手段】情報処理装置１の制御部１００は、コマンド特定部１１２とコマンド実行部１１４を備える。コマンド特定部は、予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定する。コマンド実行部は、特定された音声コマンドで指示される処理を実行する。コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリの機能に対するアプリコマンドを１以上含むアプリコマンドグループとを含む。コマンド特定部は、システムコマンドの１つでありアプリの実行開始を示すアプリ開始コマンドで指示されたアプリの実行中に、アプリのアプリコマンドを有効にし、システムコマンドと他のアプリのアプリコマンドを無効にする。【選択図】図２
2020134627.tif 000002
【特許請求の範囲】
【請求項１】
予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定部と、
特定された前記音声コマンドで指示される処理を実行するコマンド実行部と、を備え、
前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み
前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、
前記コマンド特定部は、
前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムのアプリケーションコマンドを有効にし、前記システムコマンドと他のアプリケーションプログラムのアプリケーションコマンドを無効にする
情報処理装置。
【請求項２】
前記アプリケーションコマンドの１つは、前記アプリケーションプログラムの実行終了を示すアプリケーション終了コマンドであり、
前記コマンド特定部は、
前記アプリケーション終了コマンドで指示されたアプリケーションプログラムの実行終了に応じて、前記アプリケーションプログラムのアプリケーションコマンドを無効にし、前記システムコマンドを有効にする
請求項１に記載の情報処理装置。
【請求項３】
前記コマンド特定部は、
他のアプリケーションプログラムの実行が開始されるとき、
前記他のアプリケーションプログラムのアプリケーションコマンドを有効にし、前記アプリケーション開始コマンドで実行開始が指示されたアプリケーションである音声起動アプリケーションプログラムのアプリケーションコマンドを無効にする
請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記コマンド特定部は、
前記他のアプリケーションプログラムの実行が終了するとき、
前記他のアプリケーションプログラムのアプリケーションコマンドを無効にし、前記音声起動アプリケーションプログラムのアプリケーションコマンドを有効にする
請求項３に記載の情報処理装置。
【請求項５】
前記コマンド特定部は、
前記アプリケーション開始コマンドで実行開始が指示された音声起動アプリケーションプログラムの実行中に、他のアプリケーションプログラムの実行が指示されるとき、
前記音声起動アプリケーションプログラムのアプリケーションコマンドを有効とし、前記他のアプリケーションプログラムのアプリケーションコマンドを無効とする
請求項１または請求項２に記載の情報処理装置。
【請求項６】
前記コマンド特定部が、
前記アプリケーション開始コマンドを特定するとき、
前記コマンド実行部は、
前記アプリケーション開始コマンドで指示されたアプリケーションプログラムを実行するためのプロセスをオペレーティングシステムに生成させ、
前記コマンド特定部が、
前記アプリケーションプログラムの実行終了を示すアプリケーション終了コマンドを特定するとき、
前記コマンド実行部は、
前記プロセスを前記オペレーティングシステムに終了させる
請求項１から請求項５のいずれか一項に記載の情報処理装置。
【請求項７】
前記アプリケーションコマンドグループは、Ｎ（Ｎは、２以上の整数）階層の階層別コマンドグループを含み、
第ｎ（ｎは、１以上Ｎ以下の整数）階層の階層別コマンドグループは、第ｎ階層の機能に対する階層別コマンドを含み、
第ｎ（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの少なくともいずれかは、第ｎ＋１階層の機能の実行開始を示す第ｎ＋１階層機能開始コマンドであり、
第ｎ＋１（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの１つは、第ｎ＋１階層の機能の実行終了を示す第ｎ＋１階層機能終了コマンドであり、
前記コマンド特定部は、
前記第ｎ＋１階層開始コマンドのいずれかを特定するとき、特定した第ｎ＋１階層機能の階層別コマンドを有効にし、前記第ｎ階層機能の階層別コマンドと他の第ｎ＋１階層機能の階層別コマンドを無効とし、
前記第ｎ＋１階層機能終了コマンドを特定するとき、特定した第ｎ＋１階層の階層別コマンドを無効にし、前記第ｎ階層機能の階層別コマンドを有効にする
請求項１から請求項６のいずれか一項に記載の情報処理装置。
【請求項８】
前記コマンド特定部は、
前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムの機能に対して有効なコマンドを示すコマンドリストを表示部に表示させる
請求項１から請求項７のいずれか一項に記載の情報処理装置。
【請求項９】
情報処理装置における方法であって、
予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定過程と、
特定された前記音声コマンドで指示される処理を実行するコマンド実行過程と、を有し、
前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み
前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、
前記コマンド特定過程は、
前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムのアプリケーションコマンドを有効にし、前記システムコマンドと他のアプリケーションプログラムのアプリケーションコマンドを無効にする
情報処理方法。
【請求項１０】
情報処理装置のコンピュータに、
予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定手順と、
特定された前記音声コマンドで指示される処理を実行するコマンド実行手順と、を実行させ、
前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み
前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、
前記コマンド特定手順は、
前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムのアプリケーションコマンドを有効にし、前記システムコマンドと他のアプリケーションプログラムのアプリケーションコマンドを無効にする
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
ユーザが発話した音声で指示される種々のコマンドに従って種々の機能を提供するバーチャルアシスタントを実装した情報処理装置が提案されている。かかるコマンドは、音声コマンド（ＶＣ：Ｖｏｉｃｅ  Ｃｏｍｍａｎｄ）と呼ばれる。バーチャルアシスタントは、パーソナルコンピュータ（ＰＣ：Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、タブレット端末、携帯電話機（いわゆるスマートフォンを含む）、ＡＩ（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）アシスタント機能付きスピーカ（いわゆる、スマートスピーカ）、などの情報処理装置として実装される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−１２２１０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、既存のオペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上で音声コマンドの機能が提供される機能は、限定されていた。従来のバーチャルアシスタントで提供される音声コマンドは、システムに対する操作以外に、予め定めた特定の専門的なアプリケーションプログラム（以下、アプリまたはアプリケーション）に対して適用されるにとどまり、その他のアプリには、適用されないことがあった。主な理由として、ＯＳレベルで音声コマンドに対する処理がサポートされていないこと、アプリのベンダに対して音声コマンドを利用するためのインタフェースや、ソフトウェア開発キット（ＳＤＫ：Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ）が十分に提供されていなかったことが掲げられる。そのため、ＯＳのベンダであっても音声コマンドを適用したアプリを提供できないことがあった。
【０００５】
他方、既存のアプリであっても音声コマンドをより手軽に適用することが期待される。そこで、従来の情報処理装置は、ＯＳやアプリの改変を行わずに、既存のアプリに対して音声コマンドを適用できる場面を広げ、ユーザにより快適な利用環境を提供することを課題としていた。例えば、既存のアプリにおいて、（１）従来手動で指示されていたショートカット操作、プレゼンテーション中における操作などを、音声コマンドを用いて実現すること、（２）その操作の実現のために既存のアプリに新たなソースコードを設けないこと、（３）ＯＳ上では、通例、複数のアプリが実行されるが、定義された音声コマンドを特定のアプリだけで機能できるスキームをＯＳのサポートを要せずに実現すること、などが望まれる。
【課題を解決するための手段】
【０００６】
本発明は上記の課題を解決するためになされたものであり、本発明の一態様に係る情報処理装置は、予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定部と、特定された前記音声コマンドで指示される処理を実行するコマンド実行部と、を備え、前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、コマンド特定部は、前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムのアプリケーションコマンドを有効にし、前記システムコマンドと他のアプリケーションプログラムのアプリケーションコマンドを無効にする。
【０００７】
上記の情報処理装置において、前記アプリケーションコマンドの１つは、前記アプリケーションプログラムの実行終了を示すアプリケーション終了コマンドであり、コマンド特定部は、前記アプリケーション終了コマンドで指示されたアプリケーションプログラムの実行終了に応じて、前記アプリケーションプログラムのアプリケーションコマンドを無効にし、前記システムコマンドを有効にしてもよい。
【０００８】
上記の情報処理装置において、前記コマンド特定部は、他のアプリケーションプログラムの実行が開始されるとき、前記他のアプリケーションプログラムのアプリケーションコマンドを有効にし、前記アプリケーション開始コマンドで実行開始が指示されたアプリケーションである音声起動アプリケーションプログラムのアプリケーションコマンドを無効にしてもよい。
【０００９】
上記の情報処理装置において、前記コマンド特定部は、前記他のアプリケーションプログラムの実行が終了するとき、他のアプリケーションプログラムのアプリケーションコマンドを無効にし、前記音声起動アプリケーションプログラムのアプリケーションコマンドを有効にしてもよい。
【００１０】
上記の情報処理装置において、前記コマンド特定部は、前記アプリケーション開始コマンドで実行開始が指示された音声起動アプリケーションプログラムの実行中に、他のアプリケーションプログラムの実行が指示されるとき、前記音声起動アプリケーションプログラムのアプリケーションコマンドを有効とし、前記他のアプリケーションプログラムのアプリケーションコマンドを無効にしてもよい。
【００１１】
上記の情報処理装置において、前記コマンド特定部が、前記アプリケーション開始コマンドを特定するとき、コマンド実行部は、前記アプリケーション開始コマンドで指示されたアプリケーションプログラムを実行するためのプロセスをオペレーティングシステムに生成させ、前記コマンド特定部が、前記アプリケーションプログラムの実行終了を示すアプリケーション終了コマンドを特定するとき、前記コマンド実行部は、前記プロセスを前記オペレーティングシステムに終了させてもよい。                             
【００１２】
上記の情報処理装置において、前記アプリケーションコマンドグループは、Ｎ（Ｎは、２以上の整数）階層の階層別コマンドグループを含み、第ｎ（ｎは、１以上Ｎ以下の整数）階層の階層別コマンドグループは、第ｎ階層の機能に対する階層別コマンドを含み、第ｎ（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの少なくともいずれかは、第ｎ＋１階層の機能の実行開始を示す第ｎ＋１階層機能開始コマンドであり、第ｎ＋１（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの１つは、第ｎ＋１階層の機能の実行終了を示す第ｎ＋１階層機能終了コマンドであり、前記コマンド特定部は、前記第ｎ＋１階層開始コマンドのいずれかを特定するとき、特定した第ｎ＋１階層機能の階層別コマンドを有効にし、前記第ｎ階層機能の階層別コマンドと他の第ｎ＋１階層機能の階層別コマンドを無効とし、前記第ｎ＋１階層機能終了コマンドを特定するとき、特定した第ｎ＋１階層の階層別コマンドを無効にし、前記第ｎ階層機能の階層別コマンドを有効にしてもよい。
【００１３】
上記の情報処理装置において、前記コマンド特定部は、前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムの機能に対して有効なコマンドを示すコマンドリストを表示部に表示させてもよい。
【００１４】
本発明の第２態様に係る情報処理方法は、情報処理装置における方法であって、予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定過程と、特定された前記音声コマンドで指示される処理を実行するコマンド実行過程と、を有し、前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み、前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、前記コマンド特定過程は、前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムのアプリケーションコマンドを有効にし、前記システムコマンドと他のアプリケーションプログラムのアプリケーションコマンドを無効にする。
【００１５】
本発明の第３態様に係るプログラムは、情報処理装置のコンピュータに、予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定手順と、特定された前記音声コマンドで指示される処理を実行するコマンド実行手順と、を実行させ、前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、前記コマンド特定手順は、前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムのアプリケーションコマンドを有効にし、前記システムコマンドと他のアプリケーションプログラムのアプリケーションコマンドを無効にする。
【発明の効果】
【００１６】
本発明の上記態様によれば、ＯＳやアプリの改変を行わずに、既存のアプリに対して音声コマンドを適用できる場面を広げ、ユーザにより快適な利用環境を提供することができる。例えば、サポートされる音声コマンドがアプリごとに一意に定義され、その動作を当該アプリの実行中に限定することができる。
【図面の簡単な説明】
【００１７】
【図１】本実施形態に係る情報処理装置のハードウェア構成例を示す概略ブロック図である。
【図２】本実施形態に係る情報処理装置の機能構成例を示す概略ブロック図である。
【図３】本実施形態に係る情報処理装置の機能の階層構造の一例を示す説明図である。
【図４】本実施形態に係る情報処理装置の動作例を示す説明図である。
【図５】本実施形態に係るシステムコマンドの例を示す図である。
【図６】本実施形態に係るアプリケーションコマンドの第１例を示す図である。
【図７】本実施形態に係るアプリケーションコマンドの第２例を示す図である。
【図８】本実施形態に係る音声操作処理の一例を示すフローチャートである。
【図９】複数のアプリケーションプログラムの実行状態の第１例を示す図である。
【図１０】複数のアプリケーションプログラムの実行状態の第２例を示す図である。
【図１１】本実施形態に係る第１階層の機能の階層別コマンドの例を示す図である。
【図１２】本実施形態に係る第２階層の機能の階層別コマンドの第１例を示す図である。
【図１３】本実施形態に係る第２階層の機能の階層別コマンドの第２例を示す図である。
【図１４】本実施形態に係る第３階層の機能の階層別コマンドの例を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態について、図面を参照して説明する。
（第１の実施形態）
まず、本発明の第１の実施形態に係る情報処理装置１の概要について説明する。
情報処理装置１は、ユーザが発話した音声を受音し、受音した音声の発話内容に応じた機能を実現する。情報処理装置１には、予め設定された複数の音声コマンド（ＶＣ：Ｖｏｉｃｅ  Ｃｏｍｍａｎｄ）のうち、入力された音声で指示される音声コマンドを特定し、特定した音声コマンドで指示される処理を実行する。音声コマンドグループは、システムコマンドグループと２個以上のアプリコマンドグループを含む。システムコマンドグループは、１個以上のシステムコマンドを含む。システムコマンドは、情報処理装置１に実装されるシステムの機能を制御するための音声コマンドである。個々のアプリコマンドグループは、アプリごとに設定され、それぞれ１個以上のアプリコマンドを含む。アプリコマンドは、個々のアプリの機能を制御するための音声コマンドである。
システムコマンドには、個々のアプリの実行開始を示すアプリ開始コマンドが含まれる。情報処理装置１は、アプリ開始コマンドで指示されたアプリの実行中において、当該アプリに対するアプリコマンドを有効にし、他のアプリに対するアプリコマンドを無効にする。情報処理装置１は、各時点において１つの実行中のアプリに対する音声コマンドを有効にし、その他の音声コマンドを無効にする。よって、音声により操作可能とするアプリは、アプリ開始コマンドで指示された１つのアプリに限定され、他のアプリの動作には及ばない（図４参照）。
【００１９】
なお、本願では、アプリ等のプログラムに記述されたコマンドや各種の指令で指示される処理を実行することを、「プログラムを実行する」と呼ぶことがある。また、同様に、コマンドで指示される処理を実行することを、「コマンドを実行する」と呼ぶことがある。情報処理装置１は、ＰＣ、タブレット端末装置、携帯電話機（いわゆるスマートフォンを含む）など、いずれの形態で実現されてもよい。
【００２０】
次に、本実施形態に係る情報処理装置１の構成例について説明する。図１は、本実施形態に係る情報処理装置１のハードウェア構成例を示す概略ブロック図である。  
情報処理装置１は、システムデバイスと、周辺デバイスと、を含んで構成される。情報処理装置１は、システムデバイスには、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、システムメモリ１３、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１５、およびＩ／Ｏ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）コントローラ２１、が含まれる。
【００２１】
ＣＰＵ１１には、システムメモリ１３とＩ／Ｏコントローラ２１が接続されている。
ＧＰＵ１５には、ディスプレイ１７とＩ／Ｏコントローラ２１が接続されている。
Ｉ／Ｏコントローラ２１には、ＣＰＵ１１、ＧＰＵ１５、オーディオデバイス２３、通信モジュール２５、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）２７、およびＥＣ（Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ；エンベデッドコントローラ）３１が接続されている。オーディオデバイス２３には、マイクロホンが含まれる。
ＥＣ３１は、プロセッサ、記憶媒体、およびプログラマブルロジック回路を含んで構成されるマイクロコンピュータである。プロセッサとして、例えば、ＣＰＵ１１とは別個のＣＰＵが含まれる。記憶媒体として、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が含まれる。ＥＣ３１は、ＣＰＵ１１とは独立に動作する。
ＥＣ３１には、入力デバイス３３が接続されている。入力デバイス３３は、ユーザの操作を受け付け、受け付けた操作に応じた操作信号をＥＣ３１に出力する。入力デバイス３３には、例えば、キーボード、マウス、タッチセンサなどのいずれか、またはそれらの任意の組み合わせが含まれる。
【００２２】
図２は、本実施形態に係る情報処理装置１の機能構成例を示す概略ブロック図である。  情報処理装置１は、制御部１００と、記憶部１２０と、を含んで構成される。
制御部１００は、音声入力部１０２、発話情報要求部１０４、コマンド特定部１１２、およびコマンド実行部１１４を含んで構成される。
記憶部１２０は、コマンド記憶部１２２を含んで構成される。
【００２３】
図３は、本実施形態に係る情報処理装置１の機能の階層構造の一例を示す説明図である。
ＣＰＵ１１は、所定のプログラムを実行し、情報処理装置１が有するハードウェア資源と協働して上記各部の機能を提供する。ＣＰＵ１１は、例えば、オーディオデバイスドライバを実行し、マイクロホンＭＩＣと協働して音声入力部１０２の機能を提供する。ＣＰＵ１１は、通信モジュールドライバを実行し、通信モジュールと協働して発話情報要求部１０４の機能を提供する。ＣＰＵ１１は、例えば、ＯＳ上で所定のアプリを実行して、コマンド特定部１１２、コマンド実行部１１４およびコマンド記憶部１２２の機能を提供する。ＣＰＵ１１は、ＯＳを実行し、各アプリで共通して利用される基本的な機能を提供する。つまり、「ＯＳ上でアプリを実行する」とは、そのＯＳの実行により、アプリに対してインタフェースとリソースを提供し、提供されたインタフェースとリソースを用いてそのアプリを実行することを意味する。
【００２４】
音声入力部１０２は、マイクロホンＭＩＣから入力される音声データを発話情報要求部１０４に出力する。
発話情報要求部１０４は、音声入力部１０２から入力される音声データで表される発話内容を示す発話情報を音声認識部ＡＳＲ（後述）に要求する。発話情報要求部１０４は、通信モジュール２５を用い、ネットワークを経由して音声認識部ＡＳＲに送信する。
【００２５】
音声認識部ＡＳＲは、例えば、音声認識処理を実行する音声認識サーバ装置である。音声認識部ＡＳＲは、情報処理装置１から受信した音声データに対して音声認識処理を実行して発話内容を定め、定めた発話内容を示す発話情報を情報処理装置１に送信する。
音声認識処理として、既存の手法が利用可能である。音声認識処理は、例えば、発話がなされている発話区間の特定、発話区間から発話された発音を示す音韻列の特定、音韻列から発話内容を示す語句の特定、などの処理を含む。
【００２６】
コマンド特定部１１２は、音声認識部ＡＳＲから受信した発話情報と、コマンド記憶部１２２に記憶された音声コマンドグループが示す有効な音声コマンドのそれぞれとを照合し、発話情報と合致する音声コマンドを特定する。コマンド特定部１１２は、例えば、発話情報が示す文字列に含まれる文字のうち、個々の有効な音声コマンドを示す文字とその順序が一致する文字の個数の比率を一致度として計算する。コマンド特定部１１２は、計算した一致度が所定の一致度の閾値（例えば、８５％〜９５％）以上である音声コマンドのうち、一致度が最も高い音声コマンドを特定する。コマンド特定部１１２は、特定した音声コマンドを示す音声コマンド情報をコマンド実行部１１４に出力する。
【００２７】
また、コマンド特定部１１２は、実行中のアプリの実行状態を監視し、コマンド実行部１１４が実行を開始させている実行中のアプリを特定する。コマンド特定部１１２は、音声コマンドグループのうち、特定した実行中のアプリのアプリコマンドを有効と判定し、その他のアプリのアプリコマンドを無効と判定する。
コマンド特定部１１２は、コマンド実行部１１４が実行を終了させたアプリを特定する。コマンド特定部１１２は、コマンド記憶部１２２に記憶された音声コマンドグループのうち、実行を終了させたアプリのアプリコマンドを無効と判定し、システムコマンドを有効と判定する。なお、コマンド特定部１１２には、電源投入直後いずれのアプリも実行を開始していない状況において、初期設定としてシステムコマンドを有効と設定しておく。
コマンド実行部１１４が実行を開始させたアプリが存在しない場合、またはコマンド実行部１１４が実行を開始させたアプリであって、実行中のアプリが存在しない場合には、コマンド特定部１１２は、いずれのアプリのアプリコマンドを無効と判定し、システムコマンドを有効と判定する。
【００２８】
コマンド実行部１１４は、コマンド特定部１１２から入力される音声コマンド情報で示される音声コマンドが指示する処理を実行する。
入力される音声コマンド情報がアプリの実行開始を示すアプリ開始コマンドを示す場合、コマンド実行部１１４は、そのアプリのＯＳ上での実行開始をＣＰＵ１１に指示する。より具体的には、コマンド実行部１１４は、実行を開始（起動）させるアプリについて、実行中のＯＳのＣｒｅａｔｅＰｒｏｃｅｓｓ関数を呼び出す。ＣｒｅａｔｅＰｒｏｃｅｓｓ関数は、アプリを実行するプロセスの生成を指示するため関数である。図３に例示されるように、アプリ開始コマンドがアプリＡＰＰ１の実行を示すとき、コマンド実行部１１４はＯＳにアプリＡＰＰ１の実行を指示する。コマンド実行部１１４は、アプリの起動完了を示す起動完了情報がＯＳから返り値として入力されるとき、実行を開始させたアプリを示す音声起動アプリ情報を生成し、生成した音声起動アプリ情報を記憶部１２０に記憶する。
【００２９】
入力される音声コマンド情報がアプリの実行終了を示すアプリ終了コマンドを示す場合、コマンド実行部１１４は、そのアプリのＯＳ上での実行終了をＣＰＵ１１に指示する。より具体的には、コマンド実行部１１４は、実行を終了させるアプリについて、実行中のＯＳのＴｅｒｍｉｎａｔｅＰｒｏｃｅｓｓ関数を呼び出す。ＴｅｒｍｉｎａｔｅＰｒｏｃｅｓｓ関数は、アプリを実行するプロセスの終了を指示するため関数である。例えば、アプリ終了コマンドがアプリＡＰＰ１の実行終了を示す場合、コマンド実行部１１４は、ＯＳにアプリＡＰＰ１の実行終了を指示する。コマンド実行部１１４は、実行終了を指示したアプリの実行終了を示す実行終了情報がＯＳから返り値として入力されるとき、記憶部１２０に記憶される音声起動アプリ情報を、そのアプリの実行終了を示す音声起動アプリ情報に更新する。
よって、コマンド特定部１１２は、記憶部１２０に記憶された音声起動アプリ情報を参照して、コマンド実行部１１４が実行を開始させた実行中のアプリを特定することができる。
【００３０】
なお、図２、図３に示す例では、音声認識部ＡＳＲが情報処理装置１と別体として構成されネットワークを用いて相互に接続される場合を前提にしているが、これには限られない。情報処理装置１は、発話情報要求部１０４から入力される音声データに対して音声認識処理を行い、処理結果として得られる発話情報をコマンド特定部１１２に出力する音声認識部ＡＳＲを内蔵してもよい。その構成のもとでは、情報処理装置１は、必ずしも通信モジュール２５を備えていなくてもよい。
【００３１】
また、上記の説明では、音声認識部ＡＳＲは、１回の発話に係る音声データの処理結果として１つの発話内容を示す発話情報を提供する場合を例にしたが、これには限られない。音声認識部ＡＳＲは、音声認識処理により１回の発話に係る音声データの処理結果として、複数の発話情報とその発話情報に対する認識尤度を提供してもよい。その場合、コマンド特定部１１２は、各発話情報について個々の有効な音声コマンドごとに一致度を計算し、計算した一致度とその発話情報に対する認識尤度のそれぞれについて、所定の重み係数を乗じて得られる乗算値の和を総合一致度として計算してもよい。そして、コマンド特定部１１２は、計算した総合一致度が所定の総合一致度の閾値以上である音声コマンドのうち、最も高い総合一致度を与える音声コマンドを特定する。
なお、音声認識部ＡＳＲは、発話情報に基づいて音声コマンドを特定できない場合であっても、そのまま新たな発話情報を待ち受ければよい。
【００３２】
（動作例）
次に、本実施形態に係る情報処理装置１の動作例について説明する。図４は、本実施形態に係る情報処理装置１の動作例を示す説明図である。図４は、上段に音声コマンドの種別ごとの有効期間と、下段にユーザの発話により指示される音声コマンドを示す。左右方向は、時刻を示す。また、×印は、無効な音声コマンドを示す。
まず、ユーザの発話によりアプリＡＰＰ１の実行開始（起動指示）を示すアプリ開始コマンドが指示されるとき、コマンド特定部１１２は、音声認識部ＡＳＲからの発話情報から、システムコマンドのうちアプリＡＰＰ１のアプリ開始コマンドを特定する。このとき、コマンド実行部１１４は、アプリＡＰＰ１の実行を開始させる。コマンド特定部１１２は、アプリＡＰＰ１のアプリコマンドを有効とし、システムコマンドを無効とする。よって、アプリＡＰＰ１のアプリコマンド（つまり、ＡＰＰ１のＶＣ）の有効期間Ｔ１が開始される。有効期間Ｔ１内では、コマンド特定部１１２は、音声認識部ＡＳＲからの発話情報から、アプリＡＰＰ１のアプリコマンドのいずれかを特定することができ、その他のアプリのアプリコマンドまたはシステムコマンドを特定することはできない。例えば、コマンド特定部１１２は、アプリＡＰＰ１のアプリコマンドのうち、ユーザの発話により指示されるアプリコマンドＶＣ１１、ＶＣ１２、ＶＣ１３をそれぞれ認識することができる。コマンド実行部１１４は、コマンド特定部１１２が認識したアプリＡＰＰ１のアプリコマンドＶＣ１１、ＶＣ１２、ＶＣ１３で指示される処理を実行する。他方、コマンド特定部１１２は、アプリＡＰＰ２のアプリコマンド、例えば、アプリコマンドＶＣ２２を認識することはできない。そのため、アプリＡＰＰ２のアプリコマンドＶＣ２２で指示される処理は実行されない。
【００３３】
次に、ユーザの発話によりアプリＡＰＰ１の実行終了（終了指示）を示すアプリ終了コマンドが指示されるとき、コマンド特定部１１２は、音声認識部ＡＳＲからの発話情報から、アプリＡＰＰ１のアプリコマンドのうちアプリＡＰＰ１のアプリ終了コマンドを特定する。このとき、コマンド実行部１１４は、アプリＡＰＰ１の実行を終了させる。コマンド特定部１１２は、アプリＡＰＰ１のアプリコマンドを無効とし、システムコマンドを有効とする。よって、アプリＡＰＰ１のアプリコマンドの有効期間Ｔ１が終了し、新たなシステムコマンド有効期間ＴＳ１が開始される。
【００３４】
次に、ユーザの発話によりアプリＡＰＰ２の実行開始（起動指示）を示すアプリ開始コマンドが指示されるとき、コマンド特定部１１２は、音声認識部ＡＳＲからの発話情報から、システムコマンドのうちアプリＡＰＰ２のアプリ開始コマンドを特定する。このとき、コマンド実行部１１４は、アプリＡＰＰ２の実行を開始させる。コマンド特定部１１２は、アプリＡＰＰ２のアプリコマンドを有効とし、システムコマンドを無効とする。よって、システムコマンド有効期間ＴＳ１が終了し、アプリＡＰＰ２のアプリコマンドの有効期間Ｔ２が開始される。有効期間Ｔ２内では、コマンド特定部１１２は、音声認識部ＡＳＲからの発話情報から、アプリＡＰＰ２のアプリコマンドのいずれかを特定することができ、その他のアプリのアプリコマンドまたはシステムコマンドを特定することはできない。例えば、コマンド特定部１１２は、アプリＡＰＰ２のアプリコマンドのうち、ユーザの発話により指示されるアプリコマンドＶＣ２１、ＶＣ２２、ＶＣ２３をそれぞれ認識することができる。コマンド実行部１１４は、コマンド特定部１１２が認識したアプリＡＰＰ２のアプリコマンドＶＣ２１、ＶＣ２２、ＶＣ２３で指示される処理を実行する。他方、コマンド特定部１１２は、アプリＡＰＰ１のアプリコマンド、例えば、アプリコマンドＶＣ１２を認識することはできない。
【００３５】
次に、ユーザの発話によりアプリＡＰＰ２の実行終了（終了指示）を示すアプリ終了コマンドが指示されるとき、コマンド特定部１１２は、音声認識部ＡＳＲからの発話情報から、アプリＡＰＰ２のアプリコマンドのうちアプリＡＰＰ２のアプリ終了コマンドを特定する。このとき、コマンド実行部１１４は、アプリＡＰＰ２の実行を終了させる。コマンド特定部１１２は、アプリＡＰＰ２のアプリコマンドを無効とし、システムコマンドを有効とする。よって、アプリＡＰＰ２のアプリコマンドの有効期間Ｔ２が終了し、新たなシステムコマンド有効期間ＴＳ２が開始される。
【００３６】
（音声コマンド）
次に、音声コマンドの例について説明する。
図５は、本実施形態に係るシステムコマンドの例を示す図である。図５の各行は、システムコマンドごとに指示される機能を示す。第１行の「Ｏｐｅｎ…」は、アプリ…の実行開始を示すアプリ開始コマンドである。第３行の「Ｓｈｕｔｄｏｗｎ」は、システムのシャットダウンを示す。
【００３７】
図６は、本実施形態に係るアプリコマンドの第１例を示す図である。図６は、描画用アプリＡＰＰ１に対する操作に係るアプリコマンド１を各行に例示する。個々のアプリコマンド１で指示される機能を対応付けて示される。第１行の「Ｍａｘｉｍｉｚｅ」は、ウィンドウの最大化を示すアプリコマンドである。第８行の「Ｆｉｎｉｓｈ  ＡＰＰ１」は、アプリＡＰＰ１の実行終了を示すアプリ終了コマンドである。
図７は、本実施形態に係るアプリコマンドの第２例を示す図である。図７は、プレゼンテーション用アプリＡＰＰ２に対する操作に係るアプリコマンド２を各行に例示する。第１行の「Ｓｔａｒｔ  Ｐｒｅｓｅｎｔａｔｉｏｎ」は、プレゼンテーション機能の開始を示すアプリコマンドである。第８行の「Ｆｉｎｉｓｈ  ＡＰＰ２」は、アプリＡＰＰ２の実行終了を示すアプリ終了コマンドである。
このように、アプリごとのアプリコマンドグループには、それぞれのアプリのアプリ終了コマンドが含まれる。アプリの実行中においては、そのアプリのアプリコマンドだけが有効となるが、アプリコマンドにそのアプリのアプリ終了コマンドを含めることで実行終了を音声で指示する契機が確保される。
【００３８】
なお、コマンド特定部１１２は、その時点で有効なコマンドを示すコマンドリストを生成し、生成したコマンドリストをディスプレイ１７に出力してもよい。ディスプレイ１７は、コマンド特定部１１２から入力されたコマンドリストをユーザが視認できる形態で提示する。例えば、現時刻がアプリＡＰＰ１のアプリコマンドの有効期間Ｔ１内である場合には、コマンド特定部１１２は、アプリＡＰＰ１のアプリコマンドを含み、アプリＡＰＰ２のアプリコマンドやシステムコマンドを含まないコマンドリストをディスプレイ１７に提示させる。現時刻がアプリＡＰＰ２のアプリコマンドの有効期間Ｔ２内である場合には、コマンド特定部１１２は、アプリＡＰＰ２のアプリコマンドを含み、アプリＡＰＰ１のアプリコマンドやシステムコマンドを含まないコマンドリストをディスプレイ１７に提示させる。現時刻がシステムコマンド有効期間ＴＳ１、ＴＳ２内である場合には、コマンド特定部１１２は、システムコマンドを含み、アプリコマンドを含まないコマンドリストをディスプレイ１７に提示させる。
従って、コマンドリストを視認したユーザは、その時点で有効な音声コマンドを把握することができる。そのため、無効な音声コマンドの発話を回避することができる。
【００３９】
（動作フロー）
次に、本実施形態に係る音声操作処理の例について説明する。
図８は、本実施形態に係る音声操作処理の一例を示すフローチャートである。
（ステップＳ１０２）コマンド特定部１１２は、音声認識部ＡＳＲ（音声認識エンジン）から発話情報を取得する。その後、ステップＳ１０４の処理に進む。
（ステップＳ１０４）コマンド特定部１１２は、その時点でアプリコマンドが有効であるとき（ステップＳ１０４  ＹＥＳ）、ステップＳ１１６の処理に進む。アプリコマンドが無効であるとき（ステップＳ１０４  ＮＯ）、ステップＳ１０６の処理に進む。なお、コマンド特定部１１２には、初期設定として、有効なシステムコマンドであり、いずれのアプリのアプリコマンドが無効であることを設定させておく。
【００４０】
（ステップＳ１０６）コマンド特定部１１２は、取得した発話情報とシステムコマンドのそれぞれとを照合し、発話情報と合致するシステムコマンドの有無を判定する。コマンド特定部１１２は、発話情報と合致するシステムコマンドを有すると判定するとき（ステップＳ１０６  ＹＥＳ）、発話情報と合致するシステムコマンドを特定し、ステップＳ１０８の処理に進む。コマンド特定部１１２は、発話情報と合致するシステムコマンドを有しないと判定するとき（ステップＳ１０６  ＮＯ）、ステップＳ１０２の処理に戻る。
【００４１】
（ステップＳ１０８）コマンド特定部１１２は、特定したシステムコマンドがいずれかのアプリのアプリ開始コマンドであるとき（ステップＳ１０８  ＹＥＳ）、ステップＳ１１２の処理に進む。コマンド特定部１１２は、特定したシステムコマンドが他のシステムコマンドであるとき（ステップＳ１０８  ＮＯ）、ステップＳ１１０の処理に進む。
（ステップＳ１１０）コマンド実行部１１４は、コマンド特定部１１２が特定した他のシステムコマンドを実行する。その後、ステップＳ１０２の処理に戻る。
【００４２】
（ステップＳ１１２）コマンド実行部１１４は、コマンド特定部１１２が特定したアプリ開始コマンドで指示されるアプリの実行を開始（起動）する。その後、ステップＳ１１４の処理に進む。
（ステップＳ１１４）コマンド特定部１１２は、特定したアプリ開始コマンドで指示されるアプリのアプリコマンドを有効にし、システムコマンドを無効にする。その後、ステップＳ１０２の処理に戻る。
【００４３】
（ステップＳ１１６）コマンド特定部１１２は、取得した発話情報と有効なアプリコマンドのそれぞれとを照合し、発話情報と合致するアプリコマンドの有無を判定する。コマンド特定部１１２は、発話情報と合致するアプリコマンドを有すると判定するとき（ステップＳ１１６  ＹＥＳ）、発話情報と合致するアプリコマンドを特定し、ステップＳ１１８の処理に進む。コマンド特定部１１２は、発話情報と合致するアプリコマンドを有しないと判定するとき（ステップＳ１１６  ＮＯ）、ステップＳ１０２の処理に戻る。
【００４４】
（ステップＳ１１８）コマンド特定部１１２は、特定したアプリコマンドがアプリ終了コマンドであるとき（ステップＳ１１８  ＹＥＳ）、ステップＳ１２０の処理に進む。コマンド特定部１１２は、特定したアプリコマンドが他のアプリコマンドであるとき（ステップＳ１１８  ＮＯ）、ステップＳ１２４の処理に進む。
（ステップＳ１２０）コマンド実行部１１４は、コマンド特定部１１２が特定したアプリ終了コマンドで指示されるアプリの実行を終了する。その後、ステップＳ１２２の処理に進む。
（ステップＳ１２２）コマンド特定部１１２は、特定したアプリ終了コマンドで指示されるアプリのアプリコマンドを無効にし、システムコマンドを有効にする。その後、ステップＳ１０２の処理に戻る。
（ステップＳ１２４）コマンド実行部１１４は、コマンド特定部１１２が特定した他のアプリコマンドを実行する。その後、ステップＳ１０２の処理に戻る。
【００４５】
（マルチウィンドウ機能への適用）
上記の説明では、コマンド実行部１１４が、音声コマンドにより同時に２件以上のアプリを実行せず、１件のアプリのみの実行を可能とする場合を例にしたが、これには限られない。制御部１００は、マルチウィンドウ機能のもとで、入力デバイス３３から入力される操作信号でさらに別のアプリを実行可能とし、実行中のアプリの機能を操作可能としてもよい。一般にマルチウィンドウ機能を有するＯＳのもとでは、制御部１００は、実行中のアプリのそれぞれについてウィンドウをディスプレイ１７に表示させる。制御部１００は、複数のウィンドウを表示させるとき、いずれか１つのウィンドウをアクティブウィンドウとして定める。制御部１００は、アクティブウィンドウの領域内を指示する操作信号に基づいてアクティブウィンドウに係るアプリ（以下、フォアグランドアプリ）の動作を制御し、その他のウィンドウ（以下、非アクティブウィンドウ）に係るアプリ（以下、バックグランドアプリ）の動作を制御しない。アクティブウィンドウを表示させ、受け付けた操作信号に基づいて動作を制御可能としている状態は、一般にフォアグランドと呼ばれる。
【００４６】
ＯＳを実行して得られる機能には、アクティブウィンドウを非アクティブウィンドウよりも優先表示する機能が含まれる。優先表示とは、アクティブウィンドウと非アクティブウィンドウと重なり合う重複領域において、非アクティブウィンドウの重複領域を表示させずにアクティブウィンドウの重複領域を表示することを意味する。優先表示には、アクティブウィンドウの周縁部を非アクティブウィンドウの周縁部よりも目立つ態様で表示すること、などが含まれることがある。制御部１００は、例えば、新たに実行を開始したアプリに係るウィンドウをアクティブウィンドウとして定め、実行中のアプリに係るウィンドウを非アクティブウィンドウとして定める。また、制御部１００は、操作信号で指示される非アクティブウィンドウを新たにアクティブウィンドウとして定め、その時点におけるアクティブウィンドウを非アクティブウィンドウとして定める。制御部１００は、実行中のアプリとフォアグランドアプリをさらに示す実行アプリ情報を生成し、記憶部１２０に記憶する。制御部１００は、アプリの実行開始、実行中のアプリの実行終了、およびフォアグランドアプリの変更ごとに実行アプリ情報を更新する。
【００４７】
コマンド特定部１１２は、操作信号に応じて実行開始が指示されたアプリ（以下、非音声起動アプリ）のいずれか（例えば、アプリＡＰＰ２）が新たにフォアグランドアプリとなると判定する場合を仮定する。この場合、コマンド特定部１１２は、新たなフォアグランドアプリとして判定した非音声起動アプリに係るアプリコマンドを有効にし、システムコマンドを無効にしてもよい。コマンド特定部１１２は、アプリ実行情報と音声起動アプリ情報を所定時間ごとにモニタし、アプリ実行情報が示す実行中のアプリのうち、音声起動アプリ情報が示すアプリ開始コマンドで実行が開始されたアプリを除くアプリを、非音声起動アプリとして特定することができる。また、コマンド特定部１１２は、特定した非音声起動アプリが、アプリ実行情報が示すフォアグランドアプリと一致すると判定するとき、非音声起動アプリがフォアグランドアプリであると判定することができる。
【００４８】
マルチウィンドウ機能のもとでは、既に音声起動アプリ（図９の例では、アプリＡＰＰ１）が実行中であるとき、コマンド特定部１１２は、非音声起動アプリ（図９の例では、アプリＡＰＰ２）が新たなフォアグランドアプリと判定する場合が生じうる。その場合、コマンド特定部１１２は、新たなフォアグランドアプリに係るアプリコマンドを有効とし、実行中の音声起動アプリに係るアプリコマンドを無効にする。コマンド実行部１１４は、有効にされたアプリコマンドを用いてフォアグランドアプリである非音声起動アプリの動作を制御することができる。
その後、コマンド特定部１１２は、実行アプリ情報を参照して、フォアグランドアプリの実行が終了し、かつ、音声起動アプリがまだ実行中と判定するとき、実行を終了させたフォアグランドアプリに係るアプリコマンドを無効にし、実行中の音声起動アプリに係るアプリコマンドを有効にしてもよい。このとき、制御部１００は、実行中の音声起動アプリをフォアグランドアプリとして定めてもよい。これにより、実行が継続している音声起動アプリに対する音声による動作の制御を再開するとともに、フォアグランドアプリとして操作信号に応じた操作も可能となる。
【００４９】
コマンド特定部１１２は、実行アプリ情報を参照して、フォアグランドアプリとして定めた非音声起動アプリが実行を継続しながらバックグランドアプリとなり、他の実行中のアプリ（例えば、アプリＡＰＰ３）が新たにフォアグランドアプリと判定する場合がある。この場合には、コマンド特定部１１２は、もとのフォアグランドアプリに係るアプリコマンドを無効にし、新たなフォアグランドアプリに係るアプリコマンドを有効にしてもよい。
【００５０】
また、コマンド特定部１１２は、既に音声起動アプリ（図１０の例では、ＡＰＰ１）が実行中であるとき、非音声起動アプリのいずれか（図１０の例では、ＡＰＰ２）が新たにフォアグランドアプリとなると判定する場合がある。この場合において、コマンド特定部１１２は、発話情報に基づいてその時点で有効なアプリコマンドのいずれかを認識した時点で、実行中の音声起動アプリをフォアグランドアプリとし、その他の実行中のアプリをバックグランドアプリとしてもよい。コマンド実行部１１４は、フォアグランドアプリとする際、その音声起動アプリについて実行中のＯＳのＳｅｔＦｏｒｅＧｒｏｕｎｄＷｉｎｄｏｗ関数を呼び出す。ＳｅｔＦｏｒｅＧｒｏｕｎｄＷｉｎｄｏｗ関数は、対象となるアプリに係るウィンドウをフォアグランドにすること、つまりアクティブウィンドウとすることを指示するための関数である。このとき、コマンド特定部１１２は、直前にバックグランドコマンドとした非音声起動アプリに係るアプリコマンドを無効にしたまま維持する。
従って、コマンド実行部１１４は、実行中の音声起動アプリをユーザの発話に応じて認識されたアプリコマンドで制御することができる。同時に実行中のアプリの件数に関わらず、音声起動アプリの実行が終了するまで他のアプリの音声コマンドが有効にならないので、ユーザは、フォアグランドアプリとして音声起動アプリとしての操作に専念することができる。
【００５１】
また、コマンド特定部１１２は、音声起動アプリの実行終了を判定するとき、音声起動アプリに係るアプリコマンドを無効にし、新たにフォアグランドアプリとなると判定した非音声起動アプリに係るアプリコマンドを有効にしてもよい。これにより、ユーザは、音声コマンドにより起動を指示しなくても、関心を有するアプリに対して音声による動作の制御を実現することができる。
【００５２】
（アプリコマンドグループの階層化）
アプリコマンドグループの少なくとも１つは、複数の階層に階層化されてもよい。
つまり、アプリコマンドグループは、例えば、Ｎ（Ｎは、２以上の整数）階層の階層別コマンドグループを有してもよい。第ｎ（ｎは、１以上Ｎ以下の整数）階層の階層別コマンドグループは、１以上の第ｎ階層の機能のそれぞれに対する階層別コマンドを含む。但し、第ｎ（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドグループは、１以上の第ｎ＋１階層の機能の実行開始を示す第ｎ＋１階層機能開始コマンドを有する。また、第ｎ（ｎは、２以上Ｎ以下の整数）階層の階層別コマンドグループは、第ｎ階層の機能の実行終了を示す第ｎ階層機能終了コマンドを有する。
【００５３】
コマンド特定部１１２は、発話情報に基づいて第ｎ＋１階層開始コマンドのいずれかを特定するとき、特定した第ｎ＋１階層機能の階層別コマンドを有効にし、第ｎ階層機能の階層別コマンドと他の第ｎ＋１階層機能の階層別コマンドを無効とする。これにより、コマンド実行部１１４は、第ｎ階層機能に対する制御を終了し、特定された第ｎ＋１階層機能に対する制御を開始することができる。
コマンド特定部１１２は、発話情報に基づいて第ｎ＋１階層機能終了コマンドを特定するとき、特定した第ｎ＋１階層の階層別コマンドを無効にし、第ｎ階層機能の階層別コマンドを再度有効にする。
【００５４】
次に、階層化されたアプリコマンドグループの例について説明する。
図１１−１４は、階層化されたアプリコマンドグループの例を示す図である。図１１−１４は、プレゼンテーション用アプリＡＰＰ２に係るアプリコマンドの例を示す。図１１は、本実施形態に係る第１階層の機能の階層別コマンドの例を示す。図１１の第１行の「Ｓｔａｒｔ  Ｐｒｅｓｅｎｔａｔｉｏｎ」、第２行の「Ｓｔａｒｔ  Ｄｏｃｕｍｅｎｔ  Ｐｒｅｐａｒａｔｉｏｎ」は、それぞれ第２階層の機能の実行開始を示す第２階層機能開始コマンドである。第３行の「Ｆｉｎｉｓｈ  ＡＰＰ２」は、アプリＡＰＰ２の実行終了を指示するためのアプリ終了コマンドである。
【００５５】
図１２は、「Ｓｔａｒｔ  Ｐｒｅｓｅｎｔａｔｉｏｎ」で指示される第２階層の機能としてプレゼンテーションに係る階層別コマンドを含む。図１２の第１−４行に示すコマンドは、いずれも通常の第２階層の階層別コマンドである。例えば、図１２の第１行の「Ｇｏ  ｔｏ  ｎｅｘｔ」は、現ページに代え、次ページの資料画面の提示を指示するための第２階層の階層別コマンドである。図１２の第５行の「Ｆｉｎｉｓｈ  Ｐｒｅｓｅｎｔａｔｉｏｎ」は、プレゼンテーションの終了を指示するための第２階層機能終了コマンドである。コマンド特定部１１２が、発話情報に基づいてこのコマンドを特定するとき、図１２に示す第２階層機能の階層別コマンドを無効にし、図１１に示す第１階層機能の階層別コマンドを有効にする。
【００５６】
図１３は、「Ｓｔａｒｔ  Ｄｏｃｕｍｅｎｔ  Ｐｒｅｐａｒａｔｉｏｎ」で指示される第２階層の機能として文書作成に係る階層別コマンドを含む。図１３の第１−７行に示すコマンドは、いずれも通常の第２階層の階層別コマンドである。例えば、図１３の第１行の「Ｍａｘｉｍｉｚｅ」は、アプリＡＰＰ２の現在表示中のウィンドウの最大化を指示するための階層別コマンドである。図１３の第８行の「Ｏｐｅｎ  Ｅｎｔｒｙ  Ｆｉｅｌｄ」は、第３階層の機能として文字入力欄をアプリＡＰＰ２に係るウィンドウ内に表示させることで、文字入力を開始するための第３階層機能開始コマンドである。コマンド特定部１１２が、発話情報に基づいてこのコマンドを特定するとき、図１３に示す第２階層機能の階層別コマンドを無効にし、図１４に示す第３階層機能の階層別コマンドを有効にする。図１３の第９行の「Ｆｉｎｉｓｈ  Ｄｏｃｕｍｅｎｔ  Ｐｒｅｐａｒａｔｉｏｎ」は、文書作成の終了を指示するための第２階層機能終了コマンドである。コマンド特定部１１２が、発話情報に基づいてこのコマンドを特定するとき、図１３に示す第２階層機能の階層別コマンドを無効にし、図１１に示す第１階層機能の階層別コマンドを有効にする。
【００５７】
図１４は、「Ｏｐｅｎ  Ｅｎｔｒｙ  Ｆｉｅｌｄ」で指示される第３階層の機能として文字入力に係る階層別コマンドを含む。図１４の第１行の「…」は、任意の文字列に対する文字入力処理、つまり、文字入力欄の表示中に発話情報が示す文字情報を保存し、保存した文字情報を文字入力欄に表示する処理を指示するための階層別コマンドであることを示す。図１４の第２行の「Ｃｌｏｓｅ  Ｅｎｔｒｙ  Ｆｉｅｌｄ」は、文字入力処理の終了を指示するための第３階層機能終了コマンドである。コマンド特定部１１２が、発話情報に基づいてこのコマンドを特定するとき、図１４に示す第３階層機能の階層別コマンドを無効にし、図１３に示す第２階層機能の階層別コマンドを有効にする。
【００５８】
以上に説明したように、本実施形態に係る情報処理装置は、予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定部１１２と、特定された音声コマンドで指示される処理を実行するコマンド実行部１１４と、を備える。コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループとを含む。システムコマンドの１つは、アプリの実行開始を示すアプリ開始コマンドである。コマンド特定部１１２は、アプリ開始コマンドで指示されたアプリの実行中に、当該アプリのアプリコマンドを有効にし、システムコマンドと他のアプリのアプリを無効にする。
この構成によれば、同時に１つの実行中のアプリに対するアプリコマンドを有効とし、その他のアプリコマンドを無効にすることができる。音声により操作可能とするアプリは、アプリ開始コマンドで指示された１つのアプリに限定され、他のアプリの動作には及ばない。そのため、所望のアプリ以外の他のアプリに対する操作を回避することができる。その機能の実現のために個々のアプリに対してアプリコマンドを定義しておけば、個々のアプリやＯＳの改修、その他のソフトウェアの開発を要しないため、既存のアプリに対して容易に適用することができる。
【００５９】
また、個々のアプリのアプリコマンドの１つとして、当該アプリの実行終了を示すアプリ終了コマンドを設定しておく。コマンド特定部１１２は、アプリ終了コマンドで指示されたアプリの実行終了に応じて、当該アプリのアプリを無効にし、システムコマンドを有効にしてもよい。
この構成によれば、音声によりアプリを操作可能とする期間が、発話により指示されたアプリ開始コマンドが特定されてから、アプリ終了コマンドが特定されるまでの期間に限定される。そして、その期間の終了後、発話により指示されたシステムコマンドに応じてシステムに対する操作、例えば、再度のアプリの実行開始が可能となる。
【００６０】
また、コマンド特定部１１２は、他のアプリ、即ち、非音声起動アプリの実行が開始されるとき、他のアプリのアプリを有効にし、既にアプリ開始コマンドで実行開始が指示された音声起動アプリのアプリを無効にしてもよい。
この構成によれば、非音声起動アプリの実行開始に伴い、発話により指示されたアプリコマンドに応じて、そのアプリの操作が可能になる。
【００６１】
また、コマンド特定部１１２は、他のアプリの実行が終了するとき、他のアプリのアプリを無効にし、その時点で実行中の音声起動アプリのアプリを有効にしてもよい。
この構成によれば、非音声起動アプリの実行終了に伴い、既に起動していた音声起動アプリに対して、発話により指示されたアプリコマンドに応じた操作を再度可能にすることができる。
【００６２】
また、コマンド特定部１１２は、アプリ開始コマンドで実行開始が指示された音声起動アプリの実行中に、他のアプリの実行が指示されるとき、音声起動アプリのアプリを有効のまま維持し、他のアプリのアプリケーションコマンドを無効としてもよい。
この構成によれば、音声起動アプリの実行中に非音声起動アプリの実行が指示されても、音声起動アプリに対して、発話により指示されたアプリコマンドに応じた操作可能な状態を維持することができる。そのため、実行開始を指示したアプリごとに、操作手段の使い分けがなされる。
【００６３】
また、コマンド特定部１１２が、発話情報に基づいてアプリ開始コマンドを特定するとき、コマンド実行部１１４は、アプリ開始コマンドで指示されたアプリを実行するためのプロセスをＯＳに生成させてもよい。コマンド特定部１１２が、発話情報に基づいてアプリの実行終了を示すアプリ終了コマンドを特定するとき、コマンド実行部１１４は、そのアプリのプロセスをＯＳに終了させてもよい。
この構成によれば、予めアプリごとに定義したアプリコマンドに応じた操作の開始ならびに終了を既存のＯＳ上で実現することができる。
【００６４】
また、アプリケーションコマンドグループは、Ｎ（Ｎは、２以上の整数）階層の階層別コマンドグループを含み、第ｎ（ｎは、１以上Ｎ以下の整数）階層の階層別コマンドグループは、第ｎ階層の機能に対する階層別コマンドを含み、第ｎ（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの少なくともいずれかは、第ｎ＋１階層の機能の実行開始を示す第ｎ＋１階層機能開始コマンドであり、第ｎ＋１（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの１つは、第ｎ＋１階層の機能の実行終了を示す第ｎ＋１階層機能終了コマンドであってもよい。コマンド特定部１１２は、第ｎ＋１階層開始コマンドのいずれかを特定するとき、特定した第ｎ＋１階層機能の階層別コマンドを有効にし、第ｎ階層機能の階層別コマンドと他の第ｎ＋１階層機能の階層別コマンドを無効とし、第ｎ＋１階層機能終了コマンドを特定するとき、特定した第ｎ＋１階層の階層別コマンドを無効にし、第ｎ階層機能の階層別コマンドを有効にしてもよい。
この構成によれば、同時に１つの実行中の階層の機能に対する階層別コマンドを有効とし、その他の階層の機能を無効にすることができる。音声により操作可能とする機能は、アプリ開始コマンドにより指示された１つのアプリに限定され、他のアプリの動作には及ばない。そのため、ユーザの発話により所望の階層の機能以外の機能に対する操作を回避することができる。
【００６５】
また、コマンド特定部１１２は、アプリ開始コマンドで指示されたアプリの実行中に、当該アプリの機能に対して有効なコマンドを示すコマンドリストを表示部（例えば、ディスプレイ１７）に出力する。
この構成によれば、ユーザはその時点で有効なコマンドを視認することができるため、ユーザに対して無効なコマンドに対する発話を回避させることができる。
【００６６】
また、上記の説明では、主に文書作成用アプリとプレゼンテーション用アプリに適用する場合を例にしたが、他の種別のアプリ、例えば、表計算用アプリ、ブラウザ、通話用アプリなどに適用されてもよい。
ＣＰＵ１１は、ＯＳ上で所定の１個のアプリを実行して、コマンド特定部１１２、コマンド実行部１１４およびコマンド記憶部１２２の機能を提供してもよいし、所定の複数のアプリを実行して、コマンド特定部１１２、コマンド実行部１１４およびコマンド記憶部１２２の機能を提供してもよい。また、ディスプレイ１７、入力デバイス３３の双方または一方は、情報処理装置１の他の部材と各種のデータを送受信することができれば、他の部材と物理的に接続されていてもよいし、別体であってもよい。
また、音声認識部ＡＳＲは、情報処理装置１が別体である場合を例にしたが、情報処理装置１と一体化されていてもよい。その場合、音声認識部ＡＳＲと発話情報要求部１０４もしくはコマンド特定部１１２との間の送受信に代えて、情報処理装置１内部での入出力がなされていればよい。
【００６７】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成は上述の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。上述の実施形態において説明した各構成は、任意に組み合わせることができる。
【符号の説明】
【００６８】
１…情報処理装置、１１…ＣＰＵ、１３…システムメモリ、１５…ＧＰＵ、１７…ディスプレイ、２１…Ｉ／Ｏコントローラ、２３…オーディオデバイス、２５…通信モジュール、２７…ＨＤＤ、３１…ＥＣ、３３…入力デバイス、１００…制御部、１０２…音声入力部、１０４…発話情報要求部、１１２…コマンド特定部、１１４…コマンド実行部、１２０…記憶部、１２２…コマンド記憶部
【図１】
2020134627.tif 000003
【図２】
2020134627.tif 000004
【図３】
2020134627.tif 000005
【図４】
2020134627.tif 000006
【図５】
2020134627.tif 000007
【図６】
2020134627.tif 000008
【図７】
2020134627.tif 000009
【図８】
2020134627.tif 000010
【図９】
2020134627.tif 000011
【図１０】
2020134627.tif 000012
【図１１】
2020134627.tif 000013
【図１２】
2020134627.tif 000014
【図１３】
2020134627.tif 000015
【図１４】
2020134627.tif 000016
【手続補正書】
【提出日】令和2年6月2日(2020.6.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定部と、
特定された前記音声コマンドで指示される処理を実行するコマンド実行部と、を備え、
前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み
前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、
前記コマンド特定部は、
前記アプリケーション開始コマンドで実行開始が指示された音声起動アプリケーションプログラムの実行中に、他のアプリケーションプログラムの実行が指示されるとき、
前記音声起動アプリケーションプログラムのアプリケーションコマンドを有効にし、前記他のアプリケーションプログラムのアプリケーションコマンドを無効にする
情報処理装置。
【請求項２】
予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定部と、
特定された前記音声コマンドで指示される処理を実行するコマンド実行部と、を備え、
前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み
前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、
前記アプリケーションコマンドグループは、Ｎ（Ｎは、２以上の整数）階層の階層別コマンドグループを含み、
第ｎ（ｎは、１以上Ｎ以下の整数）階層の階層別コマンドグループは、第ｎ階層の機能に対する階層別コマンドを含み、
第ｎ（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの少なくともいずれかは、第ｎ＋１階層の機能の実行開始を示す第ｎ＋１階層機能開始コマンドであり、
第ｎ＋１（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの１つは、第ｎ＋１階層の機能の実行終了を示す第ｎ＋１階層機能終了コマンドであり、
前記コマンド特定部は、
前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムのアプリケーションコマンドを有効にし、前記システムコマンドと他のアプリケーションプログラムのアプリケーションコマンドを無効にし、
前記第ｎ＋１階層開始コマンドのいずれかを特定するとき、特定した第ｎ＋１階層機能の階層別コマンドを有効にし、前記第ｎ階層機能の階層別コマンドと他の第ｎ＋１階層機能の階層別コマンドを無効とし、
前記第ｎ＋１階層機能終了コマンドを特定するとき、特定した第ｎ＋１階層の階層別コマンドを無効にし、前記第ｎ階層機能の階層別コマンドを有効にする
情報処理装置。
【請求項３】
前記アプリケーションコマンドの１つは、前記アプリケーションプログラムの実行終了を示すアプリケーション終了コマンドであり、
前記コマンド特定部は、
前記アプリケーション終了コマンドで指示されたアプリケーションプログラムの実行終了に応じて、前記アプリケーションプログラムのアプリケーションコマンドを無効にし、前記システムコマンドを有効にする
請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記コマンド特定部は、
他のアプリケーションプログラムの実行が開始されるとき、
前記他のアプリケーションプログラムのアプリケーションコマンドを有効にし、前記アプリケーション開始コマンドで実行開始が指示されたアプリケーションである音声起動アプリケーションプログラムのアプリケーションコマンドを無効にする
請求項１から請求項３のいずれか一項に記載の情報処理装置。
【請求項５】
前記コマンド特定部は、
前記他のアプリケーションプログラムの実行が終了するとき、
前記他のアプリケーションプログラムのアプリケーションコマンドを無効にし、前記音声起動アプリケーションプログラムのアプリケーションコマンドを有効にする
請求項４に記載の情報処理装置。
【請求項６】
前記コマンド特定部が、
前記アプリケーション開始コマンドを特定するとき、
前記コマンド実行部は、
前記アプリケーション開始コマンドで指示されたアプリケーションプログラムを実行するためのプロセスをオペレーティングシステムに生成させ、
前記コマンド特定部が、
前記アプリケーションプログラムの実行終了を示すアプリケーション終了コマンドを特定するとき、
前記コマンド実行部は、
前記プロセスを前記オペレーティングシステムに終了させる
請求項１から請求項５のいずれか一項に記載の情報処理装置。
【請求項７】
前記コマンド特定部は、
前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムの機能に対して有効なコマンドを示すコマンドリストを表示部に表示させる
請求項１から請求項６のいずれか一項に記載の情報処理装置。
【請求項８】
情報処理装置における方法であって、
予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定過程と、
特定された前記音声コマンドで指示される処理を実行するコマンド実行過程と、を有し、
前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み
前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、
前記コマンド特定過程は、
前記アプリケーション開始コマンドで実行開始が指示された音声起動アプリケーションプログラムの実行中に、他のアプリケーションプログラムの実行が指示されるとき、
前記音声起動アプリケーションプログラムのアプリケーションコマンドを有効にし、前記他のアプリケーションプログラムのアプリケーションコマンドを無効にする
情報処理方法。
【請求項９】
情報処理装置における方法であって、
予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定過程と、
特定された前記音声コマンドで指示される処理を実行するコマンド実行過程と、を有し、
前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み
前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、
前記アプリケーションコマンドグループは、Ｎ（Ｎは、２以上の整数）階層の階層別コマンドグループを含み、
第ｎ（ｎは、１以上Ｎ以下の整数）階層の階層別コマンドグループは、第ｎ階層の機能に対する階層別コマンドを含み、
第ｎ（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの少なくともいずれかは、第ｎ＋１階層の機能の実行開始を示す第ｎ＋１階層機能開始コマンドであり、
第ｎ＋１（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの１つは、第ｎ＋１階層の機能の実行終了を示す第ｎ＋１階層機能終了コマンドであり、
前記コマンド特定過程は、
前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムのアプリケーションコマンドを有効にし、前記システムコマンドと他のアプリケーションプログラムのアプリケーションコマンドを無効にし、
前記第ｎ＋１階層開始コマンドのいずれかを特定するとき、特定した第ｎ＋１階層機能の階層別コマンドを有効にし、前記第ｎ階層機能の階層別コマンドと他の第ｎ＋１階層機能の階層別コマンドを無効とし、
前記第ｎ＋１階層機能終了コマンドを特定するとき、特定した第ｎ＋１階層の階層別コマンドを無効にし、前記第ｎ階層機能の階層別コマンドを有効にする
情報処理方法。
【請求項１０】
情報処理装置のコンピュータに、
予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定手順と、
特定された前記音声コマンドで指示される処理を実行するコマンド実行手順と、を実行させ、
前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み
前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、
前記コマンド特定手順は、
前記アプリケーション開始コマンドで実行開始が指示された音声起動アプリケーションプログラムの実行中に、他のアプリケーションプログラムの実行が指示されるとき、
前記音声起動アプリケーションプログラムのアプリケーションコマンドを有効とし、前記他のアプリケーションプログラムのアプリケーションコマンドを無効とする
プログラム。
【請求項１１】
情報処理装置のコンピュータに、
予め設定されたコマンドグループに含まれる複数の音声コマンドから、入力された音声の発話情報で指示される音声コマンドを特定するコマンド特定手順と、
特定された前記音声コマンドで指示される処理を実行するコマンド実行手順と、を実行させ、
前記コマンドグループは、システムの動作に対するシステムコマンドを１以上含むシステムコマンドグループと、アプリケーションプログラムの機能に対するアプリケーションコマンドを１以上含むアプリケーションコマンドグループと、を含み
前記システムコマンドの１つは、アプリケーションプログラムの実行開始を示すアプリケーション開始コマンドであり、
前記アプリケーションコマンドグループは、Ｎ（Ｎは、２以上の整数）階層の階層別コマンドグループを含み、
第ｎ（ｎは、１以上Ｎ以下の整数）階層の階層別コマンドグループは、第ｎ階層の機能に対する階層別コマンドを含み、
第ｎ（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの少なくともいずれかは、第ｎ＋１階層の機能の実行開始を示す第ｎ＋１階層機能開始コマンドであり、
第ｎ＋１（ｎは、１以上Ｎ−１以下の整数）階層の階層別コマンドの１つは、第ｎ＋１階層の機能の実行終了を示す第ｎ＋１階層機能終了コマンドであり、
前記コマンド特定手順は、
前記アプリケーション開始コマンドで指示されたアプリケーションプログラムの実行中に、当該アプリケーションプログラムのアプリケーションコマンドを有効にし、前記システムコマンドと他のアプリケーションプログラムのアプリケーションコマンドを無効にし、
前記第ｎ＋１階層開始コマンドのいずれかを特定するとき、特定した第ｎ＋１階層機能の階層別コマンドを有効にし、前記第ｎ階層機能の階層別コマンドと他の第ｎ＋１階層機能の階層別コマンドを無効とし、
前記第ｎ＋１階層機能終了コマンドを特定するとき、特定した第ｎ＋１階層の階層別コマンドを無効にし、前記第ｎ階層機能の階層別コマンドを有効にする
プログラム。