(57)【要約】【課題】ネットワークを介して送受信する音データのエンコード条件を変更することなく再生する音声の欠落を防ぐことができる音データ通信プログラム、端末装置および音データ通信方法を提供する。【解決手段】会議端末のＣＰＵは、マイクから収音した音声の音データをエンコーダで１単位時間ごとに区切って圧縮した圧縮音データを送信バッファに記憶する。ＣＰＵは結合時間分の圧縮音データを結合して他の会議端末に送信する。ネットワークの帯域幅が狭くなり、送信バッファのデータ量が１単位時間より大きくなった場合、ＣＰＵは結合時間を１単位時間分増加して送信回数を減らし、ヘッダのデータ量を削減することで必要な帯域幅を減らしてパケットロスを防止する。送信バッファのデータ量が１単位時間以下の場合、結合時間を１単位時間分減少して送信回数を増やし、音声再生の遅延を防止する。【選択図】図３
2015106794.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続し、各種データの送受信を相互に行うことで遠隔会議を実行可能な複数の端末装置のうちの１の端末装置のコンピュータが実行可能なプログラムであって、
前記１の端末装置のコンピュータに、
前記１の端末装置に接続されたマイクを介して取得された音データを、予め設定された圧縮パラメータに従って圧縮し、圧縮音データを生成する生成ステップと、
前記生成ステップにおいて生成された前記圧縮音データを生成順に、前記１の端末装置が備える記憶装置に記憶する記憶ステップと、
前記記憶装置に記憶されている前記圧縮音データのデータ量を表す第一記憶量を取得する取得ステップと、
前記取得ステップにおいて取得された前記第一記憶量に基づく値である記憶値が、所定のしきい値より大きいか否かを判断する判断ステップと、
前記判断ステップにおける判断の結果、前記記憶値が前記しきい値より大きい場合、前記圧縮音データを結合する時間を指定する結合時間を第一結合時間に設定し、前記記憶値が前記しきい値以下である場合、前記結合時間を前記第一結合時間より短い第二結合時間に設定する設定ステップと、
前記記憶ステップにおいて前記記憶装置に記憶された前記圧縮音データを、前記設定ステップにおいて設定された前記結合時間に応じた時間数分、逐次取り出して結合し、結合音データを生成する結合ステップと、
前記結合ステップにおいて生成された前記結合音データを、他の端末装置に対して送信する指示を行う送信指示ステップと
を実行させることを特徴とする音データ通信プログラム。
【請求項２】
前記取得ステップにおいて取得された前記第一記憶量と、前記取得ステップにおいて前記第一記憶量よりも後に取得された第二記憶量との差に基づく第一変化量を、前記記憶値として演算する演算ステップをさらに実行させることを特徴とする請求項１に記載の音データ通信プログラム。
【請求項３】
前記設定ステップは、前記演算ステップにおいて演算される前記第一変化量の絶対値よりも、前記結合時間に応じて送信回数が変化することによって前記結合音データのそれぞれに付加される送信ヘッダのデータ量における変化の総量である第二変化量の絶対値が大きく、且つ、前記第一変化量と前記第二変化量との差分の絶対値が最小となる値に前記結合時間を設定することを特徴とする請求項２に記載の音データ通信プログラム。
【請求項４】
前記複数の端末装置が接続され、前記１の端末装置が前記他の端末装置に送信する前記結合音データを中継する中継サーバに、前記中継サーバの記憶装置に記憶される前記１の端末装置から送信された前記結合音データの結合が解除された前記圧縮音データのデータ量を表す第三記憶量を問い合わせる要求信号を送信する送信ステップと、
前記要求信号の送信に応じて、前記第三記憶量を通知する回答信号を前記中継サーバから受信する受信ステップと
をさらに実行させ、
前記記憶値は、前記第一記憶量と前記第三記憶量との合計量に基づく値であることを特徴とする請求項１から３のいずれかに記載の音データ通信プログラム。
【請求項５】
ネットワークを介して接続し、各種データの送受信を相互に行うことで遠隔会議を実行可能な複数の端末装置のうちの１の端末装置のコンピュータが実行可能なプログラムであって、
前記１の端末装置のコンピュータに、
前記１の端末装置に接続されたマイクを介して取得された音データを、予め設定された圧縮パラメータに従って圧縮し、且つ、前記音データを結合する時間を指定する結合時間に応じた時間数分、前記音データを結合して、圧縮済みの結合音データを生成する結合ステップと、
前記結合ステップにおいて生成された前記結合音データを、前記１の端末装置が備える記憶装置に記憶する記憶ステップと、
前記記憶ステップにおいて前記記憶装置に記憶された前記結合音データを、他の端末装置に対して送信する指示を行う送信指示ステップと、
前記記憶装置に記憶されている前記結合音データのデータ量を表す第一記憶量を取得する取得ステップと、
前記取得ステップにおいて取得された前記第一記憶量に基づく値である記憶値が、所定のしきい値より大きいか否かを判断する判断ステップと、
前記判断ステップにおける判断の結果、前記記憶値が前記しきい値より大きい場合、前記結合時間を第一結合時間に設定し、前記記憶値が前記しきい値以下である場合、前記結合時間を前記第一結合時間より短い第二結合時間に設定する設定ステップと
を実行させることを特徴とする音データ通信プログラム。
【請求項６】
ネットワークを介して接続し、各種データの送受信を相互に行うことで遠隔会議を実行可能な複数の端末装置のうちの１の端末装置であって、
前記１の端末装置に接続されたマイクを介して取得された音データを、予め設定された圧縮パラメータに従って圧縮し、圧縮音データを生成する生成手段と、
前記生成手段が生成した前記圧縮音データを生成順に記憶する記憶装置と、
前記記憶装置が記憶する前記圧縮音データのデータ量を表す第一記憶量を取得する取得手段と、
前記取得手段が取得した前記第一記憶量に基づく値である記憶値が、所定のしきい値より大きいか否かを判断する判断手段と、
前記判断手段の判断結果に基づいて、前記記憶値が前記しきい値より大きい場合、前記圧縮音データを結合する時間を指定する結合時間を第一結合時間に設定し、前記記憶値が前記しきい値以下である場合、前記結合時間を前記第一結合時間より短い第二結合時間に設定する設定手段と、
前記記憶装置が記憶する前記圧縮音データを、前記設定手段が設定した前記結合時間に応じた時間数分、逐次取り出して結合し、結合音データを生成する結合手段と、
前記結合手段が生成した前記結合音データを、他の端末装置に対して送信する指示を行う送信指示手段と
を備えたことを特徴とする端末装置。
【請求項７】
ネットワークを介して接続し、各種データの送受信を相互に行うことで遠隔会議を実行可能な複数の端末装置のうちの１の端末装置のコンピュータが実行可能な音データ通信方法であって、
前記１の端末装置に接続されたマイクを介して取得された音データを、予め設定された圧縮パラメータに従って圧縮し、圧縮音データを生成する生成ステップと、
前記生成ステップにおいて生成された前記圧縮音データを生成順に、前記１の端末装置が備える記憶装置に記憶する記憶ステップと、
前記記憶装置に記憶されている前記圧縮音データのデータ量を表す第一記憶量を取得する取得ステップと、
前記取得ステップにおいて取得された前記第一記憶量に基づく値である記憶値が、所定のしきい値より大きいか否かを判断する判断ステップと、
前記判断ステップにおける判断の結果、前記記憶値が前記しきい値より大きい場合、前記圧縮音データを結合する時間を指定する結合時間を第一結合時間に設定し、前記記憶値が前記しきい値以下である場合、前記結合時間を前記第一結合時間より短い第二結合時間に設定する設定ステップと、
前記記憶ステップにおいて前記記憶装置に記憶された前記圧縮音データを、前記設定ステップにおいて設定された前記結合時間に応じた時間数分、逐次取り出して結合し、結合音データを生成する結合ステップと、
前記結合ステップにおいて生成された前記結合音データを、他の端末装置に対して送信する指示を行う送信指示ステップと
を含むことを特徴とする音データ通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して音データを通信することができる音データ通信プログラム、端末装置および音データ通信方法に関する。
【背景技術】
【０００２】
従来、ネットワークを介してパーソナルコンピュータ（ＰＣ）等、複数の端末装置を接続し、音データの送受信を相互に行って音声による会議を行うシステムが知られている。例えば特許文献１が開示する音声データ送受信システムでは、発信側の端末装置は、集音した音声を逐次エンコードした音声データパケットを所定の一定間隔（２０ｍｓ）で通信回線に送出する。受信側の端末装置は、受信した音声データパケットを逐次格納する受信側メモリから所定の一定間隔で取り出し、デコードして音声を再生する。
【０００３】
また、特許文献２が開示する通信システムでは、クライアント装置は、サーバ装置からストリーミング・メディアを受信する通信回線の帯域幅を監視し、帯域幅が変化した場合、ストリーミング・メディアの送信ビットレートを適応させる要求をサーバ装置に送信する。サーバ装置は、要求に従って送信ビットレートを適応させたストリーミング・メディアをクライアント装置に送信する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−３４９８２４号公報
【特許文献２】特表２００６−５００８０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では、通信回線にジッタが生じたり帯域幅が変動した場合、受信側の端末装置は、音声データパケットの受信においてタイムアウトする場合がある。この場合に発信側の端末装置は、タイムアウトした音声データパケットの再送処理を行う。受信側の端末装置は、音声データパケットを所定の一定間隔でデコードして音声を再生するため、音声データパケットの受信において生じた遅延が積み重なって大きくなると、遅延解消のため再生する音声に欠落を生ずる可能性があった。
【０００６】
また、特許文献２では、送信ビットレートの変更によって遅延の蓄積が防止されるので、音声の欠落は生じにくくなる。しかし、クライアント装置がサーバ装置から受信するストリーミング・メディアに含まれる音声の音質は、本来の音質とは異なる音質になってしまう可能性があった。さらに、サーバ装置は、送信ビットレートを下げるため、ストリーミング・メディアに含まれる画像のいくつかのフレームをスキップして送信する処理を行い、コンテンツそのものを変更してしまう場合もあった。加えて、サーバ装置は、送信ビットレートを変更する場合にストリーミング・メディアのエンコード条件を変更するためエンコーダを初期化しなければならず、初期化に時間がかかってストリーミング・メディアの送信に遅延を生ずる可能性があった。
【０００７】
本発明は、ネットワークを介して送受信する音データのエンコード条件を変更することなく再生する音声の欠落を防ぐことができる音データ通信プログラム、端末装置および音データ通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第一態様によれば、ネットワークを介して接続し、各種データの送受信を相互に行うことで遠隔会議を実行可能な複数の端末装置のうちの１の端末装置のコンピュータが実行可能なプログラムであって、前記１の端末装置のコンピュータに、前記１の端末装置に接続されたマイクを介して取得された音データを、予め設定された圧縮パラメータに従って圧縮し、圧縮音データを生成する生成ステップと、前記生成ステップにおいて生成された前記圧縮音データを生成順に、前記１の端末装置が備える記憶装置に記憶する記憶ステップと、前記記憶装置に記憶されている前記圧縮音データのデータ量を表す第一記憶量を取得する取得ステップと、前記取得ステップにおいて取得された前記第一記憶量に基づく値である記憶値が、所定のしきい値より大きいか否かを判断する判断ステップと、前記判断ステップにおける判断の結果、前記記憶値が前記しきい値より大きい場合、前記圧縮音データを結合する時間を指定する結合時間を第一結合時間に設定し、前記記憶値が前記しきい値以下である場合、前記結合時間を前記第一結合時間より短い第二結合時間に設定する設定ステップと、前記記憶ステップにおいて前記記憶装置に記憶された前記圧縮音データを、前記設定ステップにおいて設定された前記結合時間に応じた時間数分、逐次取り出して結合し、結合音データを生成する結合ステップと、前記結合ステップにおいて生成された前記結合音データを、他の端末装置に対して送信する指示を行う送信指示ステップとを実行させることを特徴とする音データ通信プログラムが提供される。
【０００９】
ネットワークにジッタが生じたり帯域幅が狭くなったりすると、１の端末装置は、他の端末装置に送信する１つの結合音データを送信し終えるまでに時間がかかるようになる。このため、記憶装置に記憶される圧縮音データのデータ量が増える。１の端末装置は、音データ通信プログラムの実行に従って、記憶装置のデータ量に応じて圧縮音データの結合時間を変更することで、一度に送信する結合音データのデータ量を調整することができる。記憶装置のデータ量がしきい値より大きい場合、記憶装置は、記憶する圧縮音データのデータ量が増えている状態である。この場合に１の端末装置は、圧縮音データの結合時間を第一結合時間に延ばすことで、結合音データの送信回数を減らすことができる。これにより、１の端末装置は、送信回数を減らした分、個々の結合音データの送信に必要な送信ヘッダを削減することができるので、音データのエンコード条件を変更することなくパケット欠落を防いで、結合音データを他の端末装置に送信でき、記憶装置のデータ量を減らすことができる。
【００１０】
また、記憶装置のデータ量がしきい値以下である場合、１の端末装置は、データ送信に必要な帯域幅をネットワークに確保できている状態である。この場合に１の端末装置は、圧縮音データの結合時間を第二結合時間に減らすことで、結合音データの送信回数を増やすことができる。これにより、他の端末装置は、音データを、より小さな時間単位で得ることができるので、１の端末装置における音データの入力と、他の端末装置における音データの出力との関係において、歪みが小さく円滑なリニア性を確保することができる。また、一回に送受信される音データの時間単位が小さいほど、１の端末装置における圧縮音データの結合にかかる時間、結合音データの送受信にかかる時間、他の端末装置における結合音データのデコードから出力にかかる時間等は、短い。ゆえに、端末装置は、１の端末装置における音データの入力タイミングと、他の端末装置における音データの出力タイミングとの間に生ずる遅延時間を削減することができる。
【００１１】
第一態様に係る音データ通信プログラムは、前記取得ステップにおいて取得された前記第一記憶量と、前記取得ステップにおいて前記第一記憶量よりも後に取得された第二記憶量との差に基づく変化量を、前記記憶値として演算する演算ステップをさらに実行させてもよい。
【００１２】
１の端末装置は、ネットワークにおいてジッタが発生したり帯域幅の変更が生じたりした場合に影響を受ける記憶装置のデータ量の変化に応じ、結合時間を第一結合時間または第二結合時間に設定することができる。すなわち１の端末装置は、ジッタが発生したり帯域幅が狭くなったりして記憶装置のデータ量が増加した場合、結合時間を延ばすことで送信に必要な帯域幅を減らす。送信に必要な帯域幅の減少によって送信が円滑に行えるようになるため、記憶装置のデータ量を減らすことができる。また、データ量が減少すれば、送信に必要な帯域幅が確保されているので、１の端末装置は、結合時間を短くして他の端末装置に送信する音データの入出力の関係におけるリニア性を確保することができる。
【００１３】
第一態様において、前記設定ステップは、前記演算ステップにおいて演算される前記第一変化量の絶対値よりも、前記結合時間に応じて送信回数が変化することによって前記結合音データのそれぞれに付加される送信ヘッダのデータ量における変化の総量である第二変化量の絶対値が大きく、且つ、前記第一変化量と前記第二変化量との差分の絶対値が最小となる値に前記結合時間を設定してもよい。
【００１４】
記憶装置のデータ量が変化した場合、第一変化量よりも送信ヘッダのデータ量の第二変化量が大きくなり、且つ第一変化量と第二変化量との差分が最小となるように結合時間を設定することで、１の端末装置は記憶装置のデータ量を略一定に維持することができる。すなわち、１の端末装置は、ネットワークにおいてジッタが発生したり帯域幅の変更が生じたりしても、他の端末装置への結合音データの送信を安定して行うことができる。
【００１５】
第一態様に係る音データ通信プログラムは、前記複数の端末装置が接続され、前記１の端末装置が前記他の端末装置に送信する前記結合音データを中継する中継サーバに、前記中継サーバの記憶装置に記憶される前記１の端末装置から送信された前記結合音データの結合が解除された前記圧縮音データのデータ量を表す第三記憶量を問い合わせる要求信号を送信する送信ステップと、前記要求信号の送信に応じて、前記第三記憶量を通知する回答信号を前記中継サーバから受信する受信ステップとをさらに実行させてもよい。この場合に、前記記憶値は、前記第一記憶量と前記第三記憶量との合計量に基づく値であってもよい。
【００１６】
ネットワークにおいてジッタが発生したり帯域幅の変更が生じたりした場合、中継サーバの記憶装置に記憶する圧縮音データのデータ量も、変化を生ずる。ゆえに、１の端末装置は、第一記憶量と第三記憶量の合計量の変化に応じて結合時間を設定することで、他の端末装置への結合音データの送信を安定して行うことができる。
【００１７】
本発明の第二態様によれば、ネットワークを介して接続し、各種データの送受信を相互に行うことで遠隔会議を実行可能な複数の端末装置のうちの１の端末装置のコンピュータが実行可能なプログラムであって、前記１の端末装置に接続されたマイクを介して取得された音データを、予め設定された圧縮パラメータに従って圧縮し、且つ、前記音データを結合する時間を指定する結合時間に応じた時間数分、前記音データを結合して、圧縮済みの結合音データを生成する結合ステップと、前記結合ステップにおいて生成された前記結合音データを、前記１の端末装置が備える記憶装置に記憶する記憶ステップと、前記記憶ステップにおいて前記記憶装置に記憶された前記結合音データを、他の端末装置に対して送信する指示を行う送信指示ステップと、前記記憶装置に記憶されている前記結合音データのデータ量を表す第一記憶量を取得する取得ステップと、前記取得ステップにおいて取得された前記第一記憶量に基づく値である記憶値が、所定のしきい値より大きいか否かを判断する判断ステップと、前記判断ステップにおける判断の結果、前記記憶値が前記しきい値より大きい場合、前記結合時間を第一結合時間に設定し、前記記憶値が前記しきい値以下である場合、前記結合時間を前記第一結合時間より短い第二結合時間に設定する設定ステップとを実行させることを特徴とする音データ通信プログラムが提供される。
【００１８】
第二態様に係る音データ通信プログラムを実行する１の端末装置は、結合ステップにおいて、音データを圧縮しながら、結合時間に基づくデータ長の結合音データを生成する。これにより、１の端末装置は、音データの圧縮処理から結合音データの生成処理を一つの処理で行うことができるので、音データの送信のための加工にかかる時間を減らし、１の端末装置における音データの入力タイミングと、他の端末装置における音データの出力タイミングとの間に生ずる遅延時間を削減することができる。
【００１９】
本発明の第三態様によれば、ネットワークを介して接続し、各種データの送受信を相互に行うことで遠隔会議を実行可能な複数の端末装置のうちの１の端末装置であって、前記１の端末装置に接続されたマイクを介して取得された音データを、予め設定された圧縮パラメータに従って圧縮し、圧縮音データを生成する生成手段と、前記生成手段が生成した前記圧縮音データを生成順に記憶する記憶装置と、前記記憶装置が記憶する前記圧縮音データのデータ量を表す第一記憶量を取得する取得手段と、前記取得手段が取得した前記第一記憶量に基づく値である記憶値が、所定のしきい値より大きいか否かを判断する判断手段と、前記判断手段の判断結果に基づいて、前記記憶値が前記しきい値より大きい場合、前記圧縮音データを結合する時間を指定する結合時間を第一結合時間に設定し、前記記憶値が前記しきい値以下である場合、前記結合時間を前記第一結合時間より短い第二結合時間に設定する設定手段と、前記記憶装置が記憶する前記圧縮音データを、前記設定手段が設定した前記結合時間に応じた時間数分、逐次取り出して結合し、結合音データを生成する結合手段と、前記結合手段が生成した前記結合音データを、他の端末装置に対して送信する指示を行う送信指示手段とを備えた端末装置が提供される。第三態様に係る端末装置が他の端末装置に結合音データを送信することで、第一態様と同様の効果を得ることができる。
【００２０】
本発明の第四態様によれば、ネットワークを介して接続し、各種データの送受信を相互に行うことで遠隔会議を実行可能な複数の端末装置のうちの１の端末装置のコンピュータが実行可能な音データ通信方法であって、前記１の端末装置に接続されたマイクを介して取得された音データを、予め設定された圧縮パラメータに従って圧縮し、圧縮音データを生成する生成ステップと、前記生成ステップにおいて生成された前記圧縮音データを生成順に、前記１の端末装置が備える記憶装置に記憶する記憶ステップと、前記記憶装置に記憶されている前記圧縮音データのデータ量を表す第一記憶量を取得する取得ステップと、前記取得ステップにおいて取得された前記第一記憶量に基づく値である記憶値が、所定のしきい値より大きいか否かを判断する判断ステップと、前記判断ステップにおける判断の結果、前記記憶値が前記しきい値より大きい場合、前記圧縮音データを結合する時間を指定する結合時間を第一結合時間に設定し、前記記憶値が前記しきい値以下である場合、前記結合時間を前記第一結合時間より短い第二結合時間に設定する設定ステップと、前記記憶ステップにおいて前記記憶装置に記憶された前記圧縮音データを、前記設定ステップにおいて設定された前記結合時間に応じた時間数分、逐次取り出して結合し、結合音データを生成する結合ステップと、前記結合ステップにおいて生成された前記結合音データを、他の端末装置に対して送信する指示を行う送信指示ステップとを含むことを特徴とする音データ通信方法が提供される。第四態様に係る音データ通信方法に従って１の端末装置のコンピュータが他の端末装置に結合音データを送信することで、第一態様と同様の効果を得ることができる。
【図面の簡単な説明】
【００２１】
【図１】会議システム１００の全体構成図である。
【図２】会議サーバ１が実行する会議管理プログラムのフローチャートである。
【図３】帯域幅と送信間隔との関係について説明するためのグラフである。
【図４】会議端末３が実行する音データ通信プログラムのフローチャートである。
【図５】音データ通信プログラムにおける送信処理のフローチャートである。
【図６】音データ通信プログラムにおける結合時間更新処理のフローチャートである。
【図７】音データ通信プログラムにおける結合時間更新処理（続き）のフローチャートである。
【図８】音データ通信プログラムにおける再生処理のフローチャートである。
【図９】中継サーバ６が実行する中継プログラムのフローチャートである。
【図１０】第二実施形態に係る音データ通信プログラムのフローチャートである。
【図１１】第二実施形態に係る音データ通信プログラムにおける結合時間更新処理のフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明の第一実施形態について、図面を参照して説明する。参照する図面は、本発明が採用し得る技術的特徴を説明するために用いられるものである。図面に記載されている装置の構成、各種処理のフローチャート等は、それのみに限定する趣旨ではなく、単なる説明例である。
【００２３】
図１を参照し、第一実施形態に係る会議端末３を含む会議システム１００について説明する。会議端末３は、本発明に係る「端末装置」の一例である。会議システム１００は、会議サーバ１が仮想的に構築する会議室に複数の会議端末３がネットワーク８を介してそれぞれ仮想的に参加し、画像および音声を用いた遠隔会議（テレビ会議）を開催できるシステムである。会議サーバ１、複数の会議端末３、および複数の中継サーバ６は、ネットワーク８を介して互いに接続し、会議システム１００を構成する。会議端末３は、遠隔会議に参加するユーザが使用する。会議サーバ１は、複数の会議端末３の間で実行される遠隔会議を制御する。中継サーバ６は、会議端末３間で送受信される画像および音声のデータを中継する。
【００２４】
図１に示す会議システム１００は、一例として、１つの会議サーバ１と、２つの会議端末３と、２つの中継サーバ６とがそれぞれネットワーク８に接続して構成するシステムである。会議サーバ１は、ネットワーク８を介して接続する複数の会議端末３のユーザ同士が画像および音声を用いた遠隔会議を行うための会議室を仮想的に構築し、各ユーザの入退室を管理するサーバである。会議サーバ１は、公知の構成のワークステーションやパーソナルコンピュータ（ＰＣ）を用いて構築される。会議サーバ１はデータベースを構築する記憶装置２に接続する。記憶装置２は、会議サーバ１が仮想的に構築する遠隔会議の会議室に関する各種設定情報、ユーザが参加する会議室のＩＤ情報、各会議端末３および中継サーバ６のネットワークアドレスおよびデータ送受信における経路情報等を関連づけて記憶する。また、会議サーバ１は、遠隔会議に参加する個々の会議端末３に対し、固有のＩＤ情報を発行する。記憶装置２は、会議端末３固有のＩＤ情報も他の情報と関連づけてデータベースに記憶する。また、中継サーバ６の運用において送信バッファを利用したデータ転送が行われる場合、中継サーバ６のＣＰＵ６１は、後述する中継プログラムの実行においてＲＡＭ６３に送信バッファの記憶領域を確保する。記憶装置２は、中継サーバ６における送信バッファの有無を示す情報をデータベースに記憶する。さらに、記憶装置２は、ユーザが遠隔会議で使用する文書や動画などの資料データ等を記憶する。
【００２５】
会議端末３は、モニタ４１、マイク４３、カメラ４４、スピーカ４５等が接続される端末装置である。会議端末３として、例えばＰＣが用いられる。複数の会議端末３のうちの１つの会議端末３（以下、「１の会議端末３」ともいう。）は、遠隔会議時に、カメラ４４が撮像する自拠点の画像データと、マイク４３が収音する自拠点の音データを、中継サーバ６を介して、遠隔会議に参加する他の会議端末３に送信する。また、１の会議端末３は、他の会議端末３から中継サーバ６を介して受信する画像データに基づく画像をモニタ４１に表示し、他の会議端末３から受信する音データに基づく音声をスピーカ４５から出力する。その結果、会議システム１００は、複数拠点の画像データおよび音データを会議端末３間で共有する。会議システム１００は、遠隔会議の参加者（会議端末３のユーザ）のすべてが同一拠点にいなくとも、参加者同士による円滑な会議の場を提供することができる。なお、会議システム１００における遠隔会議の制御については従来と同様であるため、詳細な説明を省略する。また、第一実施形態では、会議端末３間で送受信される画像データおよび音データのうち、音データの送受信における制御について説明を行い、画像データの送受信の制御については、説明を省略する。
【００２６】
会議サーバ１の電気的構成について説明する。会議サーバ１は、上記したように、公知の構成のＰＣやワークステーションを用いて構築され、会議サーバ１の制御を司るＣＰＵ１１を備える。ＣＰＵ１１はチップセット１５に接続し、チップセット１５を介してＲＯＭ１２、ＲＡＭ１３、および表示制御部１４と電気的に接続する。チップセット１５はチップセット１６と接続する。ＣＰＵ１１は、チップセット１６を介し、入力部２２、ハードディスクドライブ（ＨＤＤ）１７、外部接続インターフェイス（Ｉ／Ｆ）１９、および通信Ｉ／Ｆ１８と電気的に接続する。
【００２７】
チップセット１５は、ＣＰＵ１１と、ＲＯＭ１２、ＲＡＭ１３、および表示制御部１４との間でデータの送受信を管理する一連の回路群である。ＲＯＭ１２は、ブートプログラム、ＢＩＯＳ等を記憶する。ＲＡＭ１３は、種々の一時データを記憶する。表示制御部１４は、モニタ２１への画像の表示を制御する。チップセット１６は、ＣＰＵ１１と、入力部２２、ＨＤＤ１７、外部接続Ｉ／Ｆ１９、および通信Ｉ／Ｆ１８との間でデータの送受信を管理する一連の回路群である。入力部２２は、キーボード、マウス等、会議サーバ１に対する操作の入力を行う装置である。ＨＤＤ１７は、基本ソフト（Operating System, OS）、会議サーバ１をサーバとして機能させるためのソフトウェア（後述する会議管理プログラム）、その他各種アプリケーション、データ等を記憶する。外部接続Ｉ／Ｆ１９は、上記のデータベースを構築する記憶装置２に接続するインターフェイスである。通信Ｉ／Ｆ１８は、有線または無線によってネットワーク８に接続し、データ通信を行うためのインターフェイスである。
【００２８】
会議端末３の電気的構成について説明する。会議端末３は、公知の構成のＰＣであり、会議端末３の制御を司るＣＰＵ３１を備える。ＣＰＵ３１はチップセット３５に接続し、チップセット３５を介してＲＯＭ３２、ＲＡＭ３３、および表示制御部３４と電気的に接続する。チップセット３５はチップセット３６と接続する。ＣＰＵ３１は、チップセット３６を介し、入力部４２、ＨＤＤ３７、通信Ｉ／Ｆ３８、ＵＳＢ  Ｉ／Ｆ３９と電気的に接続する。
【００２９】
チップセット３５は、ＣＰＵ３１と、ＲＯＭ３２、ＲＡＭ３３、および表示制御部３４との間でデータの送受信を管理する一連の回路群である。ＲＯＭ３２は、ブートプログラム、ＢＩＯＳ等を記憶する。ＲＡＭ３３は、種々の一時データを記憶する。ＲＡＭ３３は、マイク４３（後述）が音声を収音し、サンプリングして出力する音データを、一時的に記憶するサウンドバッファと、Ｄ／Ａ変換によってスピーカ４５（後述）から音声を出力するための音データを一時的に記憶する再生バッファとを備える。 サウンドバッファおよび再生バッファの記憶領域は、ＣＰＵ３１がＯＳに従ってＲＡＭ３３に確保する。また、ＲＡＭ３３は、後述する音データ通信プログラムの実行に従ってＣＰＵ３１が確保する記憶領域であり、後述する圧縮音データを一時的に記憶する送信バッファを備える。
【００３０】
表示制御部３４は、モニタ４１への画像の表示を制御する。チップセット３６は、ＣＰＵ３１と、入力部４２、ＨＤＤ３７、および通信Ｉ／Ｆ３８との間でデータの送受信を管理する一連の回路群である。入力部４２は、キーボード、マウス等、会議端末３に対する操作の入力を行う装置である。ＨＤＤ３７は、ＯＳ、会議端末３をクライアントとして機能させるためのソフトウェア（後述する音データ通信プログラム）、その他各種アプリケーション、データ等を記憶する。通信Ｉ／Ｆ３８は、有線または無線によってネットワーク８に接続し、データ通信を行うためのインターフェイスである。
【００３１】
なお、後述する音データ通信プログラムは、会議端末３に応じたコードにコンパイルされ、ファイルサーバ（図示略）、会議サーバ１等に設けられたコンピュータが読み取り可能な記憶装置に記憶されている。音データ通信プログラムは、ファイルサーバ、会議サーバ１等から各会議端末３にネットワーク８等の電気通信回線を通じて一時的な伝送信号として送信されて提供される。あるいは、音データ通信プログラムは、ＣＤ−ＲＯＭ、ＤＶＤーＲＯＭ、フラッシュＲＯＭ等の記録媒体（図示略）に記憶され、会議端末３のＣＰＵ３１が、会議端末３に接続可能な読取装置（図示略）で記録媒体から読み取ることで提供されてもよい。ＣＰＵ３１は、会議端末３が備えるコンピュータで読み取り可能な記憶装置に、音データ通信プログラムを保存する。第一実施形態における記憶装置はＨＤＤ３７であるが、ＨＤＤ３７に限らず、例えば、ＳＳＤ（Solid State Drive、図示略）、フラッシュＲＯＭ等、データを記憶する時間の長さに関わらずにデータを保持できる不揮発性の記憶装置を用いることが好ましい。会議サーバ１のＣＰＵ１１が実行する会議管理プログラム、中継サーバ６のＣＰＵ６１が実行する中継プログラムも同様である。
【００３２】
ＵＳＢ  Ｉ／Ｆ３９は、ＵＳＢ規格に基づく通信を行うためのインターフェイスである。ＣＰＵ３１は、ＵＳＢ  Ｉ／Ｆ３９を介し、マイク４３、カメラ４４、およびスピーカ４５と電気的に接続する。マイク４３は、会議端末３の周囲の音声を収音してＡ／Ｄ変換（サンプリング）し、ＵＳＢ  Ｉ／Ｆ３９を介してＣＰＵ３１に音データを送信する。ＣＰＵ３１は、ＲＡＭ３３に設けたサウンドバッファにサンプリングした音データを記憶する。カメラ４４は、会議端末３の周囲の景色を撮像してＡ／Ｄ変換し、ＵＳＢ  Ｉ／Ｆ３９を介してＣＰＵ３１に画像データを送信する。スピーカ４５は、ＵＳＢ  Ｉ／Ｆ３９を介してＣＰＵ３１から受信する音データをＤ／Ａ変換した音声を出力する。ＣＰＵ３１は、ＲＡＭ３３に設けた再生バッファに、スピーカ４５から音声を出力するための音データを記憶する。
【００３３】
中継サーバ６の電気的構成について説明する。中継サーバ６は、会議サーバ１と同様に、公知の構成のＰＣやワークステーションを用いて構築され、中継サーバ６の制御を司るＣＰＵ６１を備える。ＣＰＵ６１はチップセット６５に接続し、チップセット６５を介してＲＯＭ６２、ＲＡＭ６３、および表示制御部６４と電気的に接続する。チップセット６５はチップセット６６と接続する。ＣＰＵ６１は、チップセット６６を介し、入力部７２、ＨＤＤ６７、および通信Ｉ／Ｆ６８と電気的に接続する。
【００３４】
チップセット６５は、ＣＰＵ６１と、ＲＯＭ６２、ＲＡＭ６３、および表示制御部６４との間でデータの送受信を管理する一連の回路群である。ＲＯＭ６２は、ブートプログラム、ＢＩＯＳ等を記憶する。ＲＡＭ６３は、種々の一時データを記憶する。表示制御部６４は、モニタ７１への画像の表示を制御する。チップセット６６は、ＣＰＵ６１と、入力部７２、ＨＤＤ６７、および通信Ｉ／Ｆ６８との間でデータの送受信を管理する一連の回路群である。入力部７２は、キーボード、マウス等、中継サーバ６に対する操作の入力を行う装置である。ＨＤＤ６７は、ＯＳ、受信したデータを転送するサーバとして中継サーバ６を機能させるためのソフトウェア（後述する中継プログラム）、その他各種アプリケーション、データ等を記憶する。通信Ｉ／Ｆ６８は、有線または無線によってネットワーク８に接続し、データ通信を行うためのインターフェイスである。
【００３５】
図２を参照し、会議システム１００で実行される遠隔会議の流れについて、会議サーバ１のＣＰＵ１１が実行する会議管理プログラムの動作に沿って説明する。会議サーバ１のＣＰＵ１１は、サーバ管理者が行った設定に基づき、例えば、サーバＯＳが立ち上がると会議管理プログラムをＨＤＤ１７から読み込んで自動実行する。ＣＰＵ１１は、記憶装置２に構築したデータベースに接続し、遠隔会議のサーバとして会議サーバ１を機能させることを登録する（Ｓ１）。ＣＰＵ１１は、遠隔会議への参加を希望する会議端末３のユーザの操作に基づき、会議端末３のＣＰＵ３１が送信する会議室への入室リクエストを受信するまで、処理を待機する状態に移行する（Ｓ２：ＮＯ）。
【００３６】
入室リクエストは、ユーザが参加を希望する会議室のＩＤ情報を含む。ネットワーク８に接続する会議端末３の１つから会議室の入室リクエストを受信した場合（Ｓ２：ＹＥＳ）、ＣＰＵ１１は、入室リクエストに含まれる会議室ＩＤを取得する。ＣＰＵ１１は、取得した会議室ＩＤと一致する会議室をまだ仮想的に作成していない場合、データベースに接続し、会議室ＩＤに基づき、会議室設定情報を取得する（Ｓ３）。会議室設定情報は、会議室ＩＤに基づいて作成する仮想的な会議室のデフォルト設定である。会議室設定情報は、例えば、「会議室への入室当初は音声をミュート状態にする」、「音データのデータ圧縮においてコーデックにＨＥ−ＡＡＣ  ｖ２を用い、ビットレートを４８ｋｂｐｓ（ＣＢＲ）とし、サンプリングレートを２４ｋＨｚとする」等の設定である。
【００３７】
ＣＰＵ１１は、遠隔会議を実行する仮想スペースである会議室を、ＲＡＭ１３上に仮想的に作成する（Ｓ５）。ＣＰＵ１１は、作成した会議室の識別情報として入室リクエストに含まれる会議室ＩＤを設定し、会議室設定情報に基づく会議室のデフォルト設定を行う。ＣＰＵ１１は、入室リクエストを送信した会議端末３に対し、固有のＩＤ情報を発行する。ＣＰＵ１１は、会議端末３の情報（ネットワークアドレス、会議サーバ１に接続するネットワーク８上の経路情報、固有のＩＤ情報等）をデータベースに登録する。ＣＰＵ１１は、会議端末３に会議室のデフォルト設定の情報と固有のＩＤ情報を送信して遠隔会議に参加させ、会議端末３のユーザを仮想的に会議室に入室させる。
【００３８】
ＣＰＵ１１は、遠隔会議に参加する会議端末３から退室リクエストを受信せず（Ｓ６：ＮＯ）、遠隔会議に未参加の会議端末３から入室リクエストを受信せず（Ｓ８：ＮＯ）、遠隔会議の終了リクエストを受信しなければ（Ｓ１２：ＮＯ）、処理をＳ６に戻して待機状態に移行する。ＣＰＵ１１は、遠隔会議に未参加の会議端末３から入室リクエストを受信した場合（Ｓ８：ＹＥＳ）、上記同様、その会議端末３の情報をデータベースに登録し、会議室のデフォルト設定の情報と固有のＩＤ情報を送信して遠隔会議に参加させる（Ｓ１０）。
【００３９】
ＣＰＵ１１は、既に遠隔会議に参加する会議端末３に対し、新たに参加する会議端末３の情報を送信する（Ｓ１１）。ＣＰＵ１１は、仮想的な会議室において、新たに遠隔会議に参加するユーザを会議室に入室させ、既に入室済みの他のユーザに対し、新たなユーザの入室に関する通知を送信する。この通知には、新たに参加する会議端末３に対して発行された、固有のＩＤ情報が含まれる。また、ＣＰＵ１１は、遠隔会議に既に参加する会議端末３と新たに参加する会議端末３とが音データを送受信する最適なネットワーク８上の経路を、データベースに記憶する各会議端末３と各中継サーバ６の経路情報に基づいて決定する。ＣＰＵ１１は、決定した経路情報をデータベースに登録し、各会議端末３に経路情報を送信する。ＣＰＵ１１は処理をＳ１２に進め、上記同様、Ｓ６〜Ｓ１２の処理を繰り返して待機する状態に移行する。
【００４０】
ＣＰＵ１１は、遠隔会議に参加する会議端末３から退室リクエストを受信した場合（Ｓ６：ＹＥＳ）、その会議端末３の情報をデータベースから削除する。ＣＰＵ１１は、遠隔会議に残る会議端末３に対し、遠隔会議から離脱する会議端末３の情報を送信する（Ｓ７）。ＣＰＵ１１は、仮想的な会議室において、遠隔会議から離脱するユーザを会議室から退室させ、会議室に残る他のユーザに対し、離脱するユーザの退室に関する通知を送信する。ＣＰＵ１１は処理をＳ８に進め、上記同様、Ｓ６〜Ｓ１２の処理を繰り返して待機する状態に移行する。
【００４１】
ＣＰＵ１１は、すべての会議端末３が遠隔会議から離脱した場合、または、遠隔会議を主催する会議端末３（例えば、会議室の作成に関与した会議端末３）から遠隔会議の終了リクエストを受信した場合（Ｓ１２：ＹＥＳ）、遠隔会議を終了する。ＣＰＵ１１は、ＲＡＭ１３上の仮想的な会議室を消去し、データベースから、終了する会議室に参加する会議端末３の情報を削除する。ＣＰＵ１１は、処理をＳ２に戻し、会議端末３から新たな入室リクエストを受信するまで、処理を待機する状態に移行する。以上の処理によって、会議サーバ１は、遠隔会議の会議室を仮想的に作成し、複数の会議端末３の遠隔会議への参加・離脱における制御を行う。
【００４２】
会議端末３のＣＰＵ３１が音データ通信プログラムを実行し、遠隔会議に参加する会議端末３間で音データを送受信する場合に行う動作について説明する。まず、音データの送信の概要について説明する。第一実施形態の会議端末３のＣＰＵ３１は、音データ通信プログラムに従って、遠隔会議に参加する他の会議端末３にネットワーク８を介して音データを送信する。１の会議端末３のＣＰＵ３１は、マイク４３で収音した音声をサンプリングして音データに変換し、コーデックで圧縮した後、ネットワーク８を介して他の会議端末３に送信する。他の会議端末３のＣＰＵ３１は、受信した音データをコーデックで伸長した後でＤ／Ａ変換し、スピーカ４５から出力する。１回に送信する音データのデータ量を小さくするほど、１の会議端末３における圧縮音データの結合にかかる時間、結合音データの送受信にかかる時間、他の会議端末３における結合音データのデコードから出力にかかる時間等は、短い。ゆえに、１の会議端末３が収音するタイミングと、他の会議端末３が音声出力するタイミングとのずれ（遅延）が小さくなり、ＣＰＵ３１は、歪みが小さく円滑なリニア性の高い音声を再生することができる。第一実施形態の音データ通信プログラムにおいて、ＣＰＵ３１は、音データを単位時間に分割して送信する。音データの単位時間は、例えば５ｍｓである。
【００４３】
例えば、コーデックのパラメータ設定において固定ビットレートが設定されており、帯域幅を２０ｋｂｐｓに圧縮した音データ（圧縮音データ）が生成される場合を想定する。この場合、圧縮音データ１ｍｓあたりのデータ量は２０ｂｉｔであるので、１単位時間分、すなわち５ｍｓ分のデータ量は、１００ｂｉｔ（１２．５ｂｙｔｅ）である。ネットワーク８を介したデータの送受信において、データは、種々のヘッダ等が付加された状態、すなわち、パケット化された状態で送信される。例えば、圧縮音データの送信において、ＣＰＵ３１は、圧縮音データに、１２０ｂｙｔｅの各種ヘッダ情報等を付加する。各種ヘッダ情報は、例えば、２０ｂｙｔｅのＩＰヘッダと、２０ｂｙｔｅのＴＣＰヘッダと、３２ｂｙｔｅのプロトコルヘッダと、３２ｂｙｔｅの暗号化ヘッダである。さらに、ＣＰＵ３１は、混線防止のため、ＩＤ等の付加情報（１６ｂｙｔｅ）を圧縮音データに付加して送信する。ゆえに、１単位時間分の圧縮音データを送信する場合、データ量は、１３２．５ｂｙｔｅになる。音声の再生において遅延が生じないようにするため、ＣＰＵ３１は、１単位時間分の圧縮音データを５ｍｓ以内に送信完了する必要がある。従って、１３２．５ｂｙｔｅの圧縮音データを５ｍｓ以内に送信するために必要な帯域幅は、１３２．５ｂｙｔｅ／５ｍｓ＝２１２０００ｂｉｔ／ｓｅｃ（２１２ｋｂｐｓ）である。
【００４４】
ネットワーク８においてジッタが発生したり帯域幅が変動した場合、ＣＰＵ３１は、１単位時間分の圧縮音データの送信に必要な帯域幅を確保できない可能性がある。音データを１単位時間内に送信完了できない場合、ＣＰＵ３１は、音データのパケットを破棄する可能性がある。そこで第一実施形態では、音データ通信プログラムにおいて、ＣＰＵ３１は、複数単位時間分の圧縮音データを結合し、複数回分の圧縮音データの送信を１回で行う。これにより、ＣＰＵ３１は、ネットワーク８を介したデータ送信に必要な複数回分のヘッダ等のデータ量を、１回分のデータ量に削減することができる。上記例において、例えば、４単位時間分（２０ｍｓ分）の圧縮音データを結合して送信する場合、ヘッダ等のデータ量は、１単位時間分の圧縮音データを送信する場合と同様に１２０ｂｙｔｅである。一方、圧縮音データ２０ｍｓ分のデータ量は５０ｂｙｔｅである。ＣＰＵ３１は、合計１７０ｂｙｔｅを２０ｍｓ以内に送信完了すればよく、必要な帯域幅は、１７０ｂｙｔｅ／２０ｍｓ＝６８０００ｂｉｔ／ｓｅｃ（６８ｋｂｐｓ）である。
【００４５】
帯域幅と送信間隔との関係を図３に示す。なお、図３にグラフにプロットされた各ドットに付記する数字は、１単位時間分の圧縮音データの結合数を表す。送信間隔は、圧縮音データの送信完了までにかかる時間として許容される時間であり、すなわち、１単位時間の結合数分の合計時間に相当する。図３によれば、帯域幅は、送信間隔が長くなるほど減少することがわかる。しかし、上記したように、音声の再生における遅延を防止するため、送信間隔は短いほどよい。後述する音データ通信プログラムの実行において、ＣＰＵ３１は、帯域幅を広く確保できる場合、圧縮音データの結合時間（結合数）を減らす処理を行って、遅延の防止を図る。ＣＰＵ３１は、帯域幅が狭くなれば、圧縮音データの結合時間（結合数）を増やす処理を行って、送信に必要な帯域幅を狭くし、パケットロスを防止する。
【００４６】
以下、図４〜図８を参照し、ＣＰＵ３１が音データ通信プログラムを実行して行う処理について説明する。会議端末３のＣＰＵ３１は、入力部４２に対して入力される操作に基づき、音データ通信プログラムをＨＤＤ３７から読み込んで実行する。ＣＰＵ３１は、音データ通信プログラムの実行時の初期設定で、遠隔会議に参加する他の会議端末３のそれぞれに対応する複数の送信バッファの記憶領域をＲＡＭ３３に確保する。送信バッファは、音データ通信プログラムの実行において、ＣＰＵ３１が他の会議端末３に送信するために生成する圧縮音データを一時的に記憶する記憶領域である。なお、新たに他の会議端末３が遠隔会議に参加した場合、ＣＰＵ３１は、その都度、新たに参加する会議端末３に対応する送信バッファの記憶領域をＲＡＭ３３に確保する。また、ＣＰＵ３１は、ＲＡＭ３３に、結合時間を示すデータを記憶する。ＣＰＵ３１は、音データ通信プログラムに従い、他の会議端末３に送信する結合音データを、１または複数の圧縮音データを結合して生成する。結合時間は、単位時間分の圧縮音データを１または複数結合したトータルの再生時間を示す時間であり、１つの圧縮音データの再生時間が１つの単位時間であるので、結合数に比例する。
【００４７】
図４に示すように、ＣＰＵ３１は、ユーザが参加を希望する仮想的な会議室のＩＤの入力を、入力部４２を介して受け付ける。例えば、遠隔会議の開催予定日時以前に、遠隔会議に参加予定の会議端末３の各電子メールアドレスを宛先として、会議サーバ１から電子メールが送信される。この電子メールは、会議端末３による遠隔会議のためのＵＲＬ（Uniform Resource Locator）を含む。このＵＲＬは、例えば、仮想的な会議室のＩＤをクエリパラメータとして含む。このＵＲＬを選択する操作が入力部４２によって受け付けられることで、ＣＰＵ３１は、ユーザが入力した会議室ＩＤを取得する（Ｓ２１）。ＣＰＵ３１は、ネットワーク８を介し、会議サーバ１との接続を試みる（Ｓ２２）。ＣＰＵ３１は、会議サーバ１との接続が確立したら、会議サーバ１に対し、会議室ＩＤを含む入室リクエストを送信する（Ｓ２３）。ＣＰＵ３１は、入室リクエストに基づいて、会議サーバ１のＣＰＵ１１が会議室ＩＤに基づき作成した会議室、あるいは会議室ＩＤが一致する既存の会議室への参加を許可する通知を会議サーバ１から受信する。また、ＣＰＵ３１は、会議サーバ１から、会議室のデフォルト設定、および中継サーバ６に関する情報（ネットワークアドレス、送信バッファの有無等の情報）を取得する（Ｓ２５）。ＣＰＵ３１は、取得したデフォルト設定に基づき各種設定を行い（Ｓ２６）、遠隔会議に参加して、会議サーバ１が仮想的に作成した会議室にユーザを入室させる。
【００４８】
ＣＰＵ３１は、以下に説明するＳ２７〜Ｓ９９の処理を、遠隔会議が終了するまで繰り返して実行する。Ｓ２７〜Ｓ９９の処理の繰り返しによって、ＣＰＵ３１は、遠隔会議が終了するまで、遠隔会議に参加する他の会議端末３に対して音データを送信し、他の会議端末３から受信した音データを再生する。ＣＰＵ３１は、会議サーバ１から、遠隔会議に参加する他の会議端末３に関する情報を受信したか否か判断する（Ｓ２７）。上記したように、会議サーバ１から受信する他の会議端末３に関する情報は、会議室に新たに入室するユーザの情報、会議室から退室するユーザの情報等を含む。ＣＰＵ３１は、遠隔会議に参加する他の会議端末３の情報を受信していなければ（Ｓ２７：ＮＯ）、処理をＳ３０に進める。ＣＰＵ３１は、遠隔会議に参加する他の会議端末３の情報を受信した場合（Ｓ２７：ＹＥＳ）、会議室への入退室に伴う参加者（各会議端末３のユーザ）の人数を更新し、ＲＡＭ３３に記憶する。また、遠隔会議に新たな会議端末３の参加がある場合、会議サーバ１から新たな会議端末３との経路情報を受信するので、ＣＰＵ３１は、受信した経路情報をＲＡＭ３３に記憶する（Ｓ２８）。ＣＰＵ３１は、処理をＳ３０に進める。
【００４９】
ＣＰＵ３１は、マイク４３が送信する音データに、例えば公知の周波数フィルタリング処理を行い、音データにユーザの発する音声（発話）が含まれるか否か判断する（Ｓ３０）。音データに発話が含まれない場合（Ｓ３０：ＮＯ）、ＣＰＵ３１は処理をＳ４０に進める。音データに発話が含まれる場合（Ｓ３０：ＹＥＳ）、ＣＰＵ３１は、ＲＡＭ３３のサウンドバッファから、１単位時間（５ｍｓ）分の音データを取得する（Ｓ３１）。なお、ＣＰＵ３１は、上記の周波数フィルタリング処理に加えて、あるいは上記の周波数フィルタリング処理の代わりに、例えば、音データの音量を所定のしきい値と比較し、比較結果に基づいて、音データに発話が含まれるか否かを判断してもよい。ＣＰＵ３１は１単位時間分の音データを、デフォルト設定に基づくエンコード条件を設定した公知のエンコーダ（例えば、ＨＥ−ＡＡＣ  ｖ２、Ｇ．７１１、Ｇ．７２９、Ｓｐｅｅｘ、Ｏｐｕｓ）で処理して圧縮し、１単位時間分の圧縮音データを生成する（Ｓ３２）。ＣＰＵ３１は生成した圧縮音データを、ＲＡＭ３３の送信バッファに記憶し（Ｓ３３）、処理をＳ４０に進める。
【００５０】
ＣＰＵ３１は、送信処理のサブルーチンを実行する（Ｓ４０）。ＣＰＵ３１は、音データの送信において、遠隔会議に参加する複数の会議端末３を順に送信対象に設定して行う。図５に示すように、ＣＰＵ３１は、送信処理において、ＯＳに従ってデータを送信する処理を行っている最中であるか否かをＯＳに問い合わせることで判断する（Ｓ４１）。送信中であれば（Ｓ４１：ＹＥＳ）、送信中のデータの送信を継続するためＣＰＵ３１は送信処理を終了し、音データ通信プログラムのメインルーチン（図４参照）に処理を戻し、処理をＳ５５に進める。送信中でなければ（Ｓ４１：ＮＯ）、ＣＰＵ３１は、送信対象の会議端末３に対応する送信バッファに、発話に基づく圧縮音データが記憶されているか否か判断する（Ｓ４２）。送信バッファに圧縮音データがなければ（Ｓ４２：ＮＯ）、他の会議端末３に送信する音データがないのでＣＰＵ３１は送信処理を終了し、音データ通信プログラムのメインルーチン（図４参照）に処理を戻し、処理をＳ５５に進める。
【００５１】
送信対象の会議端末３に対応する送信バッファに圧縮音データがある場合（Ｓ４２：ＹＥＳ）、ＣＰＵ３１は、後述する結合時間更新処理で更新し、ＲＡＭ３３に記憶する結合時間を取得する（Ｓ４３）。ＣＰＵ３１は、結合時間に応じた結合数分の圧縮音データを、生成時刻の古い順に送信バッファから取り出して結合し、結合音データを生成する（Ｓ４５）。ＣＰＵ３１は、結合音データに、付加情報を付加する（Ｓ４８）。付加情報は、結合時間を示す情報、会議端末３固有のＩＤ情報等である。会議端末３固有のＩＤ情報は、１の会議端末３が複数の会議端末３がそれぞれ送信した結合音データを受信した場合の混信を避けるために、付加情報として付加される。
【００５２】
ＣＰＵ３１は、付加情報を付加した結合音データを所定のアルゴリズムに従って暗号化し、暗号化ヘッダを付与する（Ｓ５０）。例えば、ＳＳＬ（Secure Sockets Layer）、ＴＬＳ（Transport Layer Security）、ＳＲＴＰ（Secure Real-time Transport Protocol）等が暗号化プロトコルとして使用される。ＣＰＵ３１は、暗号化した結合音データに所定の通信プロトコルのヘッダを付加する（Ｓ５１）。例えば、ＲＴＰ（Real-time Transport Protocol）、ＨＴＴＰ（Hypertext Transfer Protocol）、ＨＴＴＰＳ（HTTP over SSL/TLS）等が通信プロトコルとして使用される。
【００５３】
ＣＰＵ３１は、通信プロトコルのヘッダを付与した結合音データを、ＯＳに従ってＲＡＭ３３に確保された送信用のソケットバッファに記憶する処理を行う（Ｓ５２）。ＣＰＵ３１は、ＯＳに対し、結合音データの送信を指示する送信リクエストを出力する。送信用ソケットバッファに記憶される結合音データは、ＣＰＵ３１が、ＯＳに従って、ＩＰ／ＴＣＰヘッダを付加し、ネットワーク８を介して他の会議端末３に送信する処理を行う（Ｓ５３）。ここで、経路情報に基づき、１の会議端末３から送信対象の会議端末３に送信する経路に中継サーバ６が含まれる場合、ＣＰＵ３１は、ＩＰ／ＴＣＰヘッダで指定する送信先として、経路上で１の会議端末３の次に位置する中継サーバ６を設定する。ＣＰＵ３１は、結合音データの送信を開始したら、送信処理を終了し、音データ通信プログラムのメインルーチンに処理を戻し、処理をＳ５５に進める。
【００５４】
図４に示すように、ＣＰＵ３１は、結合時間更新処理のサブルーチンを実行する（Ｓ５５）。図６に示すように、結合時間更新処理において、ＣＰＵ３１は、送信対象の会議端末３との間の経路情報に基づき、経路に含まれる中継サーバ６を特定する。ＣＰＵ３１は、特定した中継サーバ６が送信バッファを有するか否か、会議サーバ１から取得した情報に基づいて判断する（Ｓ５６）。中継サーバ６に送信バッファがある場合（Ｓ５６：ＹＥＳ）、ＣＰＵ３１は、送信対象の会議端末３に対応する送信バッファに記憶する圧縮音データのデータ量を取得する（Ｓ５７）。ＣＰＵ３１は、取得した自拠点のデータ量に取得時刻を付加し、ＲＡＭ３３に記憶する。さらにＣＰＵ３１は、経路に含まれるすべての中継サーバ６に、送信バッファのデータ量を問い合わせるリクエストを送信する（Ｓ５８）。詳細は後述するが、中継サーバ６のＣＰＵ６１は、会議端末３から送信バッファのデータ量のリクエストを受信したら、ＲＡＭ６３の送信バッファに記憶する圧縮音データのデータ量を取得する。ＣＰＵ６１は、取得したデータ量を通知するレスポンスを、リクエスト送信元の会議端末３に送信する。会議端末３のＣＰＵ３１は、経路に含まれるすべての中継サーバ６から、それぞれレスポンスを受信する（Ｓ５９）。これにより、ＣＰＵ３１は、中継サーバ６が転送中に送信バッファに一時記憶する圧縮音データのデータ量を、それぞれ取得する。ＣＰＵ３１は、上記同様、取得した中継サーバ６のデータ量に取得時刻を付加し、ＲＡＭ３３に記憶する。
【００５５】
ＣＰＵ３１は、音データ通信プログラムの動作に関してあらかじめなされた設定において、送信バッファのデータ量に基づいて結合時間を更新する設定がなされているか、あるいはデータ増加量に基づいて更新する設定がなされているか判断する（Ｓ６０）。データ量に基づき更新する設定である場合（Ｓ６０：ＹＥＳ）、ＣＰＵ３１は、ＲＡＭ３３に記憶した自拠点の送信バッファのデータ量について、過去３秒間分のデータ量から平均値を算出する。同様に、ＣＰＵ３１は、ＲＡＭ３３に記憶した中継サーバ６の送信バッファのデータ量について、過去３秒間分のデータ量から平均値を算出する（Ｓ６１）。ＣＰＵ３１は、Ｓ６１の処理で求めたデータ量の平均値を合算し、さらに合算値の平均値（平均データ量）を算出する（Ｓ６２）。平均データ量は、すなわち、経路上に含まれるすべての送信バッファに記憶されている圧縮音データのデータ量を、過去３秒間において平均した平均値である。
【００５６】
ＣＰＵ３１は、平均データ量が、圧縮音データの１単位時間分（５ｍｓ分）のデータ量より大きいか否か判断する（Ｓ６３）。平均データ量が１単位時間分の圧縮音データのデータ量より大きい場合（Ｓ６３：ＹＥＳ）、ＣＰＵ３１は、送信バッファに格納される圧縮音データが増えている状態であり、データ送信に必要な帯域幅よりもネットワーク８の帯域幅が狭いと判断する。ゆえにＣＰＵ３１は、圧縮音データの結合時間を１単位時間分、増加して（Ｓ６５）、結合時間更新処理を終了し、音データ通信プログラムのメインルーチンに処理を戻し、処理をＳ８５（図４参照）に進める。なお、圧縮音データの結合時間の上限は、２００ｍｓ（結合数：４０）とする。平均データ量が１単位時間分のデータ量以下の場合（Ｓ６３：ＮＯ）、ＣＰＵ３１は、送信バッファに格納される圧縮音データが減っている状態または蓄積されていない状態であり、データ送信に必要な帯域幅がネットワーク８において確保されていると判断する。ゆえにＣＰＵ３１は、圧縮音データの結合時間を１単位時間分、減少して（Ｓ６６）、結合時間更新処理を終了し、音データ通信プログラムのメインルーチンに処理を戻し、処理をＳ８５に進める。なお、圧縮音データの結合時間の下限は、５ｍｓ（結合数：１）とする。
【００５７】
図４に示すように、ＣＰＵ３１は、再生処理のサブルーチンを実行する（Ｓ８５）。図８に示すように、再生処理において、ＣＰＵ３１は、ＯＳに従って他の会議端末３から音データを受信する処理を行った場合にＯＳから通知される受信イベントの通知を受けたか否か判断する（Ｓ８６）。ＣＰＵ３１は、ＯＳに従って、ネットワーク８を介して他の会議端末３から結合音データを受信する処理を行った場合、ＩＰ／ＴＣＰヘッダを除去して受信用のソケットバッファに記憶し、音データ通信プログラムに対して受信イベントを通知する。音データ通信プログラムの実行において、ＣＰＵ３１は、受信イベントの通知がなければ（Ｓ８６：ＮＯ）、処理をＳ９５に進める。ＣＰＵ３１は、受信イベントの通知があれば（Ｓ８６：ＹＥＳ）、ＩＰ／ＴＣＰヘッダを除去した結合音データを受信用ソケットバッファから取得する（Ｓ８７）。ＣＰＵ３１は、ＩＰ／ＴＣＰヘッダを除去した結合音データから、通信プロトコルのヘッダを除去し（Ｓ８８）、暗号化ヘッダに指定のアルゴリズムに従って複合化することで（Ｓ９０）、付加情報を付加した結合音データを得る。
【００５８】
ＣＰＵ３１は、付加情報に含まれる結合時間の情報に基づいて、結合音データを分割し、圧縮音データを得る（Ｓ９１）。ＣＰＵ３１は、圧縮音データを公知のデコーダでデコードし（Ｓ９２）、得られた音データをＲＡＭ３３の再生バッファに格納して（Ｓ９３）、処理をＳ９５に進める。ＣＰＵ３１は、再生バッファに未再生の音データが記憶されているか否か判断する（Ｓ９５）。再生バッファに未再生の音データがなければ（Ｓ９５：ＮＯ）、ＣＰＵ３１は再生処理を終了し、音データ通信プログラムのメインルーチンに処理を戻し、処理をＳ９９に進める。再生バッファに未再生の音データがある場合（Ｓ９５：ＹＥＳ）、ＣＰＵ３１は、再生バッファから未再生の音データを格納順に取り出し（Ｓ９６）、スピーカ４５に送信する（Ｓ９７）。スピーカ４５は、受信した音データをＤ／Ａ変換して出力し、音声を再生する。ＣＰＵ３１は再生処理を終了し、音データ通信プログラムのメインルーチンに処理を戻し、処理をＳ９９に進める。
【００５９】
図４に示すように、ＣＰＵ３１は、会議室から退室する操作を入力部４２から受け付けた場合、あるいは終了リクエストに基づいて会議サーバ１が送信する会議終了の通知を受信した場合に、遠隔会議を終了し（Ｓ９９：ＹＥＳ）、音データ通信プログラムの実行を終了する。遠隔会議を継続する場合（Ｓ９９：ＮＯ）、ＣＰＵ３１は処理をＳ２７に戻し、Ｓ２７〜Ｓ９９の処理を繰り返して実行することで、遠隔会議に参加する他の会議端末３に対して音データを送信し、他の会議端末３から受信した音データを再生する。
【００６０】
ところで、図６に示す、結合時間更新処理において、音データ通信プログラムの動作に関し、送信バッファのデータ増加量に基づき結合時間を更新する設定がなされている場合（Ｓ６０：ＮＯ）、ＣＰＵ３１は、処理をＳ６７に進める。ＣＰＵ３１は、ＲＡＭ３３に記憶した自拠点の送信バッファのデータ量に基づいて、過去３秒間における自拠点のデータ量の増加量を算出する。同様に、ＣＰＵ３１は、ＲＡＭ３３に記憶した中継サーバ６の送信バッファのデータ量に基づいて、中継サーバ６の過去３秒間のデータ量の増加量を算出する（Ｓ６７）。ＣＰＵ３１は、Ｓ６７の処理で求めたデータ増加量の平均値（平均データ増加量）を算出する（Ｓ６８）。平均データ増加量は、すなわち、経路上に含まれるすべての送信バッファにおいて、圧縮音データのデータ量が過去３秒間に増加した量を平均した平均値である。
【００６１】
ＣＰＵ３１は、平均データ増加量が０であれば、送信バッファに蓄積される圧縮音データのデータ量と、送信バッファから取り出されて送信対象の会議端末３へ送信される圧縮音データのデータ量が平衡状態にあると判断し、結合時間を維持する。平均データ量が正の値を有する場合、ＣＰＵ３１は、データ送信に必要な帯域幅よりもネットワーク８の帯域幅が狭く、送信バッファに格納される圧縮音データのデータ量が増えている状態であると判断する。ＣＰＵ３１は、送信バッファのデータ量を減らすため、データ送信に必要な帯域幅をネットワーク８の帯域幅よりも狭くする処理を行う。
【００６２】
例えば、上記同様、１単位時間分の圧縮音データのデータ量が１２．５ｂｙｔｅであり、１回のデータ送信において付加されるヘッダ等のデータ量が１２０ｂｙｔｅであるとする。また、過去３秒間における平均データ増加量が２５０ｂｙｔｅであった場合を想定する。この場合、ＣＰＵ３１は、結合時間を増加させて圧縮音データを結合し、データ送信の回数を減らすことで、ヘッダ等の除去によるデータ量の削減量を平均データ増加量より大きくする処理を行う。例えば、現在の結合時間が３０ｍｓ（結合数：６）である場合、ＣＰＵ３１は、４送信分の圧縮音データを結合して１回で送信する処理を行うことで、３送信分のヘッダ等のデータ量（１２０×３＝３６０ｂｙｔｅ）を削減する。ＣＰＵ３１は、１回のデータ送信において、１２０＋１２．５×６＝１９５ｂｙｔｅのデータを３０ｍｓ以内に行っており、４回のデータ送信では１９５×４＝７８０ｂｙｔｅを１２０ｍｓ以内に送信する。４回のデータ送信分の圧縮音データを結合し（結合数：２４）、１回で送信する場合、ＣＰＵ３１は、１２０＋（１２．５×６）×４＝４２０ｂｙｔｅのデータを１２０ｍｓ以内に送信すればよい。すなわち、結合時間を増加させる前、ＣＰＵ３１は、１２．５×６＝７５ｂｙｔｅの圧縮音データに１回分のヘッダ等を付加して３０ｍｓ以内に送信し、４送信の合計で、７５×４＝３００ｂｙｔｅの圧縮音データと４回分のヘッダ等を１２０ｍｓ以内に送信する状態にある。結合時間を増加させることによって、ＣＰＵ３１は、１２．５×２４＝３００ｂｙｔｅの圧縮音データと１回分のヘッダ等を１送信で１２０ｍｓ以内に送信する状態に移行する。４送信分の圧縮音データを１送信分に結合することで、ヘッダ等のデータ量は変化するが、圧縮音データのみのデータ量は変化しない。このように、ＣＰＵ３１は、平均データ増加量の２５０ｂｙｔｅより大きい３６０ｂｙｔｅのデータ量を削減することができるので、送信バッファのデータ量を減らすことができる。
【００６３】
なお、ＣＰＵ３１は、上記例では４送信分の圧縮音データを１送信分に結合したが、例えば１回に送信する圧縮音データの結合数をさらに増やし、５送信分以上の圧縮音データを結合しても、削減できるデータ量を平均データ増加量よりも大きくすることが可能である。しかし、前述したように、結合時間が長くなるほど、音声の再生における遅延は大きくなる。ゆえに、ＣＰＵ３１は、上記のように結合して増加させる結合時間の設定において、圧縮音データの結合によって削減できるデータ量が平均データ増加量を上回らせることができる結合時間のうち、最小となる結合時間を設定する。例えば、上記例の場合、もとの結合数が６（結合時間：３０ｍｓ）であり、結合数を２４以上、例えば５送信分を結合して結合数を３０（結合時間：１５０ｍｓ）とした場合でも、４送信分のヘッダ等のデータ量（１２０×４＝４８０ｂｙｔｅ）を削減することができる。このような場合でも、ＣＰＵ３１は、削減できるデータ量が平均データ増加量を上回る結合時間のうち、最小となる結合数、すなわち２４（結合時間１２０ｍｓ）を、結合数に設定する。
【００６４】
また、過去３秒間における平均データ増加量が−２５０ｂｙｔｅであった場合（送信バッファのデータ量が減った場合）を想定する。この場合、ＣＰＵ３１は、結合時間を減少させて圧縮音データを分割し、データ送信の回数を増やすことで、ヘッダ等の付加によるデータ量の増加量を、過去３秒間におけるデータ量の減少量の平均値よりも大きくする処理を行う。例えば、現在の結合時間が１２０ｍｓ（結合数：２４）である場合、ＣＰＵ３１は、１送信分の圧縮音データを分割して４回で送信する処理を行い、３送信分のヘッダ等のデータ量（１２０×３＝３６０ｂｙｔｅ）を追加する。ＣＰＵ３１は、１回のデータ送信において、１２０＋（１２．５×２４）＝４２０ｂｙｔｅのデータを１２０ｍｓ以内に行っている。１回のデータ送信分の圧縮音データを４分割し（結合数：６）、４回に分けて送信する場合、ＣＰＵ３１は、１送信あたり１２０＋１２．５×６＝１９５ｂｙｔｅの圧縮音データを３０ｍｓ以内に送信し、もとの１２０ｍｓ以内では、４送信分、１９５×４＝７８０ｂｙｔｅの圧縮音データを送信する。すなわち、結合時間を減少させる前、ＣＰＵ３１は、１２．５×２４＝３００ｂｙｔｅの圧縮音データに１回分のヘッダ等を付加して１２０ｍｓ以内に１回で送信する状態にある。結合時間を減少させることによって、ＣＰＵ３１は、１２．５×６＝７５ｂｙｔｅの圧縮音データに１回分のヘッダ等を付加して３０ｍｓ以内に送信し、４送信の合計で、７５×４＝３００ｂｙｔｅの圧縮音データと４回分のヘッダ等を１２０ｍｓ以内に送信する状態に移行する。１送信分の圧縮音データを４送信分に分割することで、ヘッダ等のデータ量は変化するが、圧縮音データのみのデータ量は変化しない。このように、ＣＰＵ３１は、過去３秒間におけるデータ量の減少量の２５０ｂｙｔｅより大きい３６０ｂｙｔｅのデータ量を増加させたデータ送信を行うことができるので、送信バッファのデータ量を増やすことができる。
【００６５】
なお、ＣＰＵ３１は、上記例では１送信分の圧縮音データを４送信分に分割したが、例えば１回に送信する圧縮音データの結合数をさらに減らし、５送信分以上に分割しても、増加できるデータ量をデータ減少量の平均値よりも大きくすることが可能である。しかし、前述したように、結合時間が短くなるほど、送信に必要な帯域幅が広くなるため、パケットロスを生ずる可能性が大きくなる。ゆえに、ＣＰＵ３１は、上記のように分割して減少させる結合時間の設定において、圧縮音データの分割によって増加できるデータ量がデータ減少量の平均値を上回らせることができる結合時間のうち、最大となる結合時間を設定する。例えば、上記例の場合、分割前の結合数が２４（結合時間：１２０ｍｓ）であり、結合数を６以下、例えば８送信に分割して結合数を３（結合時間：１５ｍｓ）とした場合でも、７送信分のヘッダ等のデータ量（１２０×７＝８４０ｂｙｔｅ）を増加することができる。このような場合でも、ＣＰＵ３１は、増加できるデータ量が平均データ減少量を上回る結合時間のうち、最大となる結合数、すなわち６（結合時間３０ｍｓ）を、結合数に設定する。
【００６６】
このように、ＣＰＵ３１は、データ増加量に応じた結合時間を設定することで、送信バッファに蓄積される圧縮音データのデータ量を一定に保つ制御を行う（Ｓ７０）。ＣＰＵ３１は、結合時間更新処理を終了し、音データ通信プログラムのメインルーチンに処理を戻し、処理をＳ８５に進める。
【００６７】
ところで、１の会議端末３は、他の会議端末３に結合音データを送信する経路を、会議サーバ１から受信した経路情報において決定するが、経路上に中継サーバ６が含まれない場合がある。また、中継サーバ６のＣＰＵ６１が実行する中継プログラム（後述）の設定において、中継サーバ６のＣＰＵ６１は、ＲＡＭ６３に送信バッファの記憶領域を確保しない場合がある。この場合、会議端末３のＣＰＵ３１は、図６に示す、結合時間更新処理において、中継サーバ６の送信バッファがないと判断し（Ｓ５６：ＮＯ）、処理をＳ７１に進める。
【００６８】
以下に説明するＳ７１〜Ｓ８０の処理は、中継サーバ６の送信バッファを含む点を除き、上記したＳ５７〜Ｓ７０の処理（図６参照）と同様である。図７に示すように、ＣＰＵ３１は、送信対象の会議端末３に対応する送信バッファに記憶する圧縮音データのデータ量を取得する（Ｓ７１）。ＣＰＵ３１は、取得した自拠点のデータ量に取得時刻を付加し、ＲＡＭ３３に記憶する。ＣＰＵ３１は、音データ通信プログラムの動作に関する設定において、送信バッファのデータ量に基づく結合時間の更新設定がなされているか、あるいはデータ増加量に基づく更新設定がなされているか判断する（Ｓ７２）。
【００６９】
データ量に基づく結合時間の更新設定がなされている場合（Ｓ７２：ＹＥＳ）、ＣＰＵ３１は、ＲＡＭ３３に記憶した送信バッファのデータ量について、過去３秒間分のデータ量から平均値を算出する（Ｓ７３）。ＣＰＵ３１は、平均データ量が、圧縮音データの１単位時間分のデータ量より大きいか否か判断する（Ｓ７５）。平均データ量が１単位時間分のデータ量より大きい場合（Ｓ７５：ＹＥＳ）、ＣＰＵ３１は、圧縮音データの結合時間を１単位時間分、増加する（Ｓ７６）。平均データ量が１単位時間分のデータ量以下の場合（Ｓ７５：ＮＯ）、ＣＰＵ３１は、圧縮音データの結合時間を１単位時間分、減少する（Ｓ７７）。ＣＰＵ３１は、結合時間更新処理を終了し、音データ通信プログラムのメインルーチンに処理を戻し、処理をＳ８５に進める。
【００７０】
また、Ｓ７２の判断処理において、データ増加量に基づく結合時間の更新設定がなされている場合（Ｓ７２：ＮＯ）、ＣＰＵ３１は、ＲＡＭ３３に記憶した送信バッファのデータ量に基づき、過去３秒間におけるデータ量の増加量を算出する（Ｓ７８）。ＣＰＵ３１は、Ｓ７０で行った処理と同様に、データ増加量に応じて結合時間を設定し（Ｓ８０）、送信バッファに蓄積される圧縮音データのデータ量を一定に保つ制御を行う。ＣＰＵ３１は、結合時間更新処理を終了し、音データ通信プログラムのメインルーチンに処理を戻し、処理をＳ８５に進める。
【００７１】
以上のように、会議端末３のＣＰＵ３１は、音データ通信プログラムを実行し、ネットワーク８における帯域の変化に応じて圧縮音データの結合時間を変更することで、音データの送信において遅延を抑制し、パケットロスを防止することができる。
【００７２】
次に、図９を参照し、中継サーバ６のＣＰＵ６１が中継プログラムを実行し、会議端末３間で送受信される音データを中継する場合の動作について説明する。中継サーバ６のＣＰＵ６１は、サーバ管理者が行った設定に基づき、例えば、サーバＯＳが立ち上がると中継プログラムをＨＤＤ６７から読み込んで自動実行する。ＣＰＵ６１は、会議サーバ１に接続し、ネットワークアドレスと、会議サーバ１に接続するネットワーク８上の経路情報と、遠隔会議のデータ転送を中継するサーバとして中継サーバ６を機能させることを通知し、データベースに登録させる。また、中継プログラムは、中継サーバ６の運用において、送信バッファを利用したデータ転送を行う設定と、送信バッファを利用しないデータ転送を行う設定とのいずれか一方をあらかじめ設定することができる。送信バッファを利用したデータ転送を行う設定がなされている場合、ＣＰＵ６１は、ＲＡＭ６３に送信バッファの記憶領域を確保し、且つ、会議サーバ１に送信バッファを有することを通知してデータベースに登録させる。
【００７３】
中継サーバ６のＣＰＵ６１は、送信バッファを有する場合（Ｓ１１１：ＹＥＳ）、ＯＳに従って会議端末３または他の中継サーバ６から音データを受信した場合にＯＳから通知される受信イベントの通知を受けたか否か判断する（Ｓ１１２）。ＣＰＵ６１は、ＯＳに従って、ネットワーク８を介して会議端末３または他の中継サーバ６から結合音データを受信した場合、ＩＰ／ＴＣＰヘッダを除去して受信用のソケットバッファに記憶し、中継プログラムに対して受信イベントを通知する。中継プログラムの実行において、ＣＰＵ６１は、受信イベントの通知がなければ（Ｓ１１２：ＮＯ）、処理をＳ１２０に進める。ＣＰＵ６１は、受信イベントの通知があれば（Ｓ１１２：ＹＥＳ）、ＩＰ／ＴＣＰヘッダを除去した結合音データを受信用ソケットバッファから取得する（Ｓ１１３）。ＣＰＵ６１は、ＩＰ／ＴＣＰヘッダを除去した結合音データから、通信プロトコルのヘッダを除去し（Ｓ１１５）、暗号化ヘッダに指定のアルゴリズムに従って複合化することで（Ｓ１１６）、付加情報を付加した結合音データを得る。ＣＰＵ６１は、付加情報に含まれる結合時間の情報に基づいて結合音データを分割し、圧縮音データを得る（Ｓ１１７）。ＣＰＵ６１は、圧縮音データを送信バッファに格納し（Ｓ１１８）、処理をＳ１２０に進める。
【００７４】
ＣＰＵ６１は、送信処理のサブルーチンを実行する（Ｓ１２０）。中継プログラムにおける送信処理は、音データ通信プログラムにおける送信処理（図５）と同様の処理である。すなわち、ＣＰＵ６１は、送信バッファから、結合時間に応じた結合数分の圧縮データを取り出して結合し、結合音データに対し、付加情報の付加、暗号化、プロトコルヘッダの付加を行って、送信用ソケットバッファに記憶する。ＣＰＵ６１は、ＯＳに対し、結合音データの送信を指示する送信リクエストを出力する。ＣＰＵ６１は、ＯＳに従って、送信対象の会議端末３または経路上で次に位置する中継サーバ６のネットワークアドレスを送信先に指定したＩＰ／ＴＣＰヘッダを結合音データに付加し、送信を開始する。
【００７５】
ＣＰＵ６１は、送信処理を実行したら、結合時間更新処理のサブルーチンを実行する（Ｓ１２１）。中継プログラムにおける結合時間更新処理も、音データ通信プログラムにおける結合時間更新処理（図６、図７）と同様の処理である。すなわち、ＣＰＵ６１は、送信バッファに一時記憶する圧縮音データのデータ量またはデータ増加量に基づいて、結合時間を更新する。また、ＣＰＵ６１は、送信対象の会議端末３への経路上に他の中継サーバ６が含まれる場合、中継サーバ６が送信バッファを有するか否かに基づいて、上記同様、圧縮音データのデータ量またはデータ増加量に基づく結合時間の更新処理を行う。
【００７６】
ＣＰＵ６１は、結合時間更新処理を実行したら、会議端末３のＣＰＵ３１が上記した結合時間更新処理において中継サーバ６の送信バッファのデータ量を問い合わせるために送信する取得リクエストを受信したか否か判断する（Ｓ１２２）。ＣＰＵ６１は、取得リクエストを受信した場合（Ｓ１２２：ＹＥＳ）、取得リクエスト送信元の会議端末３が送信対象とする会議端末３に対応して設けた送信バッファに記憶する圧縮音データのデータ量を取得する。ＣＰＵ６１は、取得リクエスト送信元の会議端末３にレスポンスとして送信バッファのデータ量を通知し（Ｓ１２３）、処理をＳ１１２に戻す。また、Ｓ１２２の判断処理において、取得リクエストを受信しなかった場合も（Ｓ１２２：ＮＯ）、ＣＰＵ６１は処理をＳ１１２に戻す。以降、ＣＰＵ６１はＳ１１２〜Ｓ１２３の処理を繰り返して実行し、ネットワーク８における帯域の変化に応じて圧縮音データの結合時間を変更しながら、遠隔会議に参加する複数の会議端末３間で送受信される音データを中継する。
【００７７】
また、中継プログラムにおいて送信バッファを利用しないデータ転送を行う設定がなされており、Ｓ１１１の判断処理において送信バッファがないと判断した場合（Ｓ１１１：ＮＯ）、ＣＰＵ６１は、処理をＳ１２５に進める。ＣＰＵ６１は、ＯＳに従ってデータを送信する処理を行っている最中であるか否か判断する（Ｓ１２５）。送信中であれば（Ｓ１２５：ＹＥＳ）、送信中のデータの送信を継続するため、ＣＰＵ６１は処理をＳ１２５に戻して待機状態に移行する。送信中でなければ（Ｓ１２５：ＮＯ）、ＣＰＵ６１は、ＯＳから受信イベントの通知を受けたか否か判断する（Ｓ１２６）。受信イベントの通知がなければ（Ｓ１２６：ＮＯ）、ＣＰＵ６１は処理をＳ１２５に戻し、待機状態に移行する。受信イベントの通知があれば（Ｓ１２６：ＹＥＳ）、ＣＰＵ６１は、ＯＳに従う処理によってＩＰ／ＴＣＰヘッダを除去した結合音データを受信用のソケットバッファから取得し（Ｓ１２７）、そのまま送信用のソケットバッファに記憶する（Ｓ１２８）。ＣＰＵ６１は、ＯＳに対し、結合音データの送信を指示する送信リクエストを出力する。ＣＰＵ６１は、ＯＳに従って、送信対象の会議端末３または経路上で次に位置する中継サーバ６のネットワークアドレスを送信先に指定したＩＰ／ＴＣＰヘッダを結合音データに付加し、送信を開始する（Ｓ１３０）。ＣＰＵ６１は、処理をＳ１２５に戻し、以降、Ｓ１２５〜Ｓ１３０の処理を繰り返して実行し、遠隔会議に参加する複数の会議端末３間で送受信される音データをそのまま中継する。
【００７８】
以上説明したように、第一実施形態では、ネットワーク８にジッタが生じたり帯域幅が狭くなったりすると、１の会議端末３のＣＰＵ３１は、他の会議端末３に送信する１つの結合音データを送信し終えるまでに時間がかかるようになる。このため、送信バッファは、圧縮音データのデータ量が増える。ＣＰＵ３１は、音データ通信プログラムの実行に従って、送信バッファのデータ量に応じて圧縮音データの結合時間を変更することで、一度に送信する結合音データのデータ量を調整することができる。送信バッファのデータ量が１単位時間より大きい場合、送信バッファは、格納する圧縮音データのデータ量が増えている状態である。この場合にＣＰＵ３１は、圧縮音データの結合時間を１単位時間分増やすことで、結合音データの送信回数を減らすことができる。これにより、ＣＰＵ３１は、送信回数を減らした分、個々の結合音データの送信に必要なヘッダ等を削減することができる。ゆえにＣＰＵ３１は、圧縮音データ生成時のエンコード条件を変更することなくデータ量を減らし、必要な帯域幅を狭くすることでパケット欠落を防いで、結合音データを他の会議端末３に送信でき、送信バッファのデータ量を減らすことができる。
【００７９】
また、送信バッファのデータ量が１単位時間以下である場合、ＣＰＵ３１は、データ送信に必要な帯域幅をネットワーク８に確保できている状態である。この場合にＣＰＵ３１は、圧縮音データの結合時間を１単位時間分減らすことで、結合音データの送信回数を増やすことができる。これにより、他の会議端末３は、音データを、より小さな時間単位で得ることができるので、１の会議端末３における音データの入力と、他の会議端末３における音データの出力との関係において、歪みが小さく円滑なリニア性を確保することができる。また、一回に送受信される音データのデータ量が小さいほど、１の会議端末３における圧縮音データの結合にかかる時間、結合音データの送受信にかかる時間、他の会議端末３における結合音データのデコードから出力にかかる時間等は、短い。ゆえに、ＣＰＵ３１は、１の会議端末３における音データの入力タイミングと、他の会議端末３における音データの出力タイミングとの間に生ずる遅延時間を削減することができる。
【００８０】
また、１の会議端末３は、ネットワーク８においてジッタが発生したり帯域幅の変更が生じたりした場合に影響を受ける送信バッファのデータ量の変化に応じ、結合時間を１単位時間分増やしたり減らしたりできる。すなわち１の会議端末３は、ジッタが発生したり帯域幅が狭くなったりして送信バッファのデータ量が増加すれば、結合時間を１単位時間分増やして必要な帯域幅を減らし、送信を円滑に行えるようにすることで、送信バッファのデータ量を減らす。また、データ量が減少すれば、必要な帯域幅が確保されているので、結合時間を短くして他の会議端末３に送信する音データの入出力の関係におけるリニア性を確保することができる。
【００８１】
また、送信バッファのデータ量が増加した場合、ＣＰＵ３１は、データ量の増加分よりも、結合によって除去したヘッダ等のデータ量の削減分を大きくすることのできる結合数の中で、結合数が最小となるように結合時間を設定する。送信バッファのデータ量が減少した場合、ＣＰＵ３１は、データ量の減少分よりも、分割によって追加したヘッダ等のデータ量の増加分を大きくすることのできる結合数の中で、結合数が最大となるように結合時間を設定する。これにより、１の会議端末３は送信バッファのデータ量を略一定に維持することができる。すなわち、１の会議端末３は、ネットワーク８においてジッタが発生したり帯域幅の変更が生じたりしても、他の会議端末３への結合音データの送信を安定して行うことができる。
【００８２】
また、ネットワーク８においてジッタが発生したり帯域幅の変更が生じたりした場合、中継サーバ６の送信バッファに記憶する圧縮音データのデータ量も、変化を生ずる。ゆえに、ＣＰＵ３１は、１の会議端末３の送信バッファのデータ量と、中継サーバ６の送信バッファのデータ量の合計量の変化に応じて結合時間を設定することで、他の会議端末３への結合音データの送信を安定して行うことができる。
【００８３】
次に、本発明の第二実施形態について説明する。以下に説明する第二実施形態は、会議端末３のＣＰＵ３１が実行する音データ通信プログラムの処理において、音データを圧縮し、結合する処理の過程が第一実施形態と異なる。具体的に、図１０に示す音データ通信プログラムのメインルーチンは、Ｓ３５〜Ｓ３８の処理が、図４に示す第一実施形態に係る音データ通信プログラムのメインルーチンにおける処理と異なる。また、図１１に示す送信処理は、Ｓ４６の処理が、図５に示す第一実施形態に係る送信処理における処理と異なる。従って、以下の説明では、第一実施形態と異なる処理について説明し、同じ処理については説明を簡略化または省略する。なお、図１０、図１１に示すフローチャートにおいて、第一実施形態と同一の処理は、それぞれ図４、図５のフローチャートと同じステップ番号を付している。
【００８４】
図１０に示すように、第二実施形態に係る会議端末３のＣＰＵ３１は、音データ通信プログラムのＳ３０の処理において、音データに発話が含まれる場合（Ｓ３０：ＹＥＳ）、ＲＡＭ３３のサウンドバッファから音データを取得する（Ｓ３１）。次いで、ＣＰＵ３１は、ＲＡＭ３３に記憶する結合時間を取得する（Ｓ３５）。ＣＰＵ３１は音データを、デフォルト設定に基づくエンコード条件を設定した公知のエンコーダで処理して圧縮する（Ｓ３６）。ＣＰＵ３１は、音データの圧縮を、データ長が結合時間に達するまで行う。データ長が結合時間未満である場合（Ｓ３７：ＮＯ）、ＣＰＵ３１は処理をＳ４０に進めてメインルーチンの処理を進行する。ＣＰＵ３１は、メインルーチンにおいてＳ２７〜Ｓ９９の処理を繰り返して実行し、その間、エンコーダによる音データの圧縮処理を継続する。データ長が結合時間に達した場合（Ｓ３７：ＹＥＳ）、ＣＰＵ３１は、圧縮した音データを結合時間分の長さに生成した結合音データを得る。ＣＰＵ３１は、結合音データをＲＡＭ３３の送信バッファに記憶し（Ｓ３８）、処理をＳ４０に進める。
【００８５】
ＣＰＵ３１は、送信処理のサブルーチンを実行する（Ｓ４０）。図１１に示すように、ＣＰＵ３１は、第二実施形態の送信処理において、送信対象の会議端末３に対応する送信バッファに、発話に基づく結合音データが記憶されている場合（Ｓ４２：ＹＥＳ）、結合音データを送信バッファから取り出す（Ｓ４６）。以下、第一実施形態と同様であり、ＣＰＵ３１は、結合音データに対し、付加情報の付加（Ｓ４８）、暗号化（Ｓ５０）、プロトコルヘッダの付加（Ｓ５１）を行って、送信用ソケットバッファに記憶する（Ｓ５２）。ＣＰＵ３１は、ＯＳに対し、結合音データの送信を指示する送信リクエストを出力する。ＣＰＵ３１は、ＯＳに従って、送信対象の会議端末３または経路上で次に位置する中継サーバ６のネットワークアドレスを送信先に指定したＩＰ／ＴＣＰヘッダを結合音データに付加し（Ｓ５２）、送信を開始する（Ｓ５３）。
【００８６】
以上説明したように、第二実施形態では、ＣＰＵ３１は、音データをエンコーダで処理して圧縮する際に、結合時間に基づくデータ長の結合音データを生成する。これにより、ＣＰＵ３１は、音データのエンコードから結合音データの生成を一処理で行うことができるので、音データの送信のための加工にかかる時間を減らし、１の会議端末３における音データの入力タイミングと、他の会議端末３における音データの出力タイミングとの間に生ずる遅延時間を削減することができる。
【００８７】
なお本発明は上記実施形態に限定されず、種々の変更が可能である。会議端末３は、ラップトップ型、タワー型のＰＣに限らず、ノート型のＰＣであってもよいし、スマートフォン、タブレット型端末等であってもよい。会議端末３は、音データ通信プログラムを実行でき、且つネットワーク８に接続でき、マイク４３による音声の収音と、スピーカ４５による音声の出力が可能な端末装置であればよい。また、会議端末３は、マイク４３およびスピーカ４５を内蔵してもよい。
【００８８】
Ｓ６３の処理で、ＣＰＵ３１は、平均データ量のしきい値として１単位時間分のデータ量と比較したが、これに限らず、２以上の単位時間分のデータ量と比較してもよいし、単位時間に限らず、任意の時間分のデータ量と比較してもよい。Ｓ６５、Ｓ６６の処理で、ＣＰＵ３１は、結合時間の増減を１単位時間分ずつ行ったが、２以上の単位時間分ずつ行ってもよい。Ｓ７０の処理で、ＣＰＵ３１は、データ増加量に基づき結合時間の更新を行ったが、例えば図３のグラフに基づくテーブルを作成し、Ｓ６７の処理で時間あたりのデータ増加速度を求め、データ増加速度よりも大きい帯域幅を削減できる結合時間をテーブルから求めてもよい。
【００８９】
Ｓ６１またはＳ７３の処理では過去３秒間のデータ量の平均値を求めたが、過去３秒間に限らず、０．５秒でも２秒でも、任意の時間であってもよい。Ｓ６７またはＳ７８におけるデータ増加量についても同様である。また、会議サーバ１は、中継サーバ６を兼ねてもよい。また、中継サーバ６はなくてもよい。
【００９０】
本発明においては、会議端末３が、「端末装置」に相当する。ＲＡＭ３３が、「記憶装置」に相当する。音データをエンコードして圧縮音データを生成するＳ３２の処理が、「生成ステップ」に相当する。圧縮音データを送信バッファに記憶するＳ３３の処理が、「記憶ステップ」に相当する。自拠点の送信バッファのデータ量を取得するＳ５７もしくはＳ７１の処理が、「取得ステップ」に相当する。平均データ量が１単位時間分のデータ量よりも大きいか否か判断するＳ６３もしくはＳ７５の処理が、「判断ステップ」に相当する。結合時間を１単位時間分増加または減少するＳ６５またはＳ６６もしくはＳ７６またはＳ７７の処理が、「設定ステップ」に相当する。結合時間分の圧縮音データを結合するＳ４５の処理が、「結合ステップ」に相当する。ＯＳによる結合音データの送信を指示するＳ５３の処理が、「送信指示ステップ」に相当する。自拠点の送信バッファのデータ増加量を算出するＳ６７もしくはＳ７８の処理が、「演算ステップ」に相当する。中継サーバ６に送信バッファのデータ量を問い合わせるリクエストを送信するＳ５８の処理が、「送信ステップ」に相当する。中継サーバ６から送信バッファのデータ量を通知するレスポンスを受信するＳ５９の処理が、「受信ステップ」に相当する。
【符号の説明】
【００９１】
１      会議サーバ
３      会議端末
６      中継サーバ
８      ネットワーク
３１      ＣＰＵ
３３      ＲＡＭ
４３      マイク
【図１】
2015106794.tif 000003
【図２】
2015106794.tif 000004
【図３】
2015106794.tif 000005
【図４】
2015106794.tif 000006
【図５】
2015106794.tif 000007
【図６】
2015106794.tif 000008
【図７】
2015106794.tif 000009
【図８】
2015106794.tif 000010
【図９】
2015106794.tif 000011
【図１０】
2015106794.tif 000012
【図１１】
2015106794.tif 000013