以下、本発明の実施の形態を図面に基づき説明する。
(第1の実施形態)
まず、本発明の第1の実施形態について説明する。図1は、本実施形態におけるコンテンツ記録再生装置の構成を示した図である。
同図に示すように、本実施形態に係るコンテンツ記録再生装置100は、放送受信部101、圧縮復号化部102、映像フレームメモリ部103、表示部104、音響部105、操作入力部106、制御部107、外部記憶装置108で構成され、各部はバス112を介して接続されている。
放送受信部101はアンテナ及びチューナからなり、衛星放送波、地上波等の映像信号及び音声信号を受信し、所定チャンネルの放送波の選局を行う。当該放送波がデジタル放送におけるMPEG(Moving Picture Experts Group)−2等の圧縮符号化ストリームの場合には、当該ストリームは圧縮復号化部102へ送られ、復号化される。なお、コンテンツ記録再生装置100は、例えばいわゆる裏番組の録画を可能とするために、当該放送受信部101を複数有していてもよい。
映像フレームメモリ部103は、例えばRAM(Random Access Memory)であり、上記制御部107が後述する顔画像検出処理等をリアルタイムで行う場合に、上記映像信号により構成される番組の映像フレームを一時的に記憶し、または上記制御部107が上記番組を上記外部記憶装置108へ一旦記憶した後に上記顔画像検出処理等を行う場合に、当該外部記憶装置108から当該番組の映像フレームをロードする。
制御部107は、顔画像検出部113、顔画像識別部114、顔画像管理部115及び顔画像追跡部116を有する。
顔画像検出部113は、上記番組を構成する各映像フレームから、当該番組に登場している人物の顔画像をフレーム毎に検出して、当該フレームに、顔画像が検出されたことを示すタグ付けを行うとともに、当該顔画像の顔全体及び各部(目、鼻、口、耳、まゆげ等)の位置座標やサイズ、形、色等の情報をフレーム毎に関連付けて、登場人物データベース110へ登録する。顔画像検出の具体的手法としては、例えば一枚のフレーム中の肌色の領域とそれを囲むエッジから顔の領域を推定し、その領域内でより詳細に目や鼻の位置等を検出する。
顔画像識別部114は、上記顔画像検出部113が検出した顔画像を有するフレームから、上記登場人物データベースに登録されたデータを基に、顔画像データベース111に存在する顔画像との一致を検出することにより、データベースに登録された顔画像であるか否かを識別する。
顔画像管理部115は、上記顔画像データベース111を管理し、データの更新等を行う。なお、当該顔画像データベース111及び登場人物データベース110の詳細については後述する。
顔画像追跡部116は、順方向動き検出部117と逆方向動き検出部118からなり、上記顔画像検出部113において顔画像が検出されたフレームの順方向及び逆方向それぞれ所定枚数のフレームを上記映像フレームメモリ部103から呼び出して、当該各フレームから上記顔画像の動きを追跡して検出する。
すなわち、上記顔画像検出部113の検出処理においては、例えば顔の向きや色、隠れ度合い等により顔画像の検出漏れが生じることが考えられるため、顔画像検出部113が顔画像を検出したフレームを基準として、順方向動き検出部117が順方向、逆方向動き検出部118が逆方向の所定枚数のフレームからそれぞれ上記顔画像を検出することで、顔画像検出部113の処理を補完し、フレームの検出漏れを防ぐ機能を担う。上記所定枚数は、例えば5枚、10枚等であり、当該顔画像追跡部116自体の処理能力や上記映像フレームメモリ部103の容量等によって決定される。
外部記憶装置108は、例えばHDD(Hard Disk Drive)、DVD±RW等の光ディスク等であり、上記番組の映像・音声データ及び記録日時や番組名、ジャンル等の関連情報を記録する番組データベース109や、登場人物データベース110及び顔画像データベース111その他のデータやプログラムを格納する。また、記録した番組を再生する場合には、映像信号を表示部104へ、音声信号を音響部105へ出力する。
図2は上記顔画像データベース111の例を示した図である。同図に示すように、顔画像データベース111には、顔画像ID201、人物情報202、顔画像データ203、顔情報204及び嗜好情報履歴205が含まれる。これらの情報が、登録された人物毎に存在する。データベースへの登録方法としては、ユーザの入力によるものでもよいし、例えばインターネット等からダウンロードするものであっても構わない。また、上記顔画像管理部115の処理により、一度登録した情報を更新したり、未登録の情報を新たに登録したりすることも可能である。
顔画像IDは顔画像データベース111に登録されている各顔画像を識別するためのIDであり、顔画像認識処理の際には、当該顔画像IDにより登場人物データベース110との関連付けが行われる。
人物情報202としては、当該顔画像に対応する人物の名前、性別、生年月日、出身地等を登録する。顔画像データ203は、例えば正面を向いた画像を少なくとも1枚登録するが、識別精度の点からは、一人の人物に対してできるだけ多く登録した方が好ましい。
顔情報204は上記顔画像の特徴を示す情報であり、例えば顔全体のサイズ、向き等、左右の目、まゆ、左右の耳、鼻、口、髪等の顔の各部分の顔全体に対する座標位置、サイズ(縦横)、色、状態(目や口の開閉等)等が登録される。また嗜好情報履歴205は、登場人物に対するユーザの嗜好をコンテンツ記録再生装置100が学習して、嗜好度に応じてユーザに番組を提示する際に参照される情報であり、当該顔画像に対応する人物が登場する番組をユーザが視聴した日時、番組名等の番組情報及び嗜好評価ポイント等が履歴として登録される。当該嗜好評価ポイント及び学習処理の詳細については後述する。
図3は、登場人物データベース110の例を示した図である。同図に示すように、登場人物データベース110は、顔検出フレーム情報301、番組データ302及び顔画像ID303とから構成される。
顔検出フレーム情報301には、顔画像検出処理により顔画像を検出したフレームのフレーム番号と、当該フレームにおいて検出された顔画像の顔情報(顔全体、目、まゆ等の位置、サイズ等)が登録される。また、検出状況は顔の各部の検出の態様及びその範囲を表す。具体的には、顔の各部が上記顔画像検出部113により検出されたものである場合には「顔検出」、顔画像追跡部116により検出(動き検出)された場合には「動き検出」と登録し、また各部の全てが検出されている場合には「全部」、一部検出の場合には「一部」、検出されていない場合には「未検出」と登録する。同図においては、フレーム番号10のフレームにおいて顔画像検出部113により顔画像が検出され、当該顔画像のうち、左まゆが一部検出、両耳が未検出であり、それ以外の各部は全部検出である。
番組データ302には、顔画像を検出したフレームが属する番組の番組名、放送日時、番組のジャンル等、上記番組データベース109と関連付けた情報が登録される。
顔画像IDは、上記顔画像検出部113の検出処理の後に、顔画像識別部114が顔画像データベース111を参照して識別した人物の顔画像のIDを示している。すなわち、顔画像識別部114は、顔画像データベース111中、検出された顔画像と一致する顔画像に関するデータを上記顔画像IDにより登場人物データベースと関連付けて登録する。
次に、本実施形態におけるコンテンツ記録再生装置100の動作を説明する。
まず、上記顔画像検出部113の顔画像検出処理及び顔画像追跡部116による顔画像追跡処理について説明する。
図4は、一のフレームにおいて顔画像検出部113が顔画像を検出する様子の例を示した図である。同図に示すように、顔画像検出部113は、例えば一のフレーム401から肌色の領域とそれを囲むエッジから顔の輪郭を推定し、当該領域について更に画像解析して、目、鼻、口等の部分の位置関係に矛盾がないと判断した領域402を顔画像として切り出す。
図5(a)、(b)、(c)は、一の番組を構成する複数のフレームから顔画像を含むフレームを検出する様子を示した図である。各図において手前のフレームほど時間軸方向で先のフレームを示している。
同図(a)に示すように、顔画像検出部113による検出処理の際には、登場人物の顔の向きや隠れ度合い、背景色等の要因により、検出方法によっては顔画像の検出漏れが生じる場合が考えられる。同図の例においては、検出の対象人物の登場範囲に属する計8つのフレームのうち4枚に検出漏れが生じている。
そこで、同図(b)に示すように、顔画像追跡部116は、顔画像検出部113が一のフレームから顔画像を検出すると、当該一のフレーム501を基準として、そのフレームの前後それぞれ予め指定された枚数(s枚)のフレームから上記顔画像領域の動きを追跡検出する。上記フレーム501のフレーム番号がfである場合、当該フレーム501から時間軸に対して順方向にs枚先のフレーム(フレーム番号f+s)、逆方向にs枚前のフレーム(フレーム番号f−s)までの各フレームが追跡範囲となる。同図においてはsの値は3である。上述したように当該sの値は例えば顔画像追跡部116の処理能力及び上記映像フレームメモリ部103の容量に応じて決定される。
当該処理は、顔画像検出部113により顔画像が検出された全てのフレームについて、各フレームを基準とした順方向及び逆方向のs枚のフレームについて行われる。その結果、同図(c)に示すように、上記図5(a)において検出漏れが生じていたフレーム全てについて顔画像領域が追跡検出され、対象人物の登場範囲のフレームにおいて漏れなく顔画像が検出される。
上記処理を以下具体的に説明する。図6は、上記顔画像追跡処理のうち、逆方向動き検出部118の動作の流れを示すフローチャートである。
同図に示すように、まず逆方向動き検出部118は、顔画像検出部113の処理により、番組を構成するフレームのうちいずれかのフレームにおいて顔画像が検出された場合(ステップ601のYES)には、当該フレームのフレーム番号をfと設定し(以下当該フレームを単にフレームfと称する。)、一のフレームを基準として追跡を行ったフレームの枚数を示すカウンタ値iを0に初期化する(ステップ602)。
続いて逆方向動き検出部118は、予め定めた追跡を行う範囲を示す値sが上記iの値より大きいか否か(すなわちs枚分まで追跡したか)を確認し(ステップ603)、s>iである場合(ステップ603のYES)にはフレーム番号f−1のフレーム(以下当該フレームを単にフレームf−1と称する。)が登場人物データベース110に登録されているか否かを確認する(ステップ604)。
そして、逆方向動き検出部118は、映像フレームメモリ部103からフレームf及びフレームf−1を呼び出して、両フレーム間で顔画像の動きを検出する(ステップ605)。当該検出の結果、フレームf−1に上記フレームfで検出された顔画像と同一の顔画像が存在した場合(ステップ606のYES)、すなわち上記顔画像検出部113の処理では検出されなかった顔画像が検出された場合には、当該フレームf−1に関する情報を、顔画像データベース111と関連付けながら登場人物データベース110へ登録する(ステップ607)。
上記登録処理を終了すると、上記設定したiの値をi+1、fの値をf−1として、次のフレームについて以上の処理を繰り返し、カウンタ値iがsに達するまで追跡を行った場合(ステップ603)には終了する。また上記ステップ604においてフレームf−1が登場人物データベース110に登録されている場合(ステップ603のNO)、すなわちフレームf−1において既に顔画像が検出されている場合、及びステップ606においてフレームf−1に顔画像が無かった場合(ステップ606のNO)、すなわち検出漏れではなく実際に登場人物が存在しなかった場合にも終了する。
以上の処理は、顔画像検出部113により顔画像が検出されたフレーム全てについて行われる。また、順方向動き検出部117の処理も上記逆方向動き検出部118と同様に行うことができる。この場合、上記ステップ604〜608におけるフレームf−1をフレームf+1と置き換えればよい。なお、上記動き検出をリアルタイムに行う場合、すなわちテレビ番組の録画と同時に行う場合には、より多くの演算処理を行う必要があるため、処理量を減らすために例えばその時点で放送及び記録中のフレームと、その一つ前のフレーム間でのみ動き検出処理を行うようにしてもよい。
以上の処理により、上記顔画像検出部113により検出漏れが生じた場合でも、顔画像追跡部116による動き検出処理により当該検出漏れを極力防ぐことが可能となる。
次に、嗜好評価ポイントについて説明する。嗜好評価ポイントとは、フレームにおける顔画像の検出態様に応じて各フレームに付与され、当該フレームに対するユーザの嗜好度合いを評価するためのポイントである。フレーム毎に算出された嗜好評価ポイントは番組単位で集計され、集計されたポイントを基にユーザに対して番組が提示される。図7は、当該嗜好評価ポイントの付与例を示した図である。同図では登場人物Aの顔画像を検出した場合のポイント付与例を示している。
同図に示すように、嗜好評価ポイントは、映像フレーム番号毎に、当該フレームが顔検出による検出フレームか、顔画像識別による人物Aの検出フレームか、顔追跡による人物Aの検出フレームかによってそれぞれ付与される。
顔検出による検出フレームとは、上記顔画像検出部113により顔画像を検出したフレームであり、当該フレームには、顔画像を検出したときにタグ付けのみを行い(同図の○印)、この段階ではポイントは付与しない。
顔識別による人物A検出フレームとは、上記顔検出による検出フレームのうち、上記顔画像識別部114により当該顔画像が人物Aであると識別できたフレームであり、当該フレームにはタグ付けを行うとともに、フレーム毎に3ポイントを付与する。
顔追跡による人物A検出フレームとは、上記顔検出による検出フレームから、上記顔画像追跡部116による顔画像の動き追跡処理により顔画像を検出したフレームであり、当該フレームには、例えば1ポイントを付与する。上記顔識別による人物A検出フレームに比べてポイントが低いのは、顔画像識別処理に比べて顔画像追跡処理の方が検出精度が落ちることが考えられるからである。
人物A登場範囲とは、上記各検出処理により最終的に人物Aが登場していると判断されたフレームである。そして人物A登場累積ポイントとは、各フレームについて上記方法で付与したポイントをフレーム毎に累計した値を示したものである。同図においては、フレーム番号15のフレームまでに29ポイントが累計されている。
コンテンツ記録再生装置100は、当該ポイントを番組毎に最終フレームまで累計して各番組の累計ポイントを求めておき、当該累計ポイントを参照して例えばポイントの高い順にユーザに番組を提示する。ポイントの付与の仕方は上記態様に限られず、例えば顔識別と顔追跡でポイントに差を設けないようにしても構わない。当該評価ポイントのデータは例えば外部記憶装置108に保存され、番組データベース109、登場人物データベース110及び顔画像データベース111と関連付けられる。また同一の番組に、顔画像データベース111に登録された複数の登場人物が検出された場合には、当該登場人物毎に嗜好評価ポイントを加算及び累計する。
次に、本実施形態においてコンテンツ記録再生装置100が番組を記録し、記録した番組から登場人物データベース110を作成する際の動作を説明する。図8は当該処理の流れを示すフローチャートである。
同図に示すように、まず、コンテンツ記録再生装置100は、例えばEPG等の番組ジャンルデータを利用して、例えばスポーツ、ニュース、バラエティ等を指定して複数の番組の録画予約を行っておき、それぞれの番組の録画予約時刻になると、放送受信部101により番組を受信する(ステップ701)。そして受信した番組を上記外部記憶装置108の番組データベース109へ記録する(ステップ702)とともに、当該番組データベース109に、当該番組に関する情報を登録する。
次に、顔画像検出部113は、記録した番組の映像フレームを外部記憶装置108から映像フレームメモリ部103へ呼び出し、上述した顔画像検出処理を行う(ステップ703)。顔画像検出処理により各フレームにおいて顔画像を検出した場合には、登場人物データベース110へフレーム毎の情報(フレーム番号、顔の各部の位置、サイズ、検出状況等)を登録する(ステップ704)。また、当該検出処理とともに、顔画像追跡部116は、顔画像検出部113が顔画像を検出した各フレームについて上述した顔画像追跡処理を行い、顔画像の動きを検出した場合には、登場人物データベース110に検出した情報を登録する。
そして、顔画像識別部114は、上記検出された各フレームについて、顔画像データベース111を参照して顔画像識別処理を行う(ステップ705)。当該処理の結果、検出された顔画像が顔画像データベース111へ登録された人物の顔画像であった場合(ステップ706のYES)には、登場人物データベース110へ顔画像IDを登録して、登場人物データベース110と顔画像データベース111との関連付け処理を行う(ステップ708)。なお、検出された顔画像が上記顔画像データベース111に登録されていない人物の顔画像であった場合(ステップ706のNO)には、顔画像管理部115は、当該人物に関する情報を顔画像データベース111へ新たに登録する(ステップ707)。
続いて、フレーム毎に上記処理を繰り返し、上述した嗜好評価ポイントの更新を行う(ステップ709)。以上の処理を、記録した番組全てについて行う。なお、上記ステップ703における顔検出処理は、番組の記録とほぼ同時(リアルタイム)に行っても構わない。
そして、コンテンツ記録再生装置100は、ユーザが番組の視聴を望む場合に、上記累計した嗜好評価ポイントに応じてユーザに番組を提示する(ステップ710)。
図9は、番組をユーザに提示する場合の表示部104の例を示した図である。同図に示すように、コンテンツ記録再生装置100は、録画した番組のうち、ある特定の人物が登場する番組の視聴をユーザが所望する場合には、上記登場人物データベース110を参照して、例えば当該登場人物の出演シーンを番組名、登場人物の名前等の関連情報とともに上記嗜好評価ポイント順(出演時間が長い順)に分割表示する。ユーザは例えば操作入力部106を介して番組を選択し、再生する。この場合、上記登場人物の出演シーンを早送り再生するようにしてもよい。
以上の動作により、記録された番組に登場する人物に関する情報が上記嗜好評価ポイントとともに登録され、ユーザの嗜好により適合した番組を提示することができる。
図10は、コンテンツ記録再生装置100が記録した2つの番組において、上記処理により検出された登場人物の登場範囲の例を示した図である。同図に示すように、番組1と番組2においては同一の登場人物Aが登場している。番組1における登場人物Aの登場範囲801、802、803及び804の合計と番組2における登場人物Aの登場範囲805とを比較すると、番組1の方が登場範囲が長いため、上記嗜好評価ポイントを累積した場合には、登場人物Aに対する嗜好評価ポイントは番組1の方が高くなる。
しかしながら、番組によっては、同一シーンを繰り返し使用しているものもあるため、上記嗜好評価ポイントが高いからといって、その番組に登場人物Aに関する情報が実質的に多く含まれているとは一概に言えない場合もある。特に、ニュース番組等においては同一番組内または複数番組間で同一の映像が使用されることが多々ある。
図11は、番組1及び番組2における登場人物Aの登場範囲について同一シーンの検出を行った例を示した図である。同図に示すように、番組1においてシーン801、802及び804は同一シーンであり、またシーン803は同一シーンであるシーン808と809で構成され、更にシーン808及び809には上記シーン801、802、804と同一シーン806及び807が使用されている。
また、番組2において、シーン805は上記シーン808及び809と同一シーンであるシーン810を含んでいる。したがって、登場人物Aの登場範囲としては番組1の方が長いものの、登場人物Aに関する実質的な情報量としては番組2の方が多いことになる。よって、そのような場合には、上記嗜好評価ポイントをそのまま使用してユーザに番組を提示しても、ユーザの嗜好を真に反映していないことになる。
そこで、このような場合には、コンテンツ記録再生装置100は、重複シーンに関する嗜好評価ポイントのうち、一のシーンに対する嗜好評価ポイントのみを用いて、その他の重複するシーンに対する嗜好評価ポイントを番組の評価対象から除外するようにすればよい。これにより、ユーザの嗜好により実質的に適合した番組の提示が可能となる。
また、コンテンツ記録再生装置100は、ユーザが実際に視聴した番組の視聴履歴を蓄積することで、ユーザの嗜好を学習していくこともできる。図12は、当該学習処理の動作を示すフローチャートである。
同図に示すように、コンテンツ記録再生装置100は、番組の再生が終了すると(ステップ901)、番組データベース109と登場人物データベース110との関連付けにより、当該再生した番組の登場人物を検索する(ステップ902)。そして、登場人物データベース110と顔画像データベース111との関連付けにより、当該登場人物に対応する顔画像データベース111中の嗜好情報履歴を更新する(ステップ903)。具体的には、上記ユーザが視聴した番組の視聴日時、番組名等を追加し、上記登場人物に対する番組の嗜好履歴ポイントを加算する。
そして、視聴した番組に登場する全ての登場人物について嗜好履歴情報を更新するまで上記処理を繰り返し(ステップ904のNO)、全て更新したら終了する(ステップ904のYES)。
コンテンツ記録再生装置は、ポイントが高いほどユーザの嗜好度が高い人物であると判断して、次回ユーザに番組を提示する場合には、当該ポイントが高い人物が登場している番組を優先して提示する。また、上記視聴日時の履歴情報により、例えば新たな番組の記録日時と視聴日時の間隔が短い人物ほどユーザがその時点で興味のある人物であると判断して当該人物が登場する番組を優先して提示したり、逆に上記間隔が長いほどユーザの興味が薄れている人物であると判断して提示の優先度を低くしたりするようなこともできる。すなわち、上記嗜好情報履歴を利用することで、ユーザの嗜好傾向の時間的な変化にも柔軟に対応することが可能である。
以上説明したように、本実施形態によれば、ユーザの嗜好を反映したコンテンツを的確に選択し、ユーザに提示することができ、ユーザが記録された全番組を視聴して自身の嗜好に合った番組があるか否かを確認するような手間を省くことができる。またユーザの嗜好を学習することで、より嗜好に合った番組を選択して、かつユーザの嗜好傾向の変化にも追従しながらユーザに番組を提示することができる。更に、番組提示時には実際に映像を分割表示させてユーザに選択させることで、ユーザの利便性が向上し、複雑な操作をすることなくより直感的にコンテンツを選択することができる。
なお、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。以下、本発明の第2の実施形態について説明する。
(第2の実施形態)
図13は、本発明の第2の実施形態におけるコンテンツ記録再生装置50の構成を示した図である。なお、同図及び以下に説明する図において、上述の第1実施形態におけるコンテンツ記録再生装置100と同一の構成となる部分については同一の符号を付し、説明を省略または簡略化する。
本実施形態におけるコンテンツ記録再生装置50は、上述の第1実施形態における構成に加えて、音声データメモリ部55を有し、また制御部107に音声検出部51、音声識別部52及び音声管理部53、外部記憶装置108に音声データベース54を有する。
音声データメモリ部59は、映像フレームメモリ部103と同様に例えばRAM(Random Access Memory)で構成され、上記制御部107が、後述する音声検出処理等をリアルタイムで行う場合に、上記番組の音声データを一時的に記憶し、または上記制御部107が上記番組を上記外部記憶装置108へ一旦記憶した後に上記音声検出処理等を行う場合に、当該外部記憶装置108から当該番組の音声データをロードする。
音声検出部51は、上記番組の音声データから、当該番組に登場している人物の音声を検出して、当該音声を検出した箇所に相当するフレームに、人物の音声が検出されたことを示すタグ付けを行うとともに、当該音声の特徴を示すデータ(例えば声紋を示す周波数、波形データ)をフレーム毎に関連付けて登場人物データベース110へ登録する。
音声識別部52は、上記音声検出部51が検出した音声データから、上記登場人物データベース110に登録されたデータを基に、音声データベース54に存在する音声データとの一致を検出することにより、上記検出された音声の発声元である人物を識別する。また音声管理部53は、上記音声データベース54を管理し、音声データの更新等を行う。
図14は、音声データベース54の例を示した図である。同図に示すように、音声データベースには、声紋ID56、人物情報57、声紋データ58及び嗜好情報履歴59が含まれる。これらの情報が、登録された人物毎に存在する。
声紋ID56は音声データベース54に登録されている声紋を識別するためのIDであり、上述の顔画像IDと同様、音声認識処理の際には、当該声紋IDにより登場人物データベース110との関連付けが行われる。
人物情報57としては、上述の第1実施形態における顔画像データベース111と同様、当該声紋に対応する人物の名前、性別、生年月日、出身地等を登録する。声紋データ58は、口腔や鼻腔の構造、声帯の大きさの違い等によって生じる声の特徴を時間、周波数、強度等によりグラフで表したデータである。
嗜好情報履歴59は、上述の顔画像データベース111における嗜好情報履歴205と同様、上記声紋データ58で識別された人物が登場している番組をユーザが視聴した日時及びその番組情報等の履歴情報と、当該番組における人物の嗜好評価ポイントが登録される。
図15は、本実施形態における登場人物データベース110の例を示した図である。同図に示すように、本実施形態においては、上述の第1実施形態における場合(図3参照)と比較して、音声検出情報60及び上記声紋ID56が追加されている。
音声検出情報60は、具体的には音声データから検出された声紋データ(波形または周波数等のデータ)である。音声検出部51は、音声データから人物の声紋を検出した段階で、例えば当該検出箇所のタイムスタンプ及び映像データのタイムスタンプを取得し、声紋を検出した箇所のタイムスタンプと一致する映像フレームのフレーム番号とを関連付けることにより登場人物データベース110に登録する。
声紋IDは、上記音声検出部51の検出処理の後に、音声識別部52が上記音声データベース54を参照して識別した人物の声紋のIDを示している。すなわち、音声識別部52は、音声データベース54中、上記検出された声紋と一致する声紋に関するデータを上記声紋IDにより登場人物データベース110と関連付けて登録する。
登場人物データベース110に顔画像IDと声紋IDの両方が登録されているフレームには、当該登場人物の顔の映像と音声の両方が含まれていることになる。なお、顔画像と声紋とが同一人物のものである場合には例えば同一のIDが付与されるが、顔画像と声紋とが関連付けられて同一人物であることが判断できれば必ずしも同一のIDでなくともよい。
図16は、本実施形態における嗜好評価ポイントの付与例を示した図である。同図においては、上述の第1実施形態の場合(図7参照)と比較して、音声検出による検出範囲及び音声識別による人物A検出範囲が嗜好評価ポイントの付与対象として追加されている。
音声検出による検出範囲とは、上記音声データのうち上記音声検出部51により声紋が検出された箇所に対応するフレームの範囲である。声紋の検出箇所とフレーム番号との対応付けは、上述したように映像と音声の各タイムスタンプ情報を参照することにより可能である。当該フレームには、声紋が検出されたときにタグ付けのみを行い(同図の○印)、この段階ではポイントは付与しない。
音声識別による人物A検出範囲とは、上記音声検出による検出フレームのうち、上記音声識別部52により人物Aの声紋と合致する音声に対応するフレームであり、当該フレームにはタグ付けを行うとともに、フレーム毎に例えば2ポイントを付与する。
人物A登場範囲には、顔検出処理及び音声検出処理により検出されたフレームのうち、顔識別処理、顔追跡処理及び上記音声識別処理によって、人物Aの顔画像が存在し、または人物Aの音声に対応することが検出されたフレームである。そして人物A登場累計ポイントは、各フレームについて付与されたポイントをフレーム毎に累計した値を示したものであり、同図においてはフレーム番号15のフレームまでに44ポイントが累計されている。一の番組を構成するフレームについてポイントの付与が終了すると、各フレームのポイントが累計されて、一の番組のポイントとして記憶される。
ポイントの付与の仕方は上記態様に限られず、例えばユーザが人物の映像重視か音声重視かによって顔識別及び顔追跡によるポイントと音声識別によるポイントの割り当て比率を調整するようにしても構わない。
図17は、ユーザの嗜好に応じた嗜好評価ポイントの割り当て比率の変更例について示した図である。
同図に示すように、例えばスポーツ番組においてユーザが人物A(選手)のプレイしている様子を視聴することを望む場合には、顔識別及び顔追跡による人物A検出フレームにそれぞれ5ポイントを付与し、音声識別による人物A検出範囲のフレームには1ポイントも付与しない。また、ユーザが人物Aの音声インタビューの様子の視聴を望む場合には、例えば顔識別及び顔追跡による人物A検出フレームにそれぞれ1ポイントを付与し、音声識別による人物A検出範囲のフレームには8ポイントを付与する。更に、ユーザが人物Aのスタジオ出演の様子の視聴を望む場合には、顔識別、顔追跡、音声識別それぞれの検出フレームに3ポイントずつ付与する。
このように、顔識別、顔追跡及び音声識別による各検出フレームへ付与する嗜好評価ポイントに差を設けることにより、同一の人物であっても、顔のみ、声のみ、顔と声の両方等、その登場態様によってユーザへ提示の仕方を変更することができ、ユーザのより詳細な嗜好パターンに応じた番組の提示が可能となる。当該各フレームへのポイントの付与方法は、例えば番組記録予約時にユーザに選択させるようにしてもよいし、また設定後もユーザが操作入力部106等を操作することにより自由にカスタマイズできるようにしても構わない。
次に、本実施形態におけるコンテンツ記録再生装置50の動作について説明する。図18は、本実施形態においてユーザに番組を提示するまでの動作の流れを示したフローチャートである。
同図に示すように、コンテンツ記録再生装置50は、上述の第1実施形態における動作(図8参照)と同様に放送受信部により番組を受信して、外部記憶装置108へ記録する(ステップ61及び62)。そして、記録した映像フレームから、顔画像検出部113により顔画像を検出するとともに、音声データを音声データメモリ部59へ呼び出して、音声検出部51により音声を検出する(ステップ63)。
続いて、上記顔検出処理により各フレームにおいて顔画像を検出した場合及び音声検出処理により音声データから人物の音声を検出した場合には、登場人物データベース110へ検出した音声データ(声紋データ)を登録する(ステップ64)。
次に、上記顔画像識別部114により上記検出されたフレームについて顔画像データベース111を参照して顔画像識別処理を行うとともに、音声識別部52により音声データベース54を参照して声紋の照合による音声識別処理を行う(ステップ65)。当該顔画像識別処理及び音声識別処理により検出された顔画像及び音声が顔画像データベース111及び音声データベース54に登録された人物のものであった場合(ステップ66のYES)には、登場人物データベース110へ顔画像ID及び声紋IDを登録して登場人物データベース110と顔画像データベース111及び音声データベース54との関連付け処理を行う(ステップ68)。検出された顔画像または音声が、顔画像データベース111または音声データベース54に登録されていない人物のものであった場合(ステップ66のNO)には、顔画像管理部115及び音声管理部53により両データベースへの新たな登録処理が行われる(ステップ67)。
その後は、上記図8の場合と同様、フレーム毎に上記処理を繰り返し、嗜好評価ポイントの更新を行い、番組毎に累積した嗜好評価ポイントに応じてユーザに番組を提示する(ステップ70)。この際、上記図9で示したように、表示部104に各番組に関する情報が映像とともに嗜好評価ポイント順に分割表示されるが、その際、映像だけでなく、識別した登場人物の音声も音響部105を介して出力するようにしてもよい。
以上の動作により、本実施形態においては、登場人物の顔画像に加えて音声も認識することにより、番組中のある登場人物の登場範囲をより正確に把握して、それを基にユーザの嗜好に合った番組を提示することができる。また、顔画像と音声による嗜好評価ポイントの割り当てを変更することによって、ある登場人物が登場している番組を多面的に捉えることが可能となり、それによりユーザの嗜好パターンに応じて様々な観点から番組を提示することができる。
なお本実施形態においては、顔画像と音声の両方を人物の識別に用いているが、音声のみを用いて人物を識別するようにしても構わない。
また、顔画像から更に唇の動き(口唇動)を検出して、当該口唇動により顔画像と音声との関連付けを行うようにしても構わない。この場合は、口唇動が検出されたフレームと音声とを関連付けることにより、検出されたフレームにおいて人物が登場して、かつ喋っていることを判別することが可能である。また、口唇動が検出されたフレームについても別途嗜好評価ポイントを付与して、ユーザの嗜好パターンに応じた嗜好評価ポイントの割り当てを行うようにしてもよい。更に、音声の検出処理においてノイズの影響により検出漏れまたは誤検出が懸念される場合に、音声認識の精度向上手段及び補助手段として上記口唇動検出を行うようにしても構わない。
口唇動の検出方法としては、例えば口唇動を表す画像とそれに対応する音声を記憶したデータベースを予め作成しておき、顔画像からエッジや輝度等の検出により唇領域を切り出して、データベース中の唇画像と照合することにより対応する音声を認識する。
また、上記第1及び第2の実施形態においては番組に登場する人物を検出及び識別していたが、検出対象は人物に限られず、例えば動物やキャラクター、ロゴ等であってもよい。これによりユーザの多様な嗜好に対応することができる。
また、上記第1及び第2の実施形態において、顔画像追跡処理を行う際には、順方向及び逆方向に顔画像を追跡するため、特にデジタル放送の圧縮符号化ストリームを扱う場合には、順方向動き検出部117と逆方向動き検出部118がそれぞれフレームを圧縮復号化部102により復号化して映像フレームメモリ部103に読み込まなくてはならず、映像フレームメモリ部103には大容量が必要となる。
そこで、その必要容量を削減するために、例えば逆方向動き検出部118が追跡処理を行う際には、全てのストリームを圧縮復号化部102で復号化するのではなく、ストレージメディア(図示せず)を用意しておき、ストリームを一旦そこに蓄積して、逆方向動き検出部118のための復号化が必要となったときにのみストレージメディアからストリームを呼び出して復号化するようにしても構わない。
また、上記第1及び第2の実施形態においては、コンテンツとしてテレビ番組を提示する場合を説明したが、コンテンツとしては、テレビ番組以外にも、インターネット放送やラジオ放送の番組、音楽、静止画やグラフィックス等、様々なものを適用することができる。
更に、本発明を以下の実施形態において説明するネットワークシステムに適用することも可能である。
(第3の実施形態)
まず、本実施形態において前提となるネットワークシステムについて説明する。図19は、当該ネットワークシステムの一例を示し、ネットワーク9を介して複数の情報処理装置1、2、3、4が接続されたものである。情報処理装置1、2、3、4は、例えばオーディオ機器や上述の実施形態におけるコンテンツ記録再生装置等である。
情報処理装置1について示すと、情報処理装置1は、コンピュータ機能部として情報処理コントローラ11を備える。情報処理コントローラ11は、メインプロセッサ21−1、サブプロセッサ23−1,23−2,23−3、DMAC(ダイレクトメモリアクセスコントローラ)25−1及びDC(ディスクコントローラ)27−1を有する。
メインプロセッサ21−1は、サブプロセッサ23−1,23−2,23−3によるプログラム実行(データ処理)のスケジュール管理と、情報処理コントローラ11(情報処理装置1)の全般的な管理とを行う。ただし、メインプロセッサ21−1内で管理のためのプログラム以外のプログラムが動作するように構成することもできる。その場合には、メインプロセッサ21−1はサブプロセッサとしても機能することになる。メインプロセッサ21−1は、LS(ローカルストレージ)22−1を有する。
サブプロセッサは、1つでもよいが、望ましくは複数とする。本例は、複数の場合である。各サブプロセッサ23−1,23−2,23−3は、メインプロセッサ21−1の制御によって並列的かつ独立にプログラムを実行し、データを処理する。更に、場合によってメインプロセッサ21−1内のプログラムがサブプロセッサ23−1,23−2,23−3内のプログラムと連携して動作するように構成することもできる。後述する機能プログラムもメインプロセッサ21−1内で動作するプログラムである。各サブプロセッサ23−1,23−2,23−3も、LS(ローカルストレージ)24−1,24−2,24−3を有する。
DMAC25−1は、情報処理コントローラ11に接続されたDRAM(ダイナミックRAM)などからなるメインメモリ26−1に格納されているプログラム及びデータにアクセスするものであり、DC27−1は、情報処理コントローラ11に接続された外部記録部28−1,28−2にアクセスするものである。
外部記録部28−1,28−2は、固定ディスク(ハードディスク)でも、リムーバブルディスクでもよく、また、MO,CD±RW,DVD±RWなどの光ディスク、メモリディスク、SRAM(スタティックRAM)、ROMなど、各種のものを用いることができる。したがって、DC27−1は、ディスクコントローラと称するが、外部記録部コントローラである。図19の例のように、情報処理コントローラ11に対して外部記録部28を複数接続できるように、情報処理コントローラ11を構成することができる。
メインプロセッサ21−1、各サブプロセッサ23−1,23−2,23−3、DMAC25−1及びDC27−1は、バス29−1によって接続される。
情報処理コントローラ11には、当該の情報処理コントローラ11を備える情報処理装置1を、ネットワーク全体を通して一意的に識別できる識別子が、情報処理装置IDとして割り当てられる。
メインプロセッサ21−1及び各サブプロセッサ23−1,23−2,23−3に対しても同様に、それぞれを特定できる識別子が、メインプロセッサID及びサブプロセッサIDとして割り当てられる。
情報処理コントローラ11は、ワンチップIC(集積回路)として構成することが望ましい。他の情報処理装置2、3、4も、上記と同様に構成される。ここで、図19において親番号が同一であるユニットは枝番号が異なっていても、特に断りがない限り同じ働きをするものとする。また、以下の説明において枝番号が省略されている場合には、枝番号の違いにいる差異を生じないものとする。
上述したように、1つの情報処理コントローラ内の各サブプロセッサ23は、独立にプログラムを実行し、データを処理するが、異なるサブプロセッサがメインメモリ26内の同一領域に対して同時に読み出しまたは書き込みを行った場合には、データの不整合を生じ得る。そこで、サブプロセッサ23からメインメモリ26へのアクセスは、以下のような手順によって行う。
図20(A)に示すように、メインメモリ26は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、F/Eビット、サブプロセッサID及びLSアドレス(ローカルストレージアドレス)を含むものとされる。また、各メモリロケーションには、後述のアクセスキーも割り振られる。F/Eビットは、以下のように定義される。
F/Eビット=0は、サブプロセッサ23によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、読み出し不可であることを示す。また、F/Eビット=0は、当該メモリロケーションにデータ書き込み可能であることを示し、書き込み後に1に設定される。
F/Eビット=1は、当該メモリロケーションのデータがサブプロセッサ23によって読み出されておらず、未処理の最新データであることを示す。当該メモリロケーションのデータは読み出し可能であり、サブプロセッサ23によって読み出された後に0に設定される。また、F/Eビット=1は、当該メモリロケーションがデータ書き込み不可であることを示す。
更に、上記F/Eビット=0(読み出し不可/書き込み可)の状態において、当該メモリロケーションについて読み出し予約を設定することは可能である。F/Eビット=0のメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ23は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報として当該サブプロセッサ23のサブプロセッサID及びLSアドレスを書き込む。
その後、データ書き込み側のサブプロセッサ23によって、読み出し予約されたメモリロケーションにデータが書き込まれ、F/Eビット=1(読み出し可/書き込み不可)に設定されたとき、予め読み出し予約情報として追加セグメントに書き込まれたサブプロセッサID及びLSアドレスに読み出される。
複数のサブプロセッサによってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出し/書き込みを制御することによって、前段階の処理を行うサブプロセッサ23が、処理済みのデータをメインメモリ26上の所定のアドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ23が前処理後のデータを読み出すことが可能となる。
図20(B)に示すように、各サブプロセッサ23内のLS24も、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含むものとされる。
サブプロセッサ23がメインメモリ26内のデータを自身のLS24のメモリロケーションに読み出すときには、対応するビジービットを1に設定して予約する。ビジービットが1であるメモリロケーションには、他のデータは格納することができない。LS24のメモリロケーションに読み出し後、ビジービットは0になり、任意の目的に使用できるようになる。
図20(A)に示すように、さらに、各情報処理コントローラと接続されたメインメモリ26には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ26内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ23に割り当てられ、そのサブプロセッサが排他的に使用することができる。すなわち、各々のサブプロセッサ23は、自身に割り当てられたサンドボックスを使用できるが、この領域を超えてデータのアクセスを行うことはできない。メインメモリ26は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
更に、メインメモリ26の排他的な制御を実現するために、図20(C)に示すようなキー管理テーブルが用いられる。キー管理テーブルは、情報処理コントローラ内のSRAM等の比較的高速のメモリに格納され、DMAC25と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサID、サブプロセッサキー及びキーマスクが含まれる。
サブプロセッサ23がメインメモリ26を使用する際のプロセスは、以下の通りである。まず、サブプロセッサ23はDMAC25に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、自身のサブプロセッサIDと、使用要求先であるメインメモリ26のアドレスが含まれる。
DMAC25は、このコマンドを実行する前に、キー管理テーブルを参照して、使用要求元のサブプロセッサのサブプロセッサキーを調べる。次に、DMAC25は、調べた使用要求元のサブプロセッサキーと、使用要求先であるメインメモリ26内の図20(A)に示したメモリロケーションに割り振られたアクセスキーとを比較して、2つのキーが一致した場合にのみ、上記のコマンドを実行する。
図20(C)に示したキー管理テーブル上のキーマスクは、その任意のビットが1になることによって、そのキーマスクに関連付けられたサブプロセッサキーの対応するビットが0または1になることができる。例えば、サブプロセッサキーが1010であるとする。通常、このサブプロセッサキーによって1010のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが0001に設定されている場合には、キーマスクのビットが1に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ、このサブプロセッサキー1010によってアクセスキーが1010または1011のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
以上のようにして、メインメモリ26のサンドボックスの排他性が実現される。すなわち、1つの情報処理コントローラ内の複数のサブプロセッサによってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサのみが、メインメモリ26の所定アドレスにアクセスできるようになり、データを保護することができる。
例えば、以下のように使用することが考えられる。まず、情報処理装置の起動直後においては、キーマスクの値は全てゼロである。メインプロセッサ内のプログラムが実行され、サブプロセッサ内のプログラムと連携動作するものとする。第1のサブプロセッサにより出力された処理結果データを一旦メインメモリに格納し、第2のサブプロセッサに入力したいときには、該当するメインメモリ領域は、当然どちらのサブプロセッサからもアクセス可能である必要がある。そのような場合に、メインプロセッサ内のプログラムは、キーマスクの値を適切に変更し、複数のサブプロセッサからアクセスできるメインメモリ領域を設けることにより、サブプロセッサによる多段階的な処理を可能にする。
より具体的には、他の情報処理装置からのデータ→第1のサブプロセッサによる処理→第1のメインメモリ領域→第2のサブプロセッサによる処理→第2のメインメモリ領域、という手順で多段階処理が行われるときには、
第1のサブプロセッサのサブプロセッサキー:0100、
第1のメインメモリ領域のアクセスキー :0100、
第2のサブプロセッサのサブプロセッサキー:0101、
第2のメインメモリ領域のアクセスキー :0101
というような設定のままだと、第2のサブプロセッサは第1のメインメモリ領域にアクセスすることができない。そこで、第2のサブプロセッサのキーマスクを0001にすることにより、第2のサブプロセッサによる第1のメインメモリ領域へのアクセスを可能にすることができる。
図19のネットワークシステムでは、情報処理装置1、2、3、4間での分散処理のために、情報処理装置1、2、3、4間でソフトウェアセルが伝送される。すなわち、ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ21は、コマンド、プログラム及びデータを含むソフトウェアセルを生成し、ネットワーク9を介して他の情報処理装置に送信することによって、処理を分散することができる。
図21に、ソフトウェアセルの構成の一例を示す。この例のソフトウェアセルは、全体として、送信元ID、送信先ID、応答先ID、セルインターフェース、DMAコマンド、プログラム及びデータによって構成される。
送信元IDには、ソフトウェアセルの送信元である情報処理装置のネットワークアドレス及び当該情報処理装置の情報処理装置ID、更に、その情報処理装置内の情報処理コントローラが備えるメインプロセッサ21及び各サブプロセッサ23の識別子(メインプロセッサID及びサブプロセッサID)が含まれる。
送信先ID及び応答先IDには、それぞれ、ソフトウェアセルの送信先である情報処理装置、及びソフトウェアセルの実行結果の応答先である情報処理装置についての、同じ情報が含まれる。
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルID、必要なサブプロセッサの情報、サンドボックスサイズ及び前回のソフトウェアセルIDから構成される。
グローバルIDは、ネットワーク全体を通して当該ソフトウェアセルを一意的に識別できるものであり、送信元ID及びソフトウェアセルの作成または送信の日時(日付及び時刻)に基づいて作成される。
必要なサブプロセッサの情報は、当該ソフトウェアセルの実行に必要なサブプロセッサの数を設定する。サンドボックスサイズは、当該ソフトウェアセルの実行に必要なメインメモリ26内及びサブプロセッサ23のLS24内のメモリ量を設定する。前回のソフトウェアセルIDは、ストリーミングデータなどのシーケンシャルな実行を要求する1グループのソフトウェアセル内の、前回のソフトウェアセルの識別子である。
ソフトウェアセルの実行セクションは、DMAコマンド、プログラム及びデータから構成される。DMAコマンドには、プログラムの起動に必要な一連のDMAコマンドが含まれ、プログラムには、サブプロセッサ23によって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
更に、DMAコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、及びステータス返信コマンドが含まれる。
ロードコマンドは、メインメモリ26内の情報をサブプロセッサ23内のLS24にロードするコマンドであり、ロードコマンド自体のほかに、メインメモリアドレス、サブプロセッサID及びLSアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリ26内の所定領域のアドレスを示す。サブプロセッサID及びLSアドレスは、情報のロード先であるサブプロセッサ23の識別子及びLS24のアドレスを示す。
キックコマンドは、プログラムの実行を開始するコマンドであり、キックコマンド自体のほかに、サブプロセッサID及びプログラムカウンタを含む。サブプロセッサIDは、キック対象のサブプロセッサ23を識別し、プログラムカウンタは、プログラム実行用プログラムカウンタのためのアドレスを与える。
機能プログラム実行コマンドは、後述のように、ある情報処理装置が他の情報処理装置に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した情報処理装置内の情報処理コントローラは、後述の機能プログラムIDによって、起動すべき機能プログラムを識別する。
ステータス要求コマンドは、送信先IDで示される情報処理装置の現在の動作状態(状況)に関する装置情報を、応答先IDで示される情報処理装置宛に送信要求するコマンドである。機能プログラムについては後述するが、図24に示す情報処理コントローラのメインメモリ26が記憶するソフトウェアの構成図において機能プログラムにカテゴライズされるプログラムである。機能プログラムは、メインメモリ26にロードされ、メインプロセッサ21により実行される。
ステータス返信コマンドは、上記のステータス要求コマンドを受信した情報処理装置が、自身の装置情報を当該ステータス要求コマンドに含まれる応答先IDで示される情報処理装置に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
図22に、DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す。
情報処理装置IDは、情報処理コントローラを備える情報処理装置を識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置のIDを示す。情報処理装置IDは、電源投入時、その情報処理装置内の情報処理コントローラに含まれるメインプロセッサ21によって、電源投入時の日時、情報処理装置のネットワークアドレス及び情報処理装置内の情報処理コントローラに含まれるサブプロセッサ23の数などに基づいて生成される。
情報処理装置種別IDには、当該情報処理装置の特徴を表す値が含まれる。情報処理装置の特徴とは、例えば、オーディオプレーヤや、上述のコンテンツ記録再生装置等である。また、情報処理装置種別IDは、音響再生、動画記録再生等の機能を表すものであってもよい。情報処理装置の特徴や機能を表す値は予め決定されているものとし、情報処理装置種別IDを読み出すことにより、当該情報処理装置の特徴や機能を把握することが可能である。
MS(マスター/スレーブ)ステータスは、後述のように情報処理装置がマスター装置またはスレーブ装置のいずれで動作しているかを表すもので、これが0に設定されている場合にはマスター装置として動作していることを示し、1に設定されている場合にはスレーブ装置として動作していることを示す。
メインプロセッサ動作周波数は、情報処理コントローラ内のメインプロセッサ21の動作周波数を表す。メインプロセッサ使用率は、メインプロセッサ21で現在動作している全てのプログラムについての、メインプロセッサ21での使用率を表す。メインプロセッサ使用率は、対象メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値で、例えばプロセッサ処理能力評価のための単位であるMIPSを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。後述のサブプロセッサ使用率についても同様である。
サブプロセッサ数は、当該の情報処理コントローラが備えるサブプロセッサ23の数を表す。サブプロセッサIDは、当該の情報処理コントローラ内の各サブプロセッサ23を識別するための識別子である。
サブプロセッサステータスは、各サブプロセッサ23の状態を表すものであり、unused,reserved,busyなどの状態がある。unusedは、当該のサブプロセッサが現在使用されてなく、使用の予約もされていないことを示す。reservedは、現在は使用されていないが、予約されている状態を示す。busyは、現在使用中であることを示す。
サブプロセッサ使用率は、当該のサブプロセッサで現在実行している、または当該のサブプロセッサに実行が予約されているプログラムについての、当該サブプロセッサでの使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスがbusyである場合には、現在の使用率を示し、サブプロセッサステータスがreservedである場合には、後に使用される予定の推定使用率を示す。
サブプロセッサID、サブプロセッサステータス及びサブプロセッサ使用率は、1つのサブプロセッサ23に対して一組設定され、1つの情報処理コントローラ内のサブプロセッサ23に対応する組数が設定される。
メインメモリ総容量及びメインメモリ使用量は、それぞれ、当該の情報処理コントローラに接続されているメインメモリ26の総容量及び現在使用中の容量を表す。
外部記録部数は、当該の情報処理コントローラに接続されている外部記録部28の数を表す。外部記録部IDは、当該の情報処理コントローラに接続されている外部記録部28を一意的に識別する情報である。外部記録部種別IDは、当該の外部記録部の種類(例えば、ハードディスク、CD±RW、DVD±RW、メモリディスク、SRAM、ROMなど)を表す。
外部記録部総容量及び外部記録部使用量は、それぞれ、外部記録部IDによって識別される外部記録部28の総容量及び現在使用中の容量を表す。
外部記録部ID、外部記録部種別ID、外部記録部総容量及び外部記録部使用量は、1つの外部記録部28に対して一組設定されるものであり、当該の情報処理コントローラに接続されている外部記録部28の数の組数だけ設定される。すなわち、1つの情報処理コントローラに複数の外部記録部が接続されている場合、各々の外部記録部には異なる外部記録部IDが割り当てられ、外部記録部種別ID、外部記録部総容量及び外部記録部使用量も別々に管理される。
ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ21は、以上のような構成のソフトウェアセルを生成し、ネットワーク9を介して他の情報処理装置及び当該装置内の情報処理コントローラに送信する。送信元の情報処理装置、送信先の情報処理装置、応答先の情報処理装置、及び各装置内の情報処理コントローラは、それぞれ、上記の送信元ID、送信先ID及び応答先IDによって識別される。
ソフトウェアセルを受信した情報処理装置内の情報処理コントローラに含まれるメインプロセッサ21は、そのソフトウェアセルをメインメモリ26に格納する。さらに、送信先のメインプロセッサ21は、ソフトウェアセルを読み出し、それに含まれるDMAコマンドを処理する。具体的には、送信先のメインプロセッサ21は、まず、ロードコマンドを実行する。これによって、ロードコマンドで指示されたメインメモリアドレスから、ロードコマンドに含まれるサブプロセッサID及びLSアドレスで特定されるサブプロセッサ内のLS24の所定領域に、情報がロードされる。ここでロードされる情報は、受信したソフトウェアセルに含まれるサブプロセッサプログラムまたはデータ、あるいはその他の指示されたデータである。
次に、メインプロセッサ21は、キックコマンドを、これに含まれるサブプロセッサIDで指示されたサブプロセッサに、同様にキックコマンドに含まれるプログラムカウンタと共に出力する。指示されたサブプロセッサは、そのキックコマンド及びプログラムカウンタに従って、サブプロセッサプログラムを実行する。そして、実行結果をメインメモリ26に格納した後、実行を完了したことをメインプロセッサ21に通知する。
なお、送信先の情報処理装置内の情報処理コントローラにおいてソフトウェアセルを実行するプロセッサはサブプロセッサ23に限定されるものではなく、メインプロセッサ21がソフトウェアセルに含まれる機能プログラムなどのメインメモリ用プログラムを実行するように指定することも可能である。
この場合には、送信元の情報処理装置は、送信先の情報処理装置宛に、サブプロセッサプログラムの代わりに、メインメモリ用プログラム及びそのメインメモリ用プログラムによって処理されるデータを含み、DMAコマンドがロードコマンドであるソフトウェアセルを送信し、メインメモリ26にメインメモリ用プログラム及びそれによって処理されるデータを記憶させる。次に、送信元の情報処理装置は、送信先の情報処理装置宛に、送信先の情報処理装置内の情報処理コントローラについてのメインプロセッサID、メインメモリアドレス、メインメモリ用プログラムを識別するための後述の機能プログラムIDなどの識別子、及びプログラムカウンタを含み、DMAコマンドがキックコマンドまたは機能プログラム実行コマンドであるソフトウェアセルを送信して、メインプロセッサ21に当該メインメモリ用プログラムを実行させる。
以上のように、この発明のネットワークシステムでは、送信元の情報処理装置は、サブプロセッサプログラムまたはメインメモリ用プログラムをソフトウェアセルによって送信先の情報処理装置に送信するとともに、当該サブプロセッサプログラムを送信先の情報処理装置内の情報処理コントローラに含まれるサブプロセッサ23にロードさせ、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置に実行させることができる。
送信先の情報処理装置内の情報処理コントローラでは、受信したソフトウェアセルに含まれるプログラムがサブプロセッサプログラムである場合には、当該サブプロセッサプログラムを指定されたサブプロセッサにロードさせる。そして、ソフトウェアセルに含まれるサブプロセッサプログラムまたはメインメモリ用プログラムを実行させる。したがって、ユーザが送信先の情報処理装置を操作しなくても自動的に、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置内の情報処理コントローラに実行させることができる。
このようにして情報処理装置は、自装置内の情報処理コントローラがサブプロセッサプログラムまたは機能プログラムなどのメインメモリ用プログラムを有していない場合には、ネットワークに接続された他の情報処理装置からそれらを取得することができる。更に、各サブプロセッサ間ではDMA方式によりデータ転送を行い、また上述したサンドボックスを使用することによって、1つの情報処理コントローラ内でデータを多段階に処理する必要がある場合でも、高速かつ高セキュリティに処理を実行することができる。
ソフトウェアセルの使用による分散処理の結果、図23の上段に示すようにネットワーク9に接続されている複数の情報処理装置1、2、3、4は、図23の下段に示すように、仮想的な1台の情報処理装置7として動作する。ただし、そのためには、以下のような構成によって、以下のような処理が実行される必要がある。
図24に、個々の情報処理コントローラのメインメモリ26が記憶するソフトウェアの構成を示す。これらのソフトウェア(プログラム)は、情報処理装置に電源が投入される前においては、当該の情報処理コントローラに接続される外部記録部28に記録されているものである。各プログラムは、機能または特徴によって、制御プログラム、機能プログラム及びデバイスドライバにカテゴライズされる。
制御プログラムは、各情報処理コントローラが同じものを備え、各情報処理コントローラのメインプロセッサ21が実行するもので、後述のMS(マスター/スレーブ)マネージャ及び能力交換プログラムを含む。
機能プログラムは、メインプロセッサ21が実行するもので、記録用、再生用、素材検索用など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
デバイスドライバは、情報処理コントローラ(情報処理装置)の入出力(送受信)用で、放送受信、モニタ出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラ毎に情報処理装置に応じたものが備えられる。
情報処理装置が物理的にネットワーク9に接続された状態で、情報処理装置に主電源が投入され、情報処理装置が電気的・機能的にもネットワーク9に接続されると、その情報処理装置の情報処理コントローラのメインプロセッサ21は、制御プログラムに属する各プログラム、及びデバイスドライバに属する各プログラムを、メインメモリ26にロードする。
ロード手順としては、メインプロセッサ21は、まず、DC27に読み出し命令を実行させることによって、外部記録部28からプログラムを読み出し、次に、DMAC25に書き込み命令を実行させることによって、そのプログラムをメインメモリ26に書き込む。
機能プログラムに属する各プログラムについては、必要なときに必要なプログラムだけをロードするように構成してもよく、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムをロードするように構成してもよい。
ここで、機能プログラムに属する各プログラムは、ネットワークに接続された全ての情報処理装置の外部記録部28に記録されている必要はなく、いずれか1つの情報処理装置の外部記録部28に記録されていれば、前述の方法によって他の情報処理装置からロードすることができるので、結果的に図23の下段に示すように、仮想的な1台の情報処理装置7として機能プログラムを実行することができる。
また、前述したようにメインプロセッサ21によって処理される機能プログラムは、サブプロセッサ23によって処理されるサブプロセッサプログラムと連携動作する場合がある。そこでメインプロセッサ21が外部記録部28から機能プログラムを読み出し、メインメモリ26に書き込む際に対象となる機能プログラムと連携動作するサブプロセッサプログラムが存在する場合には、当該サブプロセッサプログラムも併せて同じメインメモリ26に書き込むものとする。この場合、連携動作するサブプロセッサプログラムは1個である場合もあるし、複数個であることもあり得る。複数個である場合には、全ての連携動作するサブプロセッサプログラムをメインメモリ26に書き込むことになる。メインメモリ26に書き込まれたサブプロセッサプログラムはその後、サブプロセッサ23内のLS24に書き込まれ、メインプロセッサ21によって処理される機能プログラムと連携動作する。
図21のソフトウェアセルに示したように、機能プログラムには、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムIDとして割り当てられる。機能プログラムIDは、機能プログラムの作成の段階で、作成日時や情報処理装置IDなどから決定される。
そしてサブプロセッサプログラムにもサブプロセッサプログラムIDが割り当てられ、これによりサブプロセッサプログラムを一意的に識別可能である。割り当てられるサブプロセッサプログラムIDは、連携動作する相手となる機能プログラムの機能プログラムIDと関連性のある識別子、例えば機能プログラムIDを親番号とした上で最後尾に枝番号を付加させたもの等であることもあり得るし、連携動作する相手となる機能プログラムの機能プログラムIDとは関連性のない識別子であってもよい。いずれにしても機能プログラムとサブプロセッサプログラムが連携動作する場合には、両者とも相手の識別子であるプログラムIDを自プログラム内に互いに記憶しておく必要がある。機能プログラムが複数個のサブプロセッサプログラムと連携動作する場合にも、当該機能プログラムは複数個ある全てのサブプロセッサプログラムのサブプロセッサプログラムIDを記憶しておくことになる。
メインプロセッサ21は、自身が動作する情報処理装置の装置情報(動作状態に関する情報)を格納するための領域をメインメモリ26に確保し、当該情報を自装置の装置情報テーブルとして記録する。ここでの装置情報は、図22に示した情報処理装置ID以下の各情報である。
上述したネットワークシステムでは、ある情報処理装置への主電源投入時、その情報処理装置の情報処理コントローラのメインプロセッサ21は、マスター/スレーブマネージャ(以下、MSマネージャ)をメインメモリ26にロードし、実行する。
MSマネージャは、自身が動作する情報処理装置がネットワーク9に接続されていることを検知すると、同じネットワーク9に接続されている他の情報処理装置の存在を確認する。ここでの「接続」または「存在」は、上述したように、情報処理装置が物理的にネットワーク9に接続されているだけでなく、電気的・機能的にもネットワーク9に接続されていることを示す。また、自身が動作する情報処理装置を自装置、他の情報処理装置を他装置と称する。当該装置も、当該情報処理装置を示すものとする。
MSマネージャが同じネットワーク9に接続されている他の情報処理装置の存在を確認する方法を以下に示す。
MSマネージャは、DMAコマンドがステータス要求コマンドであり、送信元ID及び応答先IDが当該情報処理装置で、送信先IDを特定しないソフトウェアセルを生成して、当該情報処理装置が接続されたネットワーク上に送信して、ネットワーク接続確認用のタイマーを設定する。タイマーのタイムアウト時間は、例えば10分とされる。
当該ネットワークシステム上に他の情報処理装置が接続されている場合、その他の装置は、上記ステータス要求コマンドのソフトウェアセルを受信し、上記応答先IDで特定されるステータス要求コマンドを発行した情報処理装置に対して、DMAコマンドがステータス返信コマンドであり、かつデータとして自身(その他装置)の装置情報を含むソフトウェアセルを送信する。このステータス返信コマンドのソフトウェアセルには、少なくとも当該他装置を特定する情報(情報処理装置ID、メインプロセッサに関する情報、サブプロセッサに関する情報など)及び当該他装置のMSステータスが含まれる。
ステータス要求コマンドを発行した情報処理装置のMSマネージャは、上記ネットワーク接続確認用のタイマーがタイムアウトするまで、当該ネットワーク上の他装置から送信されるステータス返信コマンドのソフトウェアセルの受信を監視する。その結果、MSステータス=0(マスター装置)を示すステータス返信コマンドが受信された場合には、自装置の装置情報テーブルにおけるMSステータスを1に設定する。これによって、当該装置は、スレーブ装置となる。
一方、上記ネットワーク接続確認用のタイマーがタイムアウトするまでの間にステータス返信コマンドが全く受信されなかった場合、またはMSステータス=0(マスター装置)を示すステータス返信コマンドが受信されなかった場合には、自装置の装置情報テーブルにおけるMSステータスを0に設定する。これによって、当該装置は、マスター装置となる。
すなわち、いずれの装置もネットワーク9に接続されていない状態、またはネットワーク9上にマスター装置が存在しない状態において、新たな情報処理装置がネットワーク9に接続されると、当該装置は自動的にマスター装置として設定される。一方、ネットワーク9上に既にマスター装置が存在する状態において、新たな情報処理装置がネットワーク9に接続されると、当該装置は自動的にスレーブ装置として設定される。
マスター装置及びスレーブ装置のいずれについても、MSマネージャは、定期的にステータス要求コマンドをネットワーク9上の他装置に送信してステータス情報を照会することにより、他装置の状況を監視する。その結果、ネットワーク9に接続されている情報処理装置の主電源が遮断され、またはネットワーク9から情報処理装置が切り離されることにより、予め判定用に設定された所定期間内に特定の他装置からステータス返信コマンドが返信されなかった場合や、ネットワーク9に新たな情報処理装置が接続された場合など、ネットワーク9の接続状態に変化があった場合には、その情報を後述の能力交換プログラムに通知する。
メインプロセッサ21は、MSマネージャから、ネットワーク9上の他装置の照会及び自装置のMSステータスの設定完了の通知を受けると、能力交換プログラムを実行する。
能力交換プログラムは、自装置がマスター装置である場合には、ネットワーク9に接続されている全ての他装置の装置情報、すなわち各スレーブ装置の装置情報を取得する。他装置の装置情報の取得は、上述したように、DMAコマンドがステータス要求コマンドであるソフトウェアセルを生成して他装置に送信し、その後、DMAコマンドがステータス返信コマンドで、かつデータとして他装置の装置情報を含むソフトウェアセルを他装置から受信することによって可能である。
能力交換プログラムは、マスター装置である自装置の装置情報テーブルと同様に、ネットワーク9に接続されている全ての他装置(各スレーブ装置)の装置情報を格納するための領域を自装置のメインメモリ26に確保し、これら情報を他装置(スレーブ装置)の装置情報テーブルとして記録する。すなわち、マスター装置のメインメモリ26には、自装置を含むネットワーク9に接続されている全ての情報処理装置の装置情報が、装置情報テーブルとして記録される。
一方、自装置がスレーブ装置である場合には、能力交換プログラムは、ネットワーク9に接続されている全ての他装置の装置情報、すなわちマスター装置及び自装置以外の各スレーブ装置の装置情報を取得し、これら装置情報に含まれる情報処理装置ID及びMSステータスを、自装置のメインメモリ26に記録する。すなわち、スレーブ装置のメインメモリ26には、自装置の装置情報が、装置情報テーブルとして記録されるとともに、自装置以外のネットワーク9に接続されているマスター装置及び各スレーブ装置についての情報処理装置ID及びMSステータスが、別の装置情報テーブルとして記録される。
また、マスター装置及びスレーブ装置のいずれについても、能力交換プログラムは、上記のようにMSマネージャから、新たにネットワーク9に情報処理装置が接続されたことが通知されたときには、その情報処理装置の装置情報を取得し、上述したようにメインメモリ26に記録する。
なお、MSマネージャ及び能力交換プログラムは、メインプロセッサ21で実行されることに限らず、いずれかのサブプロセッサ23で実行されてもよい。また、MSマネージャ及び能力交換プログラムは、情報処理装置の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
マスター装置及びスレーブ装置のいずれについても、能力交換プログラムは、上記のようにMSマネージャから、ネットワーク9に接続されている情報処理装置の主電源が遮断され、またはネットワーク9から情報処理装置が切り離されたことが通知されたときには、その情報処理装置の装置情報テーブルを自装置のメインメモリ26から削除する。
更に、このようにネットワーク9から切断された情報処理装置がマスター装置である場合には、以下のような方法によって、新たにマスター装置が決定される。
具体的には、例えば、ネットワーク9から切断されていない情報処理装置は、それぞれ、自装置及び他装置の情報処理装置IDを数値に置き換えて、自装置の情報処理装置IDを他装置の情報処理装置IDと比較し、自装置の情報処理装置IDがネットワーク9から切断されていない情報処理装置中で最小である場合、そのスレーブ装置は、マスター装置に移行して、MSステータスを0に設定し、マスター装置として、上述したように、ネットワーク9に接続されている全ての他装置(各スレーブ装置)の装置情報を取得して、メインメモリ26に記録する。
図23の下段に示したようにネットワーク9に接続されている複数の情報処理装置1、2、3、4を仮想的な1台の情報処理装置7として動作させるためには、マスター装置がユーザの操作及びスレーブ装置の動作状態を把握する必要がある。
図25に、4台の情報処理装置が仮想的な1台の情報処理装置7として動作する様子を示す。情報処理装置1がマスター装置、情報処理装置2、3、4がスレーブ装置A、B、Cとして、動作しているものとする。
ユーザがネットワーク9に接続されている情報処理装置を操作した場合、操作対象がマスター装置1であれば、その操作情報は、マスター装置1において直接把握され、操作対象がスレーブ装置であれば、その操作情報は、操作されたスレーブ装置からマスター装置1に送信される。すなわち、ユーザの操作対象がマスター装置1とスレーブ装置のいずれであるかにかかわらず、その操作情報は常にマスター装置1において把握される。操作情報の送信は、例えば、DMAコマンドが操作情報送信コマンドであるソフトウェアセルによって行われる。
そして、マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、その操作情報に従って、実行する機能プログラムを選択する。その際、必要であれば、マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、上記の方法によって自装置の外部記録部28−1、28−2からメインメモリ26−1に機能プログラムをロードするが、他の情報処理装置(スレーブ装置)がマスター装置1に機能プログラムを送信してもよい。
機能プログラムには、その実行単位毎に必要となる、図22に示した各情報として表される情報処理装置種別ID、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件等の、装置に関する要求スペックが規定されている。
マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、各機能プログラムについて必要となる上記要求スペックを読み出す。また、予め能力交換プログラムによってメインメモリ26−1に記録された装置情報テーブルを参照し、各情報処理装置の装置情報を読み出す。ここでの装置情報は、図22に示した情報処理装置ID以下の各情報を示し、メインプロセッサ、サブプロセッサ、メインメモリ及び外部記録部に関する情報である。
マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、ネットワーク9上に接続された各情報処理装置の上記装置情報と、機能プログラム実行に必要となる上記要求スペックとを順次比較する。
そして、例えば、機能プログラムが録画機能を必要とする場合には、情報処理装置種別IDに基づいて、録画機能を有する情報処理装置のみを特定して抽出する。更に、機能プログラムを実行するために必要なメインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件を確保できるスレーブ装置を、実行要求候補装置として特定する。ここで、複数の実行要求候補装置が特定された場合には、当該候補装置から1つの実行要求候補装置を特定して選択する。
実行要求するスレーブ装置が特定されたら、マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、その特定されたスレーブ装置について、自装置内の情報処理コントローラ11に含まれるメインメモリ26−1に記録されている当該スレーブ装置の装置情報テーブルを更新する。
更に、マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、DMAコマンドが機能プログラム実行コマンドであるソフトウェアセルを生成し、当該ソフトウェアセルのセルインターフェースに、機能プログラムに関する必要なサブプロセッサの情報及びサンドボックスサイズ(図21参照)を設定して、上記実行要求されるスレーブ装置に対して送信する。
機能プログラムの実行を要求されたスレーブ装置は、その機能プログラムを実行するとともに、自装置の装置情報テーブルを更新する。その際、必要であれば、スレーブ装置内の情報処理コントローラに含まれるメインプロセッサ21は、上記の方法によって自装置の外部記録部28からメインメモリ26に機能プログラムおよび当該機能プログラムと連携動作するサブプロセッサプログラムをロードする。
機能プログラムの実行を要求されたスレーブ装置の外部記録部28に、必要な機能プログラムまたは当該機能プログラムと連携動作するサブプロセッサプログラムが記録されていない場合には、他の情報処理装置が当該機能プログラムまたはサブプロセッサプログラムを、その機能プログラム実行要求先スレーブ装置に送信するように、システムを構成すればよい。
サブプロセッサプログラムについては、前述のロードコマンドおよびキックコマンドを利用して他の情報処理装置に実行させることもできる。
機能プログラムの実行終了後、機能プログラムを実行したスレーブ装置内の情報処理コントローラに含まれるメインプロセッサ21は、終了通知をマスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1に送信するとともに、自装置の装置情報テーブルを更新する。マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、その終了通知を受信して、機能プログラムを実行したスレーブ装置の装置情報テーブルを更新する。
マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、自装置及び他装置の装置情報テーブルの参照結果から、当該の機能プログラムを実行することができる情報処理装置として、自身を選択する場合もあり得る。その場合には、マスター装置1が当該機能プログラムを実行する。
図25の例で、ユーザがスレーブ装置A(情報処理装置2)を操作し、当該操作に応じた機能プログラムを別のスレーブ装置B(情報処理装置3)が実行する場合について、図26を用いてその分散処理の例を説明する。
図26の例では、ユーザがスレーブ装置Aを操作することによって、スレーブ装置Aを含むネットワークシステム全体の分散処理が開始して、まず、スレーブ装置Aは、ステップ81で、その操作情報をマスター装置1に送信する。
マスター装置1は、ステップ72で、その操作情報を受信し、さらにステップ73に進んで、自装置のメインメモリ26−1に記録されている自装置及び他装置の装置情報テーブルから、各情報処理装置の動作状態を調べて、受信した操作情報に応じた機能プログラムを実行することができる情報処理装置を選択する。この例は、スレーブ装置Bが選択される場合である。
次に、マスター装置1は、ステップ74で、その選択したスレーブ装置Bに対して機能プログラムの実行を要求する。
スレーブ装置Bは、ステップ95で、その実行要求を受信し、さらにステップ96に進んで、実行要求された機能プログラムを実行する。
以上のように、ユーザは、1台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置1、2、3、4を仮想的な1台の情報処理装置7として動作させることができる。
次に、本実施形態において、以上説明したネットワークシステムに本発明を適用した場合の実施の形態について説明する。図27は、本実施形態におけるコンテンツ記録再生システムの構成を示した図である。同図においては、上述の図19における情報処理装置1にホームサーバ10を、情報処理装置2、3及び4にそれぞれコンテンツ記録再生装置20、30及び40を採用している。コンテンツ記録再生装置20の数は3つに限定されるものではない。ネットワーク9は例えば家庭内のLAN(Local Area Network)である。
本システムにおいては、各コンテンツ記録再生装置は、上述の第2実施形態と同様、放送される番組を受信、記録及び再生することが可能であり、ホームサーバ10は、上記第2実施形態における顔画像識別処理及び音声識別処理と、登場人物データベースの管理とを各コンテンツ記録再生装置の代わりに行うことが可能である。各機器の動作については後述する。
同図に示すように、ホームサーバ10は、上記図19の情報処理装置1におけるメインプロセッサとして顔画像識別部21−1を有し、またサブプロセッサとして顔画像管理部23−1、音声識別部23−2及び音声管理部23−3を有する。これら各部の機能は上述の第2実施形態の場合と同様である。また、ホームサーバ10は、上記情報処理装置1の外部記憶部28−1に、上述の第2実施形態における場合と同様の登場人物データベース110、顔画像データベース111及び音声データベース54を有する。登場人物データベース110は、登場人物に関するデータをフレーム及び番組毎に記憶するとともに、それらのデータがどのコンテンツ記録再生装置において記録された番組に関するものであるかも判別可能なように、コンテンツ記録再生装置毎に区分されて記憶されている。
コンテンツ記録再生装置20は、上記図19の情報処理装置2におけるメインプロセッサとして顔画像検出部21−2を有し、またサブプロセッサとして顔画像追跡部23−4及び音声検出部23−5を有する。これら各部の機能も、上述の第2実施形態の場合と同様である。また、コンテンツ記録再生装置20は、上記情報処理装置2の外部記憶部28−3に、上記第2実施形態の場合と同様の番組データベース109を有している。
更にコンテンツ記録再生装置20は、情報処理コントローラ12のバス29−2に接続されたバスに、上述の第2実施形態の場合と同様の放送受信部101、圧縮復号化部102、表示部104、音響部105及び操作入力部106を有している。図示しないが、コンテンツ記録再生装置30及び40の構成もコンテンツ記録再生装置20と同様である。
ホームサーバ10、コンテンツ記録再生装置20、30及び40は、上記メインプロセッサ、サブプロセッサとしての各部を含む情報処理コントローラをそれぞれ有し、上記DMAコマンド等によりソフトウェアセルを実行したり、各種データをやり取りしたりすることが可能である。よって、各機器には、それぞれを識別するための上記情報処理装置IDが付与されている。
次に、本実施形態においてホームサーバ10と各コンテンツ記録再生装置との間でやり取りされるソフトウェアセルについて説明する。
図28は、各コンテンツ記録再生装置が検出した顔画像の識別をホームサーバ10へ要求する際に送信されるソフトウェアセルの例を示した図である。
同図に示すように、このソフトウェアセルにおいて、送信元ID及び応答先IDは各コンテンツ記録再生装置の情報処理装置ID(以下、単にIDと記述する)、送信先IDはホームサーバのIDである。また、DMAコマンドとして顔画像識別要求コマンドを送信し、データとして、各コンテンツ記録再生装置の顔画像検出部が検出し、または顔画像追跡部が追跡検出した顔画像データ及び当該顔画像データが含まれる番組の番組データを送信する。
更に、このソフトウェアセルの送信以前に、各コンテンツ記録再生装置がホームサーバ10へ当該顔画像識別要求コマンドを送信している場合には、セルインターフェース中、前回のソフトウェアセルIDとして、当該送信の際のソフトウェアセルのグローバルIDを送信する。当該ソフトウェアセルは、例えば顔画像が検出されたフレーム毎に各コンテンツ記録再生装置から送信される。
図29は、ホームサーバ10が、上記各コンテンツ記録再生装置が送信した上記顔画像識別要求コマンドに応答して、各コンテンツ記録再生装置に対して送信するソフトウェアセルの例を示した図である。
同図に示すように、このソフトウェアセルにおいて、送信元IDはホームサーバ10のID、送信先ID及び応答先IDは各コンテンツ記録再生装置のIDである。DMAコマンドとして顔画像識別応答コマンドを送信し、また、このソフトウェアセルの送信以前に、上記ホームサーバ10が各コンテンツ記録再生装置に当該顔画像識別応答コマンドを送信している場合には、前回のソフトウェアセルIDとして、当該送信の際のソフトウェアセルのグローバルIDを送信する。
ホームサーバ10は、上記顔画像識別要求コマンドに応じて、受信した顔画像と顔画像データベース111中の顔画像とを顔画像識別部21−1の処理により照合し、顔画像に対応する人物を識別して、登場人物データベース110を更新すると、その旨を上記顔画像識別応答コマンドにより各コンテンツ記録再生装置へ通知する。
なお、図示しないが、各コンテンツ記録再生装置が、自身が検出した音声データからの人物の識別処理をホームサーバ10へ要求する際には、顔画像識別要求コマンドと同様に、音声識別要求コマンドをホームサーバ10へ送信し、ホームサーバ10は音声データベース54を参照して音声識別部23−2の処理により人物を識別して登場人物データベース110を更新すると、その旨を音声識別応答コマンドにより各コンテンツ記録再生装置へ通知する。
図30は、各コンテンツ記録再生装置においてユーザに番組を提示する際に、当該提示に必要な情報をホームサーバ10から取得するために送信するソフトウェアセルの例を示した図である。
同図に示すように、このソフトウェアセルにおいて、送信元ID及び応答先IDは各コンテンツ記録再生装置の情報処理装置IDであり、送信先IDはホームサーバのIDである。また、DMAコマンドとして番組提示情報要求コマンドを送信する。更に、このソフトウェアセルの送信以前に、各コンテンツ記録再生装置がホームサーバ10へ当該番組提示情報要求コマンドを送信している場合には、前回のソフトウェアセルIDとして、当該送信の際のソフトウェアセルのグローバルIDを送信する。
当該ソフトウェアセルの送信は、例えばユーザが操作入力部106等の操作により番組提示を各コンテンツ記録再生装置へ指示したときに行われる。
図31は、上記番組提示情報要求コマンドに応答して、ホームサーバ10が各コンテンツ記録再生装置へ番組提示情報を送信する際のソフトウェアセルの例を示した図である。
このソフトウェアセルにおいて、送信元IDはホームサーバ10のID、送信先ID及び応答先IDは各コンテンツ記録再生装置のIDである。DMAコマンドとして番組提示情報応答コマンドを送信し、データとして、登場人物データベース110から抽出した、番組の登場人物に関するデータ及び当該番組に付与された嗜好評価ポイント等の番組情報を送信する。
また、このソフトウェアセルの送信以前に、上記ホームサーバ10が各コンテンツ記録再生装置に当該番組提示情報応答コマンドを送信している場合には、前回のソフトウェアセルIDとして、当該送信の際のソフトウェアセルのグローバルIDを送信する。
ホームサーバ10は、上記データを、コンテンツ記録再生装置毎に記憶された番組全てについて、例えば番組毎またはまとめて送信する。各コンテンツ記録再生装置は、上記番組提示情報応答コマンドにより取得したデータを基に、例えば表示部に番組情報のリストを嗜好評価ポイント順に分割表示することによりユーザに番組を提示し、ユーザは当該表示部の画面から所望の番組を選択することにより当該番組を視聴することができる。
次に、本実施形態におけるホームサーバ10及び各コンテンツ記録再生装置の動作について説明する。図32は、当該動作の流れを示したシーケンス図である。同図においては例としてホームサーバ10とコンテンツ記録再生装置20の動作について説明するが、ホームサーバ10とコンテンツ記録再生装置30及びコンテンツ記録再生装置40の動作も同様である。また、各処理ステップ中、上述の第2実施形態における場合(図18参照)と同様の部分については説明を簡略化する。
同図に示すように、まず、コンテンツ記録再生装置20は、上述の第2実施形態の場合(図18参照)と同様、番組を受信及び記録し、記録した番組の映像フレームから人物の顔画像を、また音声データから人物の音声を検出する(ステップ1001〜1003)。
次に、当該検出した顔画像及び音声から人物を識別してもらうために、ソフトウェアセルにより、ホームサーバ10へ上記顔画像識別要求コマンド及び音声識別要求コマンドを送信する(ステップ1004)。
ホームサーバ10は、当該顔画像識別要求コマンド及び音声識別コマンドを受信すると(ステップ1005)、ソフトウェアセルのデータ中に含まれる顔画像及び音声データと、顔画像データベース111及び音声データベース54との照合を行って人物を識別し(ステップ1006)、顔画像ID及び声紋ID等、両データベースに中の識別した人物に関する情報を登場人物データベース110に関連付けて登録する(ステップ1007)。また、顔画像及び音声から人物を識別した旨及び登場人物データベース110を作成した旨を上記顔画像識別応答コマンド及び音声識別応答コマンドによりコンテンツ記録再生装置20へ送信する(ステップ1008)とともに、識別した人物が登場するフレームに対して、上記第2実施形態の場合と同様に(図16参照)嗜好評価ポイントを付与し、その累計ポイントにより各番組の嗜好評価ポイントを更新する(ステップ1010)。
コンテンツ記録再生装置20は、上記顔画像識別応答コマンド及び音声識別応答コマンドを受信し(ステップ1009)、その後にユーザが番組の提示を指示した場合には、上記番組提示情報要求コマンドをホームサーバ10へ送信する(ステップ1011)。ホームサーバ10は、当該番組提示情報要求コマンドを受信すると(ステップ1012)、上記作成した登場人物データベース110及び嗜好評価ポイントを参照して、コンテンツ記録再生装置20に記録された全ての番組について、番組の提示に必要な登場人物データ、嗜好評価ポイントデータを含む番組データを、上記番組提示情報応答コマンドにより送信する(ステップ1013)。
そして、コンテンツ記録再生装置20は、当該番組提示情報応答コマンドを受信すると(ステップ1014)、当該コマンドとともに送信された上記登場人物データ及び嗜好評価ポイントデータを用いて、自身の番組データベース109中のデータと関連付けながら、表示部104に上述したような番組リストの分割表示を行うことにより、ユーザに番組を提示する(ステップ1015)。
以上の動作により、顔画像識別処理及び音声識別処理、登場人物データベース110等の処理をホームサーバ10が各コンテンツ記録再生装置の代わりに行うことで、画像認識や音声認識といった比較的負荷の高い処理を複数台の機器で分散して効率よく処理することができ、ユーザに対してよりスムーズに番組を提示することができる。
なお、本実施形態においてホームサーバ10と各コンテンツ記録再生装置が家庭内のLANで接続されている例を説明したが、各機器が接続可能ならばネットワークの種類はLANに限られるものではなく、例えば各機器がインターネットのような広域ネットワークを介して接続されているような形態であっても構わない。
また、ネットワークを介さずに、本実施形態におけるメインプロセッサ及びサブプロセッサを有するコンテンツ記録再生装置が、各プロセッサに顔画像及び音声検出、顔画像及び音声識別等の処理を分散処理させ、スタンドアローンで処理を行うような形態であっても構わない。