(57)【要約】【課題】継続的なストリーム処理を実現する。【解決手段】サーバ１００は、第１端末及び第２端末からメディアストリームを取得し、第１端末及び第２端末から取得した各メディアストリームに関する情報を記憶装置に格納する。サーバ１００は、第１端末及び第２端末に対し、端末情報を所定期間毎に要求し、第１端末から要求に対する応答を受信し、第２端末から要求に対する応答を受信しない場合に、記憶装置に格納された各メディアストリームに関する情報の相関性を判定する。サーバ１００は、各メディアストリームに関する情報に相関性があると判定された場合に、第２端末から取得すべきメディアストリームを、第１端末から取得する。【選択図】図１
2018129702.tif 000002
【特許請求の範囲】
【請求項１】
第１端末及び第２端末からメディアストリームを取得し、前記第１端末及び前記第２端末から取得した各メディアストリームに関する情報を記憶部に格納する格納処理部と、
前記第１端末及び前記第２端末に対し、端末情報を所定期間毎に要求し、前記第１端末から前記要求に対する応答を受信し、前記第２端末から前記要求に対する応答を受信しない場合に、前記記憶部に格納された各メディアストリームに関する情報の相関性を判定する判定部と、
各メディアストリームに関する情報に相関性があると判定された場合に、前記第２端末から取得すべきメディアストリームを、前記第１端末から取得する取得部と
を有することを特徴とするサーバ。
【請求項２】
前記格納処理部は、複数の第１端末及び第２端末からメディアストリームを取得し、取得した各メディアストリームに関する情報を記憶部に格納し、前記判定部は、前記複数の第１端末の各メディアストリームと、第２端末のメディアストリームとの相関係数をそれぞれ算出し、算出した各相関係数のうち、最大の相関係数となる各メディアストリームの取得先となる第１端末と第２端末との組を判定し、前記取得部は、前記判定された組の第１端末からメディアストリームを取得することを特徴とする請求項１に記載のサーバ。
【請求項３】
前記判定部は、前記第２端末からの距離が所定距離未満となる複数の第１端末の各メディアストリームと、第２端末のメディアストリームとの相関係数をそれぞれ算出し、算出した各相関係数のうち、最大の相関係数となる各メディアストリームの取得先となる第１端末と第２端末との組を判定することを特徴とする請求項２に記載のサーバ。
【請求項４】
前記第１端末のメディアストリームおよび前記第２端末のメディアストリームは各時刻と対応付けられ、前記判定部は、時刻毎に値の異なる重み付け係数を利用して、前記第１端末のメディアストリームと、前記第２端末のメディアストリームとの相関係数を算出することを特徴とする請求項１、２または３に記載のサーバ。
【請求項５】
コンピュータが実行する通信方法であって、
第１端末及び第２端末からメディアストリームを取得し、前記第１端末及び前記第２端末から取得した各メディアストリームに関する情報を記憶装置に格納し、
前記第１端末及び前記第２端末に対し、端末情報を所定期間毎に要求し、前記第１端末から前記要求に対する応答を受信し、前記第２端末から前記要求に対する応答を受信しない場合に、前記記憶装置に格納された各メディアストリームに関する情報の相関性を判定し、
各メディアストリームに関する情報に相関性があると判定された場合に、前記第２端末から取得すべきメディアストリームを、前記第１端末から取得する
処理を実行することを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ等に関する。
【背景技術】
【０００２】
図１８は、メディアストリームを取り扱う従来のサーバの一例を説明するための図である。図１８に示すように、サーバ１０は、ネットワーク５を介して、デバイス１ａ、１ｂ、・・・、１Ｎに接続される。以下の説明では、デバイス１ａ、１ｂ、・・・、１ｎをまとめて適宜、デバイス１と表記する。
【０００３】
デバイス１は、スマートデバイス、ＰＣ（Personal  Computer）等に対応し、付属のマイクを用いて、周辺の音声を集音し、集音した音声のデータを、音声ストリームとして、リアルタイムでサーバ１０に送信する。デバイス１は、音声の他にも、ビデオやグラフィック等のその他のメディアのデータも、リアルタイムでサーバ１０に送信する。以下の説明では、デバイス１がサーバ１０に送信する各メディアのデータを、メディアストリームと表記する。
【０００４】
サーバ１０は、ストリーム処理部１０ａを有する。ストリーム処理部１０ａは、デバイス１から受信したメディアストリームに対して、各種のストリーム処理を実行する。ストリーム処理は、リアルタイムに送信されるメディアストリームに対して、録音、音声認識、画像処理、ハイパス・ローパス等の各種フィルタ処理、ノイズキャンセル、圧縮等を継続的に行う処理の総称である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−３４１４１５号公報
【特許文献２】国際公開第２００８／０７２４６９号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術では、継続的なストリーム処理を実現することができないという問題がある。
【０００７】
例えば、デバイス１ａに障害が発生した場合には、この障害の発生したデバイス１ａからのメディアストリームが途絶える。このため、サーバ１０は、切断期間中において、デバイス１ａのメディアストリームに対するストリーム処理を中断することになる。他のデバイス１に障害が発生した場合も、同様に、ストリーム処理が中断される。
【０００８】
１つの側面では、本発明は、継続的なストリーム処理を実現することができるサーバおよび通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、サーバは、格納処理部と、判定部と、取得部とを有する。格納処理部は、第１端末及び第２端末からメディアストリームを取得し、第１端末及び第２端末から取得した各メディアストリームに関する情報を記憶部に格納する。判定部は、第１端末及び第２端末に対し、端末情報を所定期間毎に要求し、第１端末から要求に対する応答を受信し、第２端末から要求に対する応答を受信しない場合に、記憶部に格納された各メディアストリームに関する情報の相関性を判定する。取得部は、各メディアストリームに関する情報に相関性があると判定された場合に、第２端末から取得すべきメディアストリームを、第１端末から取得する。
【発明の効果】
【００１０】
代替するのに妥当な端末を選択することが可能になるため、継続的なストリーム処理を実現することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施例に係るシステムの構成を示す図である。
【図２】図２は、本実施例に係る音声デバイスの構成を示す機能ブロック図である。
【図３】図３は、本実施例に係るサーバの構成を示す機能ブロック図である。
【図４】図４は、バッファのデータ構造の一例を示す図である。
【図５】図５は、デバイステーブルのデータ構造の一例を示す図である。
【図６】図６は、重み付け係数Ｗ（ｔ）の一例を示す図である。
【図７】図７は、相関係数Ｆｎ（ｔ）の一例を示す図である。
【図８】図８は、サーバが接続要求を受け付けた場合の処理手順を示すフローチャートである。
【図９】図９は、音声デバイスと接続中のサーバの処理手順を示すフローチャートである。
【図１０】図１０は、切り替え処理の一例を示すフローチャート（１）である。
【図１１】図１１は、切り替え処理の一例を示すフローチャート（２）である。
【図１２】図１２は、音声デバイスがサーバに接続する場合のシステムの処理手順を示すフローチャートである。
【図１３】図１３は、デバイステーブルの一例を示す図（１）である。
【図１４】図１４は、音声デバイスとサーバとが接続している間のシステムの処理手順を示すフローチャートである。
【図１５】図１５は、デバイステーブルの一例を示す図（２）である。
【図１６】図１６は、音声デバイスに障害が発生した場合のシステムの処理手順を示すフローチャートである。
【図１７】図１７は、サーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【図１８】図１８は、メディアストリームを取り扱う従来のサーバの一例を説明するための図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するサーバおよび通信方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１３】
図１は、本実施例に係るシステムの構成を示す図である。図１に示すように、このシステムは、音声デバイス５０ａ，５０ｂ，５０ｃ，５０ｄ，５０ｅと、サーバ１００とを有する。音声デバイス５０ａ〜５０ｅと、サーバ１００とは、ネットワーク６０を介して相互に接続される。図１に示す例では、音声デバイス５０ａ〜５０ｅを示すが、サーバ１００は、図示しない他の音声デバイスに接続されていても良い。以下の説明では、適宜、音声デバイス５０ａ〜５０ｅをまとめて、音声デバイス５０と表記する。
【００１４】
音声デバイス５０は、マイクを用いて周辺の音声を集音し、集音した音声のデータを、メディアストリームとして、リアルタイムでサーバ１００に送信する装置である。なお、本実施例では、メディアストリームを、音声のデータとして説明するが、音声デバイス５０は、カメラを用いて、映像を撮影し、撮影した映像のデータを、メディアストリームとして、サーバ１００に送信しても良い。
【００１５】
サーバ１００は、各音声デバイス５０からメディアストリームをそれぞれ受信し、受信したメディアストリームに対して、各種のストリーム処理を実行する装置である。ストリーム処理は、リアルタイムに送信されるメディアストリームに対して、録音、音声認識、ハイパス・ローパス等の各種フィルタ処理、ノイズキャンセル、圧縮等を継続的に行う処理の総称である。
【００１６】
ここで、サーバ１００は、ある音声デバイスとの接続が切断された場合に、代替となる最適な音声デバイスを選択し、選択した音声デバイスからのメディアストリームを流用することで、継続的なストリーム処理を実現する。
【００１７】
例えば、サーバ１００は、サーバ１００と音声デバイス５０ａとの接続が切断された場合には、音声デバイス５０ａと最も相関性のある音声デバイスを特定する。各音声デバイスに相関性があるか否かは、各音声デバイス５０から送信されるメディアストリームの相関係数、各音声デバイス５０の位置情報により判定される。
【００１８】
例えば、音声デバイス５０ａと最も相関性のある音声デバイスを、音声デバイス５０ｃとする。この場合には、サーバ１００は、音声デバイス５０ｃを選択し、音声デバイス５０ａのメディアストリームとして、音声デバイス５０ｃのメディアストリームを流用し、継続的なストリーム処理を実現する。
【００１９】
次に、図１に示した音声デバイス５０およびサーバ１００の構成の一例について説明する。
【００２０】
図２は、本実施例に係る音声デバイスの構成を示す機能ブロック図である。ここでは一例として、音声デバイス５０ａの機能ブロック図について説明する。音声デバイス５０ｂ，５０ｃ，５０ｄ，５０ｅの機能ブロック図は、音声デバイス５０ａの機能ブロック図と同様であるため、ここでは説明を省略する。
【００２１】
図２に示すように、この音声デバイス５０ａは、マイク５１と、通信部５２と、記憶部５３と、制御部５４とを有する。
【００２２】
マイク５１は、周辺の音声のデータを集音するマイクである。マイク５１は、音声のデータを、制御部５４に出力する。例えば、マイク５１は、制御部５４から開始命令を受け付けると、集音を開始し、終了命令を受け付けると、集音を終了する。図２の説明では、マイク５１が集音した音のデータを、音声データ５３ａと表記する。
【００２３】
通信部５２は、ネットワーク６０を介して、サーバ１００とデータ通信を実行する処理部である。後述する制御部５４は、通信部５２を介して、サーバ１００とデータをやり取りする。
【００２４】
記憶部５３は、音声データ５３ａと、位置データ５３ｂとを有する。記憶部５３は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子や、ＨＤＤ（Hard  Disk  Drive）などの記憶装置に対応する。
【００２５】
音声データ５３ａは、マイク５１により集音された音声データである。
【００２６】
位置データ５３ｂは、音声デバイス５０ａの位置を示すデータである。位置データ５３ｂは、後述する位置算出部５４ｂにより生成される。
【００２７】
制御部５４は、取得部５４ａと、位置算出部５４ｂと、クライアント部５４ｃとを有する。制御部５４は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などによって実現できる。また、制御部５４は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックによっても実現できる。
【００２８】
取得部５４ａは、マイク５１から音声データ５３ａを取得する処理部である。取得部５４は、取得した音声データ５３ａを、記憶部５３に格納する。取得部５４は、マイク５１が集音を開始してから集音を終了するまで、音声データ５３ａを記憶部５３に格納する処理を継続して実行する。
【００２９】
位置算出部５４ｂは、ＧＰＳ（Global  Positioning  System）機能等を用いて、音声デバイス５０ａの位置を算出する処理部である。位置算出部５４ｂが算出した位置のデータを、位置データ５３ｂと表記する。位置算出部５４ｂは、位置データ５３ｂを、記憶部５３に格納する。
【００３０】
クライアント部５４ｃは、サーバ１００に接続要求を行い、サーバ１００に接続されると、マイク５１によりリアルタイムに集音された音声データ５３ａを、メディアストリームとして、サーバ１００に送信する処理部である。例えば、メディアストリームは、時刻毎の音声データである。以下に、クライアント部５４ｃの処理の一例について説明する。
【００３１】
例えば、クライアント部５４ｃは、サーバ１００に接続要求を行うと、サーバ１００からキープアライブリクエストを受信する。クライアント部５４ｃは、キープアライブリクエストを受信すると、キープアライブレスポンスに、音声デバイス５０ａを識別する識別情報と、位置データ５３ｂとを格納し、キープアライブレスポンスを、サーバ１００に送信する。
【００３２】
クライアント部５４ｃは、キープアライブレスポンスを送信した後に、マイク５１に対して開始命令を出力することで、音声データ５３ａの集音を開始させる。クライアント部５４ｃは、リアルタイムに、マイク５１により集音される音声データ５３ａを、メディアストリームとして、サーバ１００に送信する処理を開始する。クライアント部５４ｃは、メディアストリームをサーバ１００に送信する場合に、音声デバイス５０ａを識別する識別情報を通知しても良い。
【００３３】
クライアント部５４ｃは、サーバ１００または図示しない入力装置から停止要求を受け付けた場合には、メディアストリームの送信を終了する。また、クライアント部５４ｃは、マイク５１に対して、終了命令を出力する。
【００３４】
図３は、本実施例に係るサーバの構成を示す機能ブロック図である。図３に示すように、サーバ１００は、通信部１１０と、入力部１２０と、表示部１３０と、記憶部１４０と、制御部１５０とを有する。
【００３５】
通信部１１０は、ネットワーク６０を介して、音声デバイス５０とデータ通信を実行する処理部である。後述する制御部１５０は、通信部１１０を介して、音声デバイス５０とデータをやり取りする。
【００３６】
入力部１２０は、各種のデータをサーバ１００に入力するための入力装置である。例えば、入力部１２０は、キーボードやマウス、タッチパネルに対応する。
【００３７】
表示部１３０は、制御部１５０から出力されるデータを表示する表示装置である。例えば、液晶ディスプレイやタッチパネルに対応する。
【００３８】
記憶部１４０は、バッファ１４１と、デバイステーブル１４２と、設定値データ１４３とを有する。記憶部１５０は、ＲＡＭ、ＲＯＭ、フラッシュメモリなどの半導体メモリ素子や、ＨＤＤなどの記憶装置に対応する。
【００３９】
バッファ１４１は、音声デバイス５０からリアルタイムに送信されるメディアストリームをそれぞれ格納するバッファである。図４は、バッファのデータ構造の一例を示す図である。図４に示すように、バッファ１４１は、識別情報と、メディアストリームとを対応付ける。識別情報は、音声デバイス５０を一意に識別する情報である。メディアストリームは、音声デバイス５０から受信するものであり、識別情報に対応付けられる。
【００４０】
デバイステーブル１４２は、音声デバイス５０に関連する各種の情報を保持するテーブルである。図５は、デバイステーブルのデータ構造の一例を示す図である。図５に示すように、このデバイステーブル１４２は、識別情報と、位置データと、距離データと、相関係数リストとを対応付ける。識別情報は、音声デバイス５０を一意に識別するデータである。位置データは、識別情報により識別される音声デバイス５０の位置を示す情報である。距離データは、基準となる音声デバイス５０と、該当する音声デバイス５０との距離を示す情報である。例えば、識別情報「音声デバイス５０ｂ」のレコードにおいて、基準となる音声デバイス５０を音声デバイス５０ａとすると、距離データは、音声デバイス５０ａと音声デバイス５０ｂとの距離を示す。以下の説明では、基準となる音声デバイス５０を適宜「採用デバイス」と表記する。
【００４１】
相関係数リストは、採用デバイスのメディアストリームおよび該当する音声デバイス５０のメディアストリームについて、時刻毎の相関係数の値を示すリストである。相関係数は、後述する判定部１５３により算出される。
【００４２】
設定値データ１４３は、重み付け係数Ｗ（ｔ）、比較対象時間、監視間隔のデータを保持する。
【００４３】
重み付け係数Ｗ（ｔ）は、後述する判定値を算出する場合に用いられる係数である。図６は、重み付け係数Ｗ（ｔ）の一例を示す図である。図６において、横軸は時間に対応し、縦軸は重み付け係数に対応する。重み付け係数Ｗ（ｔ）は、現在時刻を基準に、各時刻の重み付け係数Ｗ（ｔ）の値が設定される。重み付け係数Ｗ（ｔ）の値は、現在時刻ｔ１０において最大となり、現在時刻よりも前の時刻になるほど、値が小さくなる。
【００４４】
比較対象時間は、後述する相関係数を算出する場合に比較するメディアストリームの比較対象時間を示す情報である。例えば、比較対象時間を「１０ｓ」とする。利用者は、入力部１２０を操作して、比較対象時間を適宜設定変更しても良い。
【００４５】
監視間隔は、後述するリクエスト処理部１５１が、キープアライブリクエストを送信する時間間隔を示す情報である。例えば、監視間隔を「１ｓ」とする。利用者は、入力部１２０を操作して、監視間隔を適宜設定変更しても良い。
【００４６】
制御部１５０は、リクエスト処理部１５１と、格納処理部１５２と、判定部１５３と、切替部１５４と、ストリーム処理部１５５とを有する。制御部１５０は、ＣＰＵやＭＰＵなどによって実現できる。また、制御部１５０は、ＡＳＩＣやＦＰＧＡなどのハードワイヤードロジックによっても実現できる。
【００４７】
リクエスト処理部１５１は、ネットワーク６０を介して、音声デバイス５０との間で、キープアライブリクエスト、キープアライブレスポンス等の送受信を行う処理部である。例えば、リクエスト処理部１５１は、音声デバイス５０から接続要求を受け付けると、接続要求元の音声デバイス５０に対して、キープアライブリクエストを送信する。
【００４８】
リクエスト処理部１５１は、キープアライブリクエストの送信先となる音声デバイス５０から、キープアライブレスポンスを受信する。リクエスト処理部１５１は、キープアライブレスポンスに含まれる識別情報と、位置データ５３ｂとを取得し、識別情報をキーにして、位置データ５３ｂを、デバイステーブル１４２に格納する。
【００４９】
リクエスト処理部１５１は、監視間隔毎に、各音声デバイス５０に対してキープアライブリクエストを送信し、キープアライブレスポンスを受信する処理を実行し、デバイステーブル１４２の位置データを更新する。なお、リクエスト処理部１５１が、キープアライブリクエストを送信し、送信先の音声デバイス５０からキープアライブレスポンスを受信しない場合には、送信先の音声デバイス５０に障害が発生したと判定する。リクエスト処理部１５１は、障害の発生した音声デバイス５０の識別情報を、判定部１５３に出力する。
【００５０】
格納処理部１５２は、各音声デバイス５０からメディアストリームをリアルタイムに受信し、受信したメディアストリームをバッファ１４１に格納する処理部である。図４に示すように、格納処理部１５２は、メディアストリームに含まれる識別情報をキーにして、各音声デバイス５０から送信される各メディアストリームを区別して、バッファ１４１に格納する。
【００５１】
判定部１５３は、音声デバイス５０のいずれかに障害が発生した場合に、障害の発生した音声デバイス５０と相関性のある音声デバイス５０を判定する処理部である。判定部１５３に関する以下の説明では、障害の発生した音声デバイス５０を採用デバイスとして説明を行う。
【００５２】
判定部１５３は、障害の発生の有無にかかわらず、採用デバイスの時刻ｔ１０を起点とした比較対象時間のメディアストリームと、音声デバイス５０の時刻ｔ１０を起点とした比較対象時間のメディアストリームとの相関係数を算出する。
【００５３】
例えば、比較対象時間を１０ｓとすると、相関係数を算出するために比較するメディアストリームは、ｔ１０−１０ｓ〜ｔ１０のメディアストリームとなる。時刻ｔ１０は、現在時刻となる。判定部１５３は、採用デバイスの時刻ｔ１０を起点とした比較対象時間のメディアストリームと、音声デバイス５０の時刻ｔ１０を起点とした比較対象時間のメディアストリームとを、バッファ１４１から取得する。
【００５４】
判定部１５３は、時間経過と共に、時刻ｔ１０を起点とした比較対象時間のメディアストリームの相関係数を算出し、該当する音声デバイス５０のレコードの相関係数リストに、相関係数を格納する。以下の説明では適宜、時刻ｔ１０を起点とした比較対象時間のメディアストリームの相関係数を、時刻ｔの相関係数Ｆｎ（ｔ）と表記する。
【００５５】
図７は、相関係数Ｆｎ（ｔ）の一例を示す図である。図７に示す例では、採用デバイスを音声デバイス５０ａとした場合の、採用デバイスと各音声デバイス５０ｂ〜５０ｅとの相関係数の一例を示す図である。図７において、横軸は時間に対応し、縦軸は相関係数の値に対応する。
【００５６】
また、判定部１５３は、障害の発生の有無にかかわらず、採用デバイスと、他の音声デバイス５０との距離を算出し、算出した距離データを、デバイステーブル１４２に格納する。
【００５７】
判定部１５３は、採用デバイスに障害が発生した場合には、採用デバイスと、他の音声デバイス５０との判定値をそれぞれ算出する。判定部１５３は、判定値が最大となる採用デバイスと音声デバイス５０との組を特定し、特定した組の音声デバイス５０を、採用デバイスと相関性のある音声デバイス５０として特定する。判定部１５３は、障害の発生した採用デバイスの識別情報と、採用デバイスと関連性のある音声デバイス５０の識別情報とを、切替部１５４に出力する。
【００５８】
例えば、判定部１５３は、式（１）に基づいて判定値を算出する。式（１）において、Ｆｎ（ｔ）は、時刻ｔの相関係数を示すものである。時刻ｔは、ｔ１〜ｔ１０の値を取る。Ｗ（ｔ）は、ある時刻ｔの重み付け係数であり、図６に示すものとなる。
【００５９】
【数１】
2018129702.tif 000003
【００６０】
なお、判定部１５３は、採用デバイスと相関性のある音声デバイスを判定する場合に、採用デバイスとの距離が閾値未満となる音声デバイスを特定し、特定した音声デバイスに対して、上記判定値を算出しても良い。
【００６１】
切替部１５４は、障害の発生した採用デバイスの識別情報と相関性のある音声デバイス５０の識別情報を受け付けた場合に、採用デバイスから取得するべきメディアストリームを、相関性のある音声デバイス５０のメディアストリームに切り替える処理部である。切替部１５４は、取得部の一例である。
【００６２】
例えば、時刻ｔにおいて、採用デバイスに障害が発生し、かかる採用デバイスと相関性のある音声デバイスを音声デバイス５０ｃとする。この場合には、切替部１５４は、時刻ｔ以降のメディアストリームを、採用デバイスの代わりに、音声デバイス５０ｃからのメディアストリームに切り替える切替命令を、格納処理部１５２に出力する。例えば、切替命令には、障害の発生した採用デバイスの識別情報と、相関性のある音声デバイスの識別情報とが含まれる。
【００６３】
格納処理部１５２は、切替命令を受け付けると、切替命令に基づいて、バッファ１４１にメディアストリームを格納する。例えば、障害の発生した採用デバイスを音声デバイス５０ａとし、音声デバイス５０ａと関連性のある音声デバイス５０を音声デバイス５０ｃとする。この場合には、格納処理部１５２は、音声デバイス５０ａに対応するメディアストリームとして、音声デバイス５０ｃから受信するメディアストリームをバッファ１４１に格納する。
【００６４】
ストリーム処理部１５５は、バッファ１４１に格納された音声デバイス５０のメディアストリームに対して、ストリーム処理を実行する処理部である。ストリーム処理部１５５は、処理結果を表示部１３０に表示しても良いし、外部装置に処理結果を通知しても良い。
【００６５】
ところで、上述した各処理部１５１〜１５５の説明では、採用デバイスを音声デバイス５０ａとして説明したが、採用デバイスは、他の音声デバイス５０ｂ〜５０ｅのいずれの音声デバイス５０であっても良い。また、各処理部１５１〜１５５は、各音声デバイス５０ａ〜５０ｅをそれぞれ採用デバイスとし、並列的に、上記処理を実行しても良い。
【００６６】
次に、本実施例に係るサーバ１００の処理手順の一例について説明する。図８は、サーバが接続要求を受け付けた場合の処理手順を示すフローチャートである。図８に示すように、サーバ１００のリクエスト処理部１５１は、音声デバイス５０から接続要求を受け付ける（ステップＳ１０１）。リクエスト処理部１５１は、デバイステーブル１４２に、音声デバイス５０の行を追加する（ステップＳ１０２）。
【００６７】
リクエスト処理部１５１は、音声デバイス５０にキープアライブリクエストを送信する（ステップＳ１０３）。リクエスト処理部１５１は、音声デバイス５０からキープアライブレスポンスを受信する（ステップＳ１０４）。
【００６８】
リクエスト処理部１５１は、音声デバイス５０から受信したキープアライブレスポンスに位置データが格納されている場合に、位置データをデバイステーブル１４２に格納する（ステップＳ１０５）。
【００６９】
図９は、音声デバイスと接続中のサーバの処理手順を示すフローチャートである。サーバ１００は、図９のステップＳ２０１〜Ｓ２１０に示す処理を、監視間隔毎に繰り返し実行する。図９に示すように、サーバ１００の格納処理部１５２は、メディアストリームを受信し、バッファ１４１に格納する（ステップＳ２０１）。サーバ１００のリクエスト処理部１５１は、各音声デバイス５０にキープアライブリクエストを送信する（ステップＳ２０２）。リクエスト処理部１５１は、各音声デバイス５０からキープアライブレスポンスを受信したか否かを判定する（ステップＳ２０３）。
【００７０】
リクエスト処理部１５１は、キープアライブレスポンスを受信しない場合には（ステップＳ２０４，Ｎｏ）、切り替え処理を実行する（ステップＳ２０５）。
【００７１】
一方、リクエスト処理部１５１は、キープアライブレスポンスを受信した場合には（ステップＳ２０４，Ｙｅｓ）、音声デバイス毎に位置データをデバイステーブル１４２に格納する（ステップＳ２０６）。
【００７２】
サーバ１００の判定部１５３は、採用デバイスの位置データと他の音声デバイス５０の位置データとを基にして、採用デバイスと他の音声デバイスとの距離を算出する（ステップＳ２０７）。判定部１５３は、音声デバイス毎に、距離データをデバイステーブル１４２に格納する（ステップＳ２０８）。
【００７３】
判定部１５３は、採用デバイスと他の各音声デバイス５０との相関係数を算出する（ステップＳ２０９）。判定部１５３は、相関係数をデバイステーブル１４２に格納する（ステップＳ２１０）。
【００７４】
続いて、図９のステップＳ２０５に示した切り替え処理の一例について説明する。ここでは、２種類の切り替え処理について説明する。図１０は、切り替え処理の一例を示すフローチャート（１）である。図１０に示すように、サーバ１００の判定部１５３は、採用デバイスと最も類似する音声デバイス５０を判定する（ステップＳ３０１）。ステップＳ３０１において、判定部１５３は、採用デバイスと音声デバイス５０との判定値をそれぞれ算出し、判定値が最大となる採用デバイスと音声デバイス５０との組を特定する。判定部１５３は、特定した組に含まれる音声デバイス５０を、採用デバイスと最も類似する音声デバイス５０とする。
【００７５】
サーバ１００の切替部１５４は、判定された音声デバイス５０のメディアストリームを、採用デバイスの後段処理の入力に設定する（ステップＳ３０２）。
【００７６】
図１１は、切り替え処理の一例を示すフローチャート（２）である。図１１に示すように、サーバ１００の判定部１５３は、採用デバイスと最も類似する音声デバイス５０を判定する（ステップＳ４０１）。判定部１５３は、採用デバイスと最も類似する音声デバイスとの距離を算出する（ステップＳ４０２）。
【００７７】
判定部１５３は、距離データが閾値未満であるか否かを判定する（ステップＳ４０３）。判定部１５３は、距離データが閾値未満でない場合には（ステップＳ４０３，Ｎｏ）、処理を終了する。一方、距離データが閾値未満である場合には（ステップＳ４０３，Ｙｅｓ）、サーバ１００の切替部１５４は、判定された音声デバイス５０のメディアストリームを、採用デバイスの後段処理の入力に設定する（ステップＳ４０４）。
【００７８】
なお、図１１に示す例では、採用デバイスと最も類似する音声デバイス５０を判定した後に、距離データと閾値データとを比較していたが、これに限定されるものではない。例えば、判定部１５３は、距離データが閾値未満となる音声デバイスを、各音声デバイス５０の中から絞り込んだ後に、採用デバイスと最も類似する音声デバイス５０を判定しても良い。
【００７９】
次に、本実施例のシステムの処理手順の一例について説明する。図１２は、音声デバイスがサーバに接続する場合のシステムの処理手順を示すフローチャートである。ここでは一例として、音声デバイス５０ａが、サーバ１００に接続する場合について説明する。音声デバイス５０ｂ〜５０ｅがサーバ１００に接続する処理は、図１２に示す処理と同様である。
【００８０】
図１２に示すように、音声デバイス５０ａは、サーバ１００に接続依頼を送信する（ステップＳ１０）。サーバ１００は、音声デバイス５０ａの行をデバイステーブル１４２に追加する（ステップＳ１１）。
【００８１】
サーバ１００は、キープアライブリクエストを音声デバイス５０ａに送信する（ステップＳ１２）。音声デバイス５０ａは、位置を算出し（ステップＳ１３）、サーバ１００にキープアライブレスポンスを送信する（ステップＳ１４）。
【００８２】
サーバ１００は、デバイステーブル１４２に位置データを格納する（ステップＳ１５）。音声デバイス５０ａは、メディアストリームの送信を開始する（ステップＳ１６）。
【００８３】
サーバ１００は、メディアストリームの蓄積を開始し（ステップＳ１７）、ストリーム処理を開始する（ステップＳ１８）。
【００８４】
各音声デバイス５０と、サーバ１００とが図１２に示す処理を実行することで、サーバ１００のデバイステーブル１４２は、図１３に示すものとなる。図１３は、デバイステーブルの一例を示す図（１）である。
【００８５】
図１４は、音声デバイスとサーバとが接続している間のシステムの処理手順を示すフローチャートである。図１４では一例として、音声デバイス５０ａが、サーバ１００と接続している場合の処理について説明する。音声デバイス５０ｂ〜５０ｅがサーバ１００と接続している場合の処理は、図１４に示す処理と同様である。図１４において、ステップＳ２３〜Ｓ２８に示す処理は、監視間隔毎に繰り返し実行される。
【００８６】
図１４に示すように、音声デバイス５０ａは、定常的にメディアストリームをサーバ１００に送信する（ステップＳ２０）。サーバ１００はメディアストリームを蓄積し（ステップＳ２１）、ストリーム処理を実行する（ステップＳ２２）。
【００８７】
サーバ１００は、キープアライブリクエストを音声デバイス５０ａに送信する（ステップＳ２３）。音声デバイス５０ａは、位置を算出し（ステップＳ２４）、キープアライブレスポンスをサーバ１００に送信する（ステップＳ２５）。
【００８８】
サーバ１００は、デバイステーブル１４２に位置データを格納する（ステップＳ２６）。サーバ１００は、各音声デバイスの相関係数を算出し（ステップＳ２７）、デバイステーブル１４２に相関係数を格納する（ステップＳ２８）。
【００８９】
各音声デバイス５０と、サーバ１００とが図１４に示す処理を実行することで、サーバ１００のデバイステーブル１４２は、図１５に示すものとなる。図１５は、デバイステーブルの一例を示す図（２）である。図１３に示したデバイステーブル１４２と比較して、図１５に示したデバイステーブル１４２には、相関係数リストに相関係数が格納されている。
【００９０】
図１６は、音声デバイスに障害が発生した場合のシステムの処理手順を示すフローチャートである。図１６では一例として、音声デバイス（採用デバイス）５０ａに障害が発生したものとする。
【００９１】
図１６に示すように、サーバ１００はデバイステーブル１４２の相関係数リストを取得する（ステップＳ３０）。サーバ１００は、障害の発生した音声デバイス５０ａに関する各音声デバイス５０の判定値を算出する（ステップＳ３１）。
【００９２】
例えば、図１５に示した相関係数リストを用いると、式（１）に基づき、音声デバイス５０ｂの判定値Ａ１および音声デバイス５０ｃの判定値Ａ２は、下記のようになる。他の音声デバイスの判定値の説明は省略すると、音声デバイス５０ｃの判定値Ａ２が最大となる。なお、重み付け係数Ｗ（ｔ）を、下記に示すものとする。
【００９３】
判定値A1=0.4*0.1+0.3*0.2+0.5*0.3+0.4*0.4+0.4*0.5+0.5*0.6+0.3*0.7+0.2*0.8+0.4*0.9+0.4*1.0=1.74
判定値A2=0.8*0.1+0.7*0.2+0.8*0.3+0.8*0.4+0.8*0.5+0.6*0.6+0.8*0.7+0.8*0.8*0.7*0.9+0.7*1.0=4.07
重み付け係数W(t)=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]
【００９４】
サーバ１００は、上記の判定値の算出結果に基づいて、音声デバイス５０ａのメディアストリームの代わりに、音声デバイス５０ｃのメディアストリームを利用すると判定する（ステップＳ３２）。サーバ１００は、音声デバイス５０ｃに、音声デバイス５０ａのメディアストリームとして流用する旨の通知を行う（ステップＳ３３）。
【００９５】
音声デバイス５０ｃは、メディアストリームを送信する（ステップＳ３４）。サーバ１００は、音声デバイス５０ａのメディアストリームとして、音声デバイス５０ｃのメディアストリームを取得し、メディアストリームの蓄積を継続し（ステップＳ３５）、ストリーム処理を継続する（ステップＳ３６）。
【００９６】
次に、本実施例に係るサーバ１００の効果について説明する。サーバ１００は、複数の音声デバイス５０からメディアストリームをそれぞれ受信し、ある音声デバイス５０からの通信が途絶えた場合に、通信が途絶えた音声デバイス５０と他の音声デバイス５０との相関性を判定する。そして、サーバ１００は、判定結果を基にして相関性のある音声デバイス５０からのメディアストリームを、通信の途絶えた音声デバイス５０からのメディアストリームとして取得する。これにより、継続的なストリーム処理を実現することができる。
【００９７】
サーバ１００は、通信が途絶えた音声デバイス５０について、他の音声デバイスとの判定値を算出し、判定値が最大となる音声デバイス５０から、通信の途絶えた音声デバイス５０の代わりとなるメディアストリームを受信する。このため、通知が途絶えた音声デバイス５０と類似性のある他の音声デバイスを適切に判定することができる。
【００９８】
サーバ１００は、通信の途絶えた音声デバイス５０の代わりとなる他の音声デバイス５０を、通信の途絶えた音声デバイス５０との距離が閾値未満となる音声デバイス５０から判定する。距離の離れた音声デバイス５０は、通信の途絶えた音声デバイス５０との類似性が低いと考えられるため、上記処理を実行することで、効率的に、代わりに音声デバイス５０を選択することができる。
【００９９】
サーバ１００は、判定値を算出する場合に、重み付け係数Ｗ（ｔ）を用いる。このため、どの時刻に重きを置いて、類似性を判定するのかを、適宜調整可能となる。例えば、図６に示すように、現在時刻に近い重み付け係数Ｗ（ｔ）をより大きくすることで、現在時刻に近い相関係数の影響を大きくすることができる。なお、重み付け係数Ｗ（ｔ）は、図６のものに限られず、適宜調整可能であり、例えば、現在時刻よりも、過去の時刻の重み付け係数Ｗ（ｔ）の値を大きく設定しても良い。
【０１００】
次に、上記実施例に示したサーバ１００と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図１７は、サーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【０１０１】
図１７に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る読み取り装置２０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置２０５とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０６と、ハードディスク装置２０７とを有する。そして、各装置２０１〜２０７は、バス２０８に接続される。
【０１０２】
ハードディスク装置２０７は、リクエスト処理プログラム２０７ａ、格納処理プログラム２０７ｂ、判定プログラム２０７ｃ、切替プログラム２０７ｄ、ストリーム処理プログラム２０７ｅを格納する。ＣＰＵ２０１は、各プログラム２０７ａ〜２０７ｅを読み出して、ＲＡＭ２０６に展開する。
【０１０３】
リクエスト処理プログラム２０７ａは、リクエスト処理プロセス２０６ａとして機能する。格納処理プログラム２０７ｂは、格納処理プロセス２０６ｂとして機能する。判定プログラム２０７ｃは、判定プロセス２０６ｃとして機能する。切替プログラム２０７ｄは、切替プロセス２０６ｄとして機能する。ストリーム処理プログラム２０７ｅは、ストリーム処理プロセス２０６ｅとして機能する。
【０１０４】
リクエスト処理プロセス２０６ａの処理は、リクエスト処理部１５１の処理に対応する。格納処理プロセス２０６ｂの処理は、格納処理部１５２の処理に対応する。判定プロセス２０６ｃの処理は、判定部１５３の処理に対応する。切替プロセス２０６ｄの処理は、切替部１５４の処理に対応する。ストリーム処理プロセス２０６ｅの処理は、ストリーム処理部１５５の処理に対応する。
【０１０５】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１０６】
（付記１）第１端末及び第２端末からメディアストリームを取得し、前記第１端末及び前記第２端末から取得した各メディアストリームに関する情報を記憶部に格納する格納処理部と、
前記第１端末及び前記第２端末に対し、端末情報を所定期間毎に要求し、前記第１端末から前記要求に対する応答を受信し、前記第２端末から前記要求に対する応答を受信しない場合に、前記記憶部に格納された各メディアストリームに関する情報の相関性を判定する判定部と、
各メディアストリームに関する情報に相関性があると判定された場合に、前記第２端末から取得すべきメディアストリームを、前記第１端末から取得する取得部と
を有することを特徴とするサーバ。
【０１０７】
（付記２）前記格納処理部は、複数の第１端末及び第２端末からメディアストリームを取得し、取得した各メディアストリームに関する情報を記憶部に格納し、前記判定部は、前記複数の第１端末の各メディアストリームと、第２端末のメディアストリームとの相関係数をそれぞれ算出し、算出した各相関係数のうち、最大の相関係数となる各メディアストリームの取得先となる第１端末と第２端末との組を判定し、前記取得部は、前記判定された組の第１端末からメディアストリームを取得することを特徴とする付記１に記載のサーバ。
【０１０８】
（付記３）前記判定部は、前記第２端末からの距離が所定距離未満となる複数の第１端末の各メディアストリームと、第２端末のメディアストリームとの相関係数をそれぞれ算出し、算出した各相関係数のうち、最大の相関係数となる各メディアストリームの取得先となる第１端末と第２端末との組を判定することを特徴とする付記２に記載のサーバ。
【０１０９】
（付記４）前記第１端末のメディアストリームおよび前記第２端末のメディアストリームは各時刻と対応付けられ、前記判定部は、時刻毎に値の異なる重み付け係数を利用して、前記第１端末のメディアストリームと、前記第２端末のメディアストリームとの相関係数を算出することを特徴とする付記１、２または３に記載のサーバ。
【０１１０】
（付記５）コンピュータが実行する通信方法であって、
第１端末及び第２端末からメディアストリームを取得し、前記第１端末及び前記第２端末から取得した各メディアストリームに関する情報を記憶装置に格納し、
前記第１端末及び前記第２端末に対し、端末情報を所定期間毎に要求し、前記第１端末から前記要求に対する応答を受信し、前記第２端末から前記要求に対する応答を受信しない場合に、前記記憶装置に格納された各メディアストリームに関する情報の相関性を判定し、
各メディアストリームに関する情報に相関性があると判定された場合に、前記第２端末から取得すべきメディアストリームを、前記第１端末から取得する
処理を実行することを特徴とする通信方法。
【０１１１】
（付記６）前記格納する処理は、複数の第１端末及び第２端末からメディアストリームを取得し、取得した各メディアストリームに関する情報を記憶部に格納し、前記判定する処理は、前記複数の第１端末の各メディアストリームと、第２端末のメディアストリームとの相関係数をそれぞれ算出し、算出した各相関係数のうち、最大の相関係数となる各メディアストリームの取得先となる第１端末と第２端末との組を判定し、前記取得する処理は、前記判定された組の第１端末からメディアストリームを取得することを特徴とする付記５に記載の通信方法。
【０１１２】
（付記７）前記判定する処理は、前記第２端末からの距離が所定距離未満となる複数の第１端末の各メディアストリームと、第２端末のメディアストリームとの相関係数をそれぞれ算出し、算出した各相関係数のうち、最大の相関係数となる各メディアストリームの取得先となる第１端末と第２端末との組を判定することを特徴とする付記６に記載の通信方法。
【０１１３】
（付記８）前記第１端末のメディアストリームおよび前記第２端末のメディアストリームは各時刻と対応付けられ、前記判定する処理は、時刻毎に値の異なる重み付け係数を利用して、前記第１端末のメディアストリームと、前記第２端末のメディアストリームとの相関係数を算出することを特徴とする付記５、６または７に記載の通信方法。
【符号の説明】
【０１１４】
５０ａ，５０ｂ，５０ｃ，５０ｄ，５０ｅ  音声デバイス
１００  サーバ
【図１】
2018129702.tif 000004
【図２】
2018129702.tif 000005
【図３】
2018129702.tif 000006
【図４】
2018129702.tif 000007
【図５】
2018129702.tif 000008
【図６】
2018129702.tif 000009
【図７】
2018129702.tif 000010
【図８】
2018129702.tif 000011
【図９】
2018129702.tif 000012
【図１０】
2018129702.tif 000013
【図１１】
2018129702.tif 000014
【図１２】
2018129702.tif 000015
【図１３】
2018129702.tif 000016
【図１４】
2018129702.tif 000017
【図１５】
2018129702.tif 000018
【図１６】
2018129702.tif 000019
【図１７】
2018129702.tif 000020
【図１８】
2018129702.tif 000021