(57)【要約】音声会議システム（２００）における現行のアクティブな話者及び予測されるアクティブな話者に対するバッファの効率的な割振りを可能とする方法及びコンピュータプログラム製品。複数の話者に対して音声会議をホストするサーバによって実施されるこの方法及びコンピュータプログラム製品により、話者が「非アクティブな」ステータスから「アクティブな」ステータスに切り換わる際（２０８）、話者に関する音声データの損失が最小限に抑えられる。これは、１組のアクティブな話者バッファ（２１０）、及び１組の予測されるアクティブな話者バッファ（２２０）を使用することによって達せられる。予測されるアクティブな話者バッファ（２２０）は、最新のｘ個のパケットの集合、即ちミリ秒単位の「非アクティブな」話者の音声データを保持し、話者が「アクティブな」話者になる際、そのデータの一部分を予測されるアクティブな話者バッファからアクティブな話者バッファに転送する。このｘ個のパケット、即ちｍミリ秒の記録された「非アクティブな」話者の音声データは、会議の参加者に対する追加の音声パケット送達遅延の導入を回避するために、所定のジッタバッファ充てんレベルまでに限って使用され得る。
2005504450.tif 000002
【特許請求の範囲】
【請求項１】
音声会議システム内の複数の話者から受信した、現行のアクティブな話者及び予測されるアクティブな話者の音声データパケットに対して、バッファを割振る方法であって、
（１）現在、アクティブな話者としても、予測されるアクティブな話者としても指定されていない会議に参加している話者からパケットを受信するステップと、
（２）前記話者が予測されるアクティブな話者として指定されるべきか否かを判断するために、前記パケットを試験するステップと、
（３）前記ステップ（２）の判断が否定的である場合、前記パケットを廃棄するステップと、
（４）前記ステップ（２）の判断が肯定的である場合、
（ａ）１組のｐ個の予測されるアクティブな話者バッファの中に未割振りのバッファが存在するか否かを判断するステップ、
（ｂ）前記ステップ（ａ）の判断が肯定的である場合、前記パケットを前記未割振りのバッファの中に記録するステップ、
（ｃ）前記ステップ（ａ）の判断が否定的である場合、前記話者が予測されるアクティブな話者として指定されるべきか否かを判断するために、前記パケットを試験するステップ、
（ｄ）前記ステップ（ｃ）の判断が否定的である場合、前記パケットを廃棄するステップ、及び
（ｅ）前記ステップ（ｃ）の判断が肯定的である場合、前記１組のｐ個の予測されるアクティブな話者バッファから割当て変更することができるバッファを特定し、前記パケットを前記特定されたバッファの中に記録するステップを行うステップと
を含む方法。
【請求項２】
（５）前記話者を現時点でアクティブな話者であると判断するステップと、
（６）１組のｎ個のアクティブな話者バッファの１つのバッファを前記話者に割振るステップと、
（７）前記データの一部分を、前記特定された予測されるアクティブな話者バッファから、前記１組のｎ個のアクティブな話者バッファの中の前記話者に割振られた前記１つのバッファに、転送するステップとを、さらに含む請求項１に記載の方法。
【請求項３】
前記１組のｎ個のアクティブな話者バッファの中の、前記話者に割振られた前記１つのバッファに、転送される前記データの前記一部分が、Ｍ＞Ｊである場合にＭ−Ｊ個のパケットに等しく、Ｍ≦Ｊである場合にゼロ個のパケットに等しく、
Ｍが所定の所望のジッタバッファ深度であり、Ｊが現行のジッタバッファ深度であり、
話者が「非アクティブな」ステータスから「アクティブな」ステータスに切り換わる際に、前記話者に関する音声データの損失が最小限に抑えられる請求項２に記載の方法。
【請求項４】
前記第１番目の試験するステップによって、前記パケットのエネルギーが、現在、アクティブな話者として指定されている話者のエネルギーの相加平均のｋパーセントよりも大きいか否かが判断される請求項１に記載の方法。
【請求項５】
前記第２番目の試験するステップによって、前記パケットのエネルギーが、現在、アクティブな話者として指定されている話者のエネルギーの相加平均のｊパーセントよりも大きいか否かが判断され、ｊ＞ｋである請求項４に記載の方法。
【請求項６】
前記第１番目の試験するステップによって、前記パケットのエネルギーが、現在、予測されるアクティブな話者として指定されている話者のエネルギーの相加平均のｋパーセントよりも大きいか否かが判断される請求項１に記載の方法。
【請求項７】
前記第２番目の試験するステップによって、前記パケットのエネルギーが、現在、予測されるアクティブな話者として指定されている話者のエネルギーの相加平均のｊパーセントよりも大きいか否かが判断され、ｊ＞ｋである請求項６に記載の方法。
【請求項８】
前記第１番目の試験するステップによって、前記パケットのエネルギーが、現在、アクティブな話者として指定されている話者のエネルギーの加重平均のｋパーセントよりも大きいか否かが判断され、
前記加重平均が、現在、アクティブな話者として指定されている前記話者のバッファのそれぞれの中のより最近に受信されたパケットに対して、より以前に受信されたパケットよりも重い重み付けが成されている請求項１に記載の方法。
【請求項９】
前記第２番目の試験するステップによって、前記パケットのエネルギーが、現在、アクティブな話者として指定されている話者のエネルギーの加重平均のｊパーセントよりも大きいか否かが判断され、
前記加重平均が、現在、アクティブな話者として指定されている前記話者のバッファのそれぞれの中のより最近に受信されたパケットに対して、より以前に受信されたパケットよりも重い重み付けが成されており、ｊ＞ｋである請求項８に記載の方法。
【請求項１０】
前記第１番目の試験するステップによって、前記パケットのエネルギーが、現在、予測されるアクティブな話者として指定されている話者のエネルギーの加重平均のｋパーセントよりも大きいか否かが判断され、
前記加重平均が、現在、予測されるアクティブな話者として指定されている前記話者のバッファのそれぞれの中のより最近に受信されたパケットに対して、より以前に受信されたパケットよりも重い重み付けが成されている請求項１に記載の方法。
【請求項１１】
前記第２番目の試験するステップによって、前記パケットのエネルギーが、現在、予測されるアクティブな話者として指定されている話者のエネルギーの加重平均のｊパーセントよりも大きいか否かが判断され、
前記加重平均が、現在、予測されるアクティブな話者として指定されている前記話者のバッファのそれぞれの中のより最近に受信されたパケットに対して、より以前に受信されたパケットよりも重い重み付けが成されており、ｊ＞ｋである請求項１０に記載の方法。
【請求項１２】
前記第１番目の試験するステップによって、前記パケットのエネルギーが、現在、アクティブな話者として指定されている話者のエネルギーの中の最小のエネルギーのｋパーセントよりも大きいか否かが判断される請求項１に記載の方法。
【請求項１３】
前記第２番目の試験するステップによって、前記パケットのエネルギーが、現在、アクティブな話者として指定されている話者のエネルギーの中の最小のエネルギーのｊパーセントよりも大きいか否かが判断され、ｊ＞ｋである請求項１２に記載の方法。
【請求項１４】
前記第１番目の試験するステップによって、前記パケットのエネルギーが、現在、予測されるアクティブな話者として指定されている話者のエネルギーの中の最小のエネルギーのｋパーセントよりも大きいか否かが判断される請求項１に記載の方法。
【請求項１５】
前記第２番目の試験するステップによって、前記パケットのエネルギーが、現在、予測されるアクティブな話者として指定されている話者のエネルギーの中の最小のエネルギーのｊパーセントよりも大きいか否かが判断され、ｊ＞ｋである請求項１４に記載の方法。
【請求項１６】
ステップ（ｅ）が、前記１組のｐ個の予測されるアクティブな話者バッファの中の何れのバッファが最小の平均エネルギー値を有するかを判断するステップを含む請求項１に記載の方法。
【請求項１７】
前記１組のｎ個のアクティブな話者バッファ及び前記１組のｐ個の予測されるアクティブな話者バッファが、先入れ先出し（ＦＩＦＯ）待ち行列である請求項１に記載の方法。
【請求項１８】
ｎ＝ｐである請求項１７に記載の方法。
【請求項１９】
音声会議システム内で複数の話者が「非アクティブな」ステータスから「アクティブな」ステータスに切り換わる際に、前記複数の話者に関する音声データの損失を最小限に抑えるための方法であって、
（１）現在、アクティブな話者として指定されていない会議に参加している話者から、複数のパケットを受信するステップと、
（２）前記複数のパケットを「非アクティブな」話者バッファの中に記録するステップと、
（３）所定の時間が経過した後、前記複数のパケットの第１のサブセットを廃棄するステップと、
（４）前記話者がアクティブな話者として指定されるべきか否かを判断するステップと、
（５）前記ステップ（４）の判断が肯定的であった場合、
（ａ）１組のｎ個のアクティブな話者バッファの中の１つのバッファを、前記話者に割振り、且つ
（ｂ）前記複数のパケットの第２のサブセットを、前記非アクティブな話者バッファから、前記１組のｎ個のアクティブな話者バッファの中の前記話者に割振られた前記１つのバッファに転送するステップと
を含む方法。
【請求項２０】
前記複数のパケットの前記第２のサブセットが、Ｍ＞Ｊである場合にＭ−Ｊ個のパケットを含み、Ｍ≦Ｊである場合にゼロ個のパケットを含み、
Ｍが所定の所望のジッタバッファ深度であり、Ｊが現行のジッタバッファ深度である請求項１９に記載の方法。
【請求項２１】
コンピュータに、音声会議システム内の複数の話者から受信した、現行のアクティブな話者及び予測されるアクティブな話者の音声データパケットに対して、バッファを割振らさせる制御ロジックを記録している、コンピュータ使用可能な媒体を備えているコンピュータプログラム製品であって、
前記制御ロジックが、
現在、アクティブな話者としても、予測されるアクティブな話者としても指定されていない会議に参加している話者からのパケットを、前記コンピュータに受信させる第１のコンピュータ読み取り可能なプログラムコード手段と、
前記話者が予測されるアクティブな話者として指定されるべきか否かを判断するために、前記コンピュータに前記パケットを試験させる第２のコンピュータ読み取り可能なプログラムコード手段と、
前記第２のコンピュータ読み取り可能なプログラムコード手段の判断が否定的である場合、前記コンピュータに、前記パケットを廃棄させる第３のコンピュータ読み取り可能なプログラムコード手段と、
前記第２のコンピュータ読み取り可能なプログラムコード手段の判断が肯定的である場合に、
１組のｐ個の予測されるアクティブな話者バッファの中に、未割振りのバッファが存在するか否かを、前記コンピュータに判断させる第５のコンピュータ読み取り可能なプログラムコード手段のステップ、
前記第５のコンピュータ読み取り可能なプログラムコード手段の判断が肯定的である場合、前記コンピュータに、前記パケットを前記未割振りのバッファの中に記録させる第６のコンピュータ読み取り可能なプログラムコード手段のステップ、
前記第５のコンピュータ読み取り可能なプログラムコード手段の判断が否定的である場合、前記話者が予測されるアクティブな話者として指定されるべきか否かを判断するために、前記コンピュータに前記パケットを試験させる第７のコンピュータ読み取り可能なプログラムコード手段のステップ、
前記第７のコンピュータ読み取り可能なプログラムコード手段の判断が否定的である場合、前記コンピュータに前記パケットを廃棄させる第８のコンピュータ読み取り可能なプログラムコード手段のステップ、及び
前記第７のコンピュータ読み取り可能なプログラムコード手段の判断が肯定的である場合、前記コンピュータに、前記１組のｐ個の予測されるアクティブな話者バッファから割当て変更することができるバッファを特定し、前記パケットを前記特定されたバッファの中に記憶させる第９のコンピュータ読み取り可能なプログラムコード手段のステップを、前記コンピュータに行わせる第４のコンピュータ読み取り可能なプログラムコード手段と
を備えているコンピュータプログラム製品。
【請求項２２】
前記コンピュータに、前記話者が、現時点でアクティブな話者であると判断させる第１０のコンピュータ読み取り可能なプログラムコード手段と、
前記コンピュータに、１組のｎ個のアクティブな話者バッファの中の１つのバッファを、前記話者に対して割振らせる第１１のコンピュータ読み取り可能なプログラムコード手段と、
前記コンピュータに、前記特定された予測されるアクティブな話者バッファから、前記１組のｎ個のアクティブな話者バッファの中の前記話者に割振られた前記１つのバッファに、前記データの一部分を転送させる第１２のコンピュータ読み取り可能なプログラムコード手段と
をさらに備えている請求項２１に記載のコンピュータプログラム製品。
【請求項２３】
前記１組のｎ個のアクティブな話者バッファの中の前記話者に割振られた前記１つのバッファに転送される前記データの前記一部分が、Ｍ＞Ｊである場合にＭ−Ｊ個のパケットに等しく、Ｍ≦Ｊである場合にゼロ個のパケットに等しく、
Ｍが所定の所望のジッタバッファ深度であり、Ｊが現行のジッタバッファ深度であり、
話者が「非アクティブな」ステータスから「アクティブな」ステータスに切り換わる際に、前記話者に関する音声データの損失が最小限に抑えられる請求項２２に記載のコンピュータプログラム製品。
【請求項２４】
前記１組のｎ個のアクティブな話者バッファ、及び前記１組のｐ個の予測されるアクティブな話者バッファが、先入れ先出し（ＦＩＦＯ）待ち行列である請求項２１に記載のコンピュータプログラム製品。
【請求項２５】
コンピュータに、音声会議システム内で複数の話者が「非アクティブな」ステータスから「アクティブな」ステータスに切り換わる際に、前記複数の話者に関する音声データの損失を最小限に抑えさせる制御ロジックを記憶している、コンピュータ使用可能な媒体を備えているコンピュータプログラム製品であって、
前記制御ロジックが、
前記コンピュータに、現在、アクティブな話者として指定されていない会議に参加している話者から、複数のパケットを受信させる第１のコンピュータ読み取り可能なプログラムコード手段と、
前記コンピュータに、前記複数のパケットを「非アクティブな」話者バッファの中に記録させる第２のコンピュータ読み取り可能なプログラムコード手段と、
前記コンピュータに、所定の時間間隔が経過した後、前記複数のパケットの第１のサブセットを廃棄させる第３のコンピュータ読み取り可能なプログラムコード手段と、
前記コンピュータに、前記話者がアクティブな話者として指定されるべきか否かを判断させる第４のコンピュータ読み取り可能なプログラムコード手段と、
前記第４のコンピュータ読み取り可能なプログラムコード手段の判断が肯定的である場合、前記コンピュータに、１組のｎ個のアクティブな話者バッファの中の１つのバッファを前記話者に割振らせる第５のコンピュータ読み取り可能なプログラムコード手段と、
前記第４のコンピュータ読み取り可能なプログラムコード手段の判断が肯定的である場合、前記コンピュータに、前記非アクティブな話者バッファから、前記１組のｎ個のアクティブな話者バッファの中の前記話者に割振られた前記１つのバッファに、前記複数のパケットの第２のサブセットを転送させる第６のコンピュータ読み取り可能なプログラムコード手段とを備えているコンピュータプログラム製品。
【請求項２６】
前記複数のパケットの前記第２のサブセットが、Ｍ＞Ｊである場合にＭ−Ｊ個のパケットを含み、Ｍ≦Ｊである場合にゼロ個のパケットを含み、
Ｍが所定の所望のジッタバッファ深度であり、Ｊが現行のジッタバッファ深度である請求項２５に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータベースの電話網に関し、特に、電話会議を管理するサーバに関する。
【背景技術】
【０００２】
今日の技術環境では、複数の地理的場所にいる数名の人々が互いに同時にコミュニケーションする多数の方法が存在している。そのような方法の１つは、音声会議である。音声会議アプリケーションは、地理的に分散しているビジネスユーザ（例えば、全国販売員のミーティング）及び余暇のユーザ（例えば、音声チャット室の参加者）の両方のニーズに応える。
【０００３】
従来の音声会議は、音声会議をホストする集中会議サーバを要した。参加者は、自らの電話機を使用して、公衆サービス電話網（ＰＳＴＮ）（単純旧式電話システム（ＰＯＴＳ）とも呼ばれる）を介して会議サーバにダイヤルインする。
【０００４】
近年、世界的な公共インターネットを介して、声（すなわち、音声）を伝送する可能性が認識されている。当分野の技術者には理解されるように、インターネットによって行われる接続は、インターネットに接続するコンピュータによって利用される一般的なプロトコル一式（suite）に基づいている。一般的なプロトコル一式の一部が、インターネット標準（ＳＴＤ）５、コメント要求（ＲＦＣ）７９１（インターネットアーキテクチャボード）で定義されているインターネットプロトコル（ＩＰ）である。ＩＰは、ネットワークレベルのパケット（すなわち、伝送されるデータの単位）交換プロトコルである。
【０００５】
ＩＰを介して音声を伝送すること（ＶｏＩＰ）は、コンピュータ科学者が、マイクロフォン、スピーカ、及びサウンドカードを備えたパーソナルコンピュータ（ＰＣ）を使用して音声を交換することを実験してから始まった。ＶｏＩＰは、国際電気通信連合電気通信部門（ＩＴＵ−Ｔ）によって開発されたＨ．３２３インターネット電話標準、及びインターネットエンジニアリングタスクフォース（ＩＥＴＦ）マルチパーティマルチメディアセッション制御（ＭＭＵＳＩＣ）作業部会において開発されたセッション開始プロトコル（Session Initiation Protocol)(SIP)の採用でさらに発展した。
【０００６】
会議サーバ（マルチポイント制御ユニット（ＭＣＵ）とも呼ばれる）は、ＰＳＴＮを介する従来の電話機器ではなく、ＰＣベースの機器及びインターネットを使用して、又はゲートウェイを介する電話機を使用して、参加者が集中ＭＣＵに接続される音声会議を、ホストするように開発された。
【０００７】
ただし、インターネットベースの電話をサポートするＭＣＵにも従来のＰＳＴＮベースの電話をサポートする会議サーバにも、１つの共通する問題が存在する。次に、この問題を説明する（本明細書では、会議サーバとＭＣＵを全体としてＭＣＵと呼ぶ）。
【０００８】
ＭＣＵは、一般に、音声会議の２名又はそれより多くの参加者間のマルチポイント通信を可能にする。ＭＣＵは、それぞれが多数の参加者を有する多数の会議を、一度にサポートすることができる。所与の会議の各参加者は、アクティブな話者自身を例外として、最大でｎ名のアクティブな話者の混合音を聞き、アクティブな話者自身は、自身を除いた混合音を聞く（これは、要するに、当事者が音声会議中に「自分が話しているのを聞く」ことがないようにする「エコー抑制」機能である）。本明細書における説明を簡単にするために、当分野の技術者には理解されるように、アクティブな話者の検出、音声のミキシング、又は多重化、切替え、及びストリーミングを行うＭＣＵ内部のモジュールを本明細書では、「ミキサ（Mixer）」と呼ぶ。
【０００９】
ミキサは、複数の音声ストリームのミキシングを行う必要がある場合、又は異なる参加者からの異なるパケットサイズを受信する必要がある場合、音声データを受信するバッファ（すなわち、メモリ記憶域）を必要とする。このバッファは、パケット着信時刻のジッタ（送達時刻のランダムな変動）に対応することも必要である場合には、大きいものである可能性がある。メモリの点からは、会議のすべての参加者にではなく、アクティブな話者だけにバッファを割り当て、アクティブな話者が代わったときにバッファを割り当て直すことが最も効率的である。ただし、アクティブな話者に関するデータだけを収集することには欠点がある。しばしば、ミキサ内部のアクティブな話者の更新イベントは、ある話者を新しいアクティブな話者として選択することをトリガする（引き起こす）だけ十分に「音量の大きい」パケットが通過するまで、新しいアクティブな話者を検出しない。このために、新しいアクティブな話者の音声ストリームの中で、最初の語が部分的に失われる可能性がある。
【００１０】
したがって、以上のことから、必要とされているのは、音声会議システムにおける現行のアクティブな話者及び予測されるアクティブな話者に対するバッファの効率的な割振りのための方法及びコンピュータプログラム製品である。
【発明の開示】
【課題を解決するための手段】
【００１１】
本発明は、上記で明らかにした必要性を満たす、音声会議システムにおける現行のアクティブな話者及び予測されるアクティブな話者に対する効率的な先入れ先出しＦＩＦＯ（すなわち、待ち行列）割振りのための方法及びコンピュータプログラム製品を対象とする。
【００１２】
本発明の方法及びコンピュータプログラム製品は、現在、「アクティブな」話者として指定されておらず、「予測されるアクティブな」話者としても指定されていない会議に参加する話者からパケットを受信する。次に、その話者が、現時点で、「予測されるアクティブな」話者として指定されるべきかどうかを判断する第１の試験が適用される。この試験は、パケットのエネルギー測定（又は何らかの所定の期間にわたって平均された、そのパケットを含む話者のエネルギー）と、現行の「アクティブな」話者又は「予測されるアクティブな」話者のエネルギーの、多数の可能な関数のうちの任意の１つの関数との比較である。本発明の方法及びコンピュータプログラム製品は、パケットが第１の試験に不合格であった場合、そのパケットを廃棄する。パケットが第１の試験に合格した場合、下記で説明するステップが行われる。
【００１３】
第１に、１組のｐ個の「予測されるアクティブな」話者バッファの中で未割振りのバッファが存在するか否かの判断が行われる。存在する場合、パケットは、その未割振りのバッファの中に記録される。存在しない場合、パケットに対して第２の試験を使用することにより、話者が現時点で「予測されるアクティブな」話者として指定されるべきか否かの判断が行われ、これにより、１組のｐ個の「予測されるアクティブな」話者バッファの１つを使用して、現行の予測されるアクティブな話者が置き換えられる。第２の試験は、第１の試験と同様に、パケットのエネルギー測定（又は、何らかの所定の期間にわたって平均された、そのパケットを含む話者のエネルギー）と、現行の「アクティブな」話者又は「予測されるアクティブな」話者のエネルギーの、多数の可能な関数のうちの任意の１つの関数との比較であるが、第１の試験よりも高いしきい値を伴う。
【００１４】
次に、パケットは、第２の試験に不合格であった場合、廃棄される。パケットが第２の試験に合格した場合、割当て変更することが可能な１組のｐ個の「予測されるアクティブな」話者バッファからバッファが特定され、パケットが、その特定されたバッファの中に記録される。この時点で、話者は、「予測されるアクティブな話者」と見なされ、その話者から受信されたデータが、予測されるアクティブな話者バッファの中に受信される。
【００１５】
その話者が「アクティブな話者」となった後、予測されるアクティブな話者バッファからのデータの一部が、アクティブな話者データとして使用される。（これを行う１つの方法は、その話者の予測されるアクティブな話者バッファをアクティブな話者バッファとすることである。）一実施の形態では、使用されるデータの部分は、Ｍ−Ｊ個のパケットに等しい。ただし、Ｍ＞Ｊであると想定し、Ｍは所定の所望のジッタバッファ深度であり、Ｊは現行のジッタバッファ深度である。Ｍ≦Ｊである場合には、その話者の予測されるアクティブな話者バッファからのデータは全く使用されない（すなわち、ゼロ個のパケット）。これにより、話者が「非アクティブな」ステータスから「アクティブな」ステータスに切り換わる際、話者に関する音声データの損失が最小限に抑えられ、予測されるアクティブな話者バッファの中に保存されている話者のデータをまず使用することによって導入される遅延が、所望のジッタバッファ深度Ｍを決して超えないことが確実になる。
【００１６】
本発明の利点は、本発明が、話者が実際にアクティブになる前に話者から音声データを収集することにより、話者が「非アクティブな」ステータスから「アクティブな」ステータスに切り換わる際に、話者に関する音声データの損失を最小限に抑えることである。これは、メモリ効率の高いやり方で、さらなる遅延を導入することなく行われる。
【００１７】
本発明の別の利点は、本発明が、将来のアクティブな話者を予測する方法を提供して、ＭＣＵによって収集される非アクティブな話者データの量を制限することである。
【００１８】
本発明の別の利点は、本発明が、単一のバッファ又は複数のバッファの中に「非アクティブな」話者音声データの最新のｘ個のパケット、又はｍミリ秒の集合を保持し、その非アクティブな話者がアクティブな話者になった場合にそのデータを使用するための方法を提供することである。
【００１９】
本発明のさらに別の利点は、さらなる音声パケット送達遅延を導入するのを回避するため、所定のジッタバッファ充てんレベルまでに限ってｘ個のパケット、又はｍミリ秒の記憶済みの「非アクティブな」話者音声データを使用できることである。
【００２０】
本発明のさらなる特徴及び利点、ならびに本発明の様々な実施の形態の構造及び動作を添付の図面を参照して以下に詳細に説明する。
【００２１】
本発明の特徴及び利点は、以下に提示する詳細な説明を図面と併せて考慮したとき、より明らかになる。図面では、同様の符号が、同一の要素、又は機能的に類似する要素を示している。さらに、符号の左端の数字は、その符号が最初に出現した図面を示している。
【発明を実施するための最良の形態】
【００２２】
Ｉ．システムアーキテクチャの概要
本発明は、話者が「非アクティブな」状態から「アクティブな」状態に切り換わる際に、話者に関する音声データの損失を最小限に抑える、音声会議システムにおける現行のアクティブな話者及び予測されるアクティブな話者に対する効率的な先入れ先出し（ＦＩＦＯ）（すなわち、待ち行列）割振りのための方法及びコンピュータプログラム製品を対象とする。
【００２３】
本発明の好ましい実施の形態では、サービスプロバイダは、会議サービスに加入するクライアント（すなわち、参加者）が、マルチパーティ音声会議アプリケーションに参加できるように、基盤（すなわち、ＭＣＵのサイト）、合意条件、及び施設を供給する。また、サービスプロバイダは、本明細書の説明を読むことで当分野の技術者には明らかであるように、顧客サービス、顧客サポート、及び顧客への料金請求も行う。クライアントは、現在、アクセスできる何らかの機器（例えば、ＰＣ、電話機等）及び何らかのプロトコル（例えば、ＰＳＴＮ、ＳＩＰ、Ｈ．３２３等）を使用してサーバに接続する。
【００２４】
図１には、様々な構成要素間の接続を示す、本発明の実施の形態のシステムアーキテクチャを例示するブロック図が示されている。より具体的には、図１は、ＩＰベースの会議と電話機ベースの会議をともにサポートするネットワークアーキテクチャ１００を示している。アーキテクチャ１００は、インターネットサービスプロバイダ（ＩＳＰ）によって通常、運営される中間レベルネットワーク１０４を介して、ワイドエリアネットワーク（例えば、公共のインターネット、したがって、World Wide Web（ＷＷＷ））１０６に接続する複数のＰＣベースのクライアント１０２（クライアント１０２ａ〜１０２ｎとして示されている）を含む。ワイドエリアネットワーク１０６は、複数の会議サーバ、即ち複数のＭＣＵ１１６（ＭＣＵ１１６ａ〜ｎとして示す）を含むサービスプロバイダのＭＣＵサイト施設１１４に接続されている。
【００２５】
また、アーキテクチャ１００は、ＰＳＴＮ（即ち、回線交換網）を介してゲートウェイ１１２に接続する複数の電話機ベースのクライアント１１０（クライアント１１０ａ〜１１０ｎとして示す）も含む。ゲートウェイ１１２は、複数のＭＣＵ１１６を含むサービスプロバイダの施設１１４に接続されている。
【００２６】
各ＭＣＵ１１６は、本明細書で説明するように、クライアント１０２及び／又はユーザ１１０に対して１つの音声会議を扱う能力を有する、１つ又は複数の具体的なミキサ（図示せず）を含む。
【００２７】
また、アーキテクチャ１００は、本明細書の説明を読むことで当分野の技術者には明白となるように、会議機能、顧客サービス機能、顧客サポート機能、及び顧客への料金請求機能を提供するために、サービスプロバイダによって運営されるコールセンタ１０８も含む。
【００２８】
前述の例に関して、本発明を説明する。これは、単に便宜のためであり、本発明の適用を制限するものではない。実際に、以下の説明を読めば、どのように以下の本発明をその他の実施の形態（例えば、１つ又は複数のＭＣＵ１１６が、本明細書で例示したプロトコル及び機器以外のプロトコル及び機器を扱う）として実施するかが、当分野の技術者には明らかとなる。
【００２９】
図１では、１つのゲートウェイ１１２だけを示しているが、システム１００は、ローカルエリアネットワーク又はワイドエリアネットワークを介して、分散された形で（又は、場合によっては、耐障害性のためにミラーリングされた）接続された１つ又は複数のゲートウェイ１１２を利用できることが、当分野の技術者には明白であろう。そのような実施の形態では、本明細書における説明を読むことによって、当分野の技術者には明白となるように、各ゲートウェイ１１２は、特定のタイプのクライアント１０２又はユーザ１１０専用であり、それらからの接続を（場合によっては、プライベートＩＰネットワークなどの、グローバルインターネット１０６又はＰＳＴＮ以外の通信網を使用して）サポートすることも可能である。
【００３０】
最後に、図１では、説明を簡単にするために、１つのコールセンタ１０８を示しているが、システム１００は、異なる場所に物理的に位置し、且つ、複数のＭＣＵ１１６をそれぞれが有する１つ又は複数のＭＣＵサイト１１４を制御する、１つ又は複数のコールセンタを利用できることが、当分野の技術者には明らかであろう。
【００３１】
以下に、システム１００の構成要素、及びそれらの機能をより詳細に説明する。
【００３２】
「クライアント」、「当事者(パーティー)」、「参加者」、「ユーザ」、「話者」という用語、ならびにこれらの用語の複数形が、本発明に係る、音声会議における現行のアクティブな話者及び予測されるアクティブな話者の効率的なＦＩＦＯ割振りのための方法及びコンピュータプログラム製品にアクセスし、この方法及びコンピュータプログラム製品を使用し、及び／又はこの方法及びコンピュータプログラム製品から便益を得る人々を指すものとして、本明細書全体において、区別なく使用されることがある。
【００３３】
ＩＩ．ＦＩＦＯアーキテクチャ
図２には、本発明の実施の形態に係る状態遷移図２００が示されている。状態遷移図２００は、ＭＣＵ１１６内部のＦＩＦＯの３つのグループ（すなわち、「状態」２１０、２２０、及び２３０）、ならびに、データパケットを、それらのＦＩＦＯグループに導き、及びそれらのＦＩＦＯグループから導くイベント（すなわち、「遷移」２０２〜２０８）を示している。ＦＩＦＯの３つのグループには、「アクティブな話者」ＦＩＦＯグループ２１０、「（割振り済み）予測されたアクティブな話者」ＦＩＦＯグループ２２０、及び「未割振りの予測されたアクティブな話者」ＦＩＦＯグループ２３０が含まれる。
【００３４】
音声会議中、ＭＣＵ１１６は、会議の参加者から音声パケットを常時、受信する。ただし、所定の時間間隔で、又はＭＣＵ１１６によって所定の合計数のパケットが受信された時点（すなわち、スケジュール設定されたアクティブな話者更新イベント）においてのみ、「アクティブな」話者のリストが更新される必要がある。当分野の技術者には明らかであるように、会議がＮ名の参加者を有する場合、サーバは、ある数ｎ名の話者だけ「アクティブ」（すなわち、単に聞いているだけでなく、実際に発言している参加者）であると見なすことができる。（例えば、ｎ＝３＜＜Ｎである。）これは、アクティブな話者の数が大きすぎる場合、サーバ１１６によって音声会議のすべてのＮ名の参加者に送信されるデータが、理解不能（すなわち、あまりにも多くの参加者が重なり合って発言している）になるからである。
【００３５】
したがって、一実施の形態では、「アクティブな話者」ＦＩＦＯグループ２１０は、ｎ個のＦＩＦＯ（すなわち、待ち行列）を含み、「予測されるアクティブな話者」ＦＩＦＯグループ２２０は、合計でｐ個のＦＩＦＯを含み、また「未割振りの」ＦＩＦＯグループ２３０は、合計でｕ個のＦＩＦＯを含む。ここで、（ｐ＋ｕ）≦ｎ  である。例えば、一実施の形態では、ＭＣＵ１１６は、Ｎ＝１５名の参加者の音声会議を運営（ホスト）でき、一度に最大でｎ＝３名のアクティブな話者を許容できるだけである。会議中のある時点で、それぞれがグループ２１０の中の３つのＦＩＦＯの１つに割振られた３名のアクティブな話者が、実際に存在することがある。さらに、参加者の中に１名だけ、「予測されるアクティブな話者」が存在し、残りの１１名の参加者は「沈黙している」ことがある。そのような状況では、グループ２２０の中にｐ＝１個のＦＩＦＯが存在し、グループ２３０の中にｕ＝２個のＦＩＦＯが存在することになる（即ち、（ｐ＋ｕ）≦ｎ）。即ち、合計で３名の「予測された話者」ＦＩＦＯが存在し、１つは割振り済みグループ２２０の中に存在し、２つは未割振りのグループ２３０の中に存在する（即ち、（１＋２）≦３）。
【００３６】
図２を再び参照すると、アクティブな話者である参加者が「アクティブな」話者でなくなり、「非アクティブな」話者になったとき、遷移２０２が生じる。遷移２０２によって、その話者の音声パケットが、「アクティブな話者」ＦＩＦＯグループ２１０内のｎ個の待ち行列の１つの中に、もはや受信されないことが確実になる。遷移２０２は、アクティブな話者更新イベント中だけ、ＭＣＵ１１６内部に生じる。
【００３７】
遷移２０４は、「非アクティブな」参加者が「アクティブな」話者になったときに生じる。遷移２０４によって、その話者の音声パケットが、現時点で、「アクティブな話者」ＦＩＦＯグループ２１０内のｎ個の待ち行列の１つに受信されることが確実になる。遷移２０４は、アクティブな話者更新イベント中だけ、ＭＣＵ１１６内部に生じる。
【００３８】
遷移２０６は、「非アクティブな」参加者が「予測されるアクティブな」話者になったときに生じる。遷移２０６によって、その話者の音声パケットが、現時点で、「予測されるアクティブな話者」ＦＩＦＯグループ２２０内のｐ個の待ち行列の１つに受信されることが確実になる。（より具体的には、グループ２３０内のｕ個の未割振りのＦＩＦＯの１つが、グループ２２０に移される。）遷移２０６は、任意のパケット着信イベント中に（すなわち、アクティブな話者更新イベント中だけに限らず）ＭＣＵ１１６内部に生じ得る。
【００３９】
遷移２０８は、「予測されるアクティブな」参加者が「アクティブな」話者になったときに生じる。遷移２０８によって、その話者の音声パケットが、現時点で、「アクティブな話者」ＦＩＦＯグループ２１０内のｎ個の待ち行列の１つに受信されることが確実になる。遷移２０８は、アクティブな話者更新イベント中だけ、ＭＣＵ１１６内部に生じ、その結果、別の当事者（パーティー）のためにグループ２２０の中のＦＩＦＯの１つが開放されるか、又はグループ２３０の中のｕ個の未割振りのＦＩＦＯの一部となる。
【００４０】
本明細書における説明を読むことによって、当分野の技術者には理解されるように、新たに指定された「予測されるアクティブな話者」は、アクティブな話者更新イベントまで、「アクティブな」話者になることができないことに留意することは重要である。さらに、単に「予測されるアクティブな話者」と指定され、データがグループ２２０ＦＩＦＯの中に収集されることは、確率は高いものの、その話者が「アクティブな」話者になることがあることを、保証するものではない。
【００４１】
ＩＩＩ．システム動作
Ａ．ＦＩＦＯ割振り
前述したとおり、各ＭＣＵ１１６は、クライアント１０２及び／又はユーザ１１０に対して１つの音声会議を扱うことができるミキサの１つ又は複数の具体例を含む。
【００４２】
図３には、本発明の実施の形態に係る一般的な動作の流れの一部を表すフローチャートが示されている。より具体的には、図３は、現行のアクティブな話者及び予測されるアクティブな話者に対する、効率的なＦＩＦＯ割振りを提供するミキサに関する例示的な制御フロー３００を表している。制御フロー３００は、ステップ３０２から開始し、直ちにステップ３０４に進む。
【００４３】
ステップ３０４において、ＭＣＵ１１６が、音声会議のＮ名の参加者の１名からパケットを受信する。次に、その話者がｎ名の「アクティブな」話者のうちの１人であるか否かの判断が行われる。本発明の実施の形態では、ＭＣＵ１１６は、音声会議参加者、及び誰が「アクティブな」話者であるか（また「予測されるアクティブな話者」、「沈黙している」等であるか）についての指定のデータストア（例えば、データベース、リスト、関連リスト、表、フラグ等）を含んでいる。
【００４４】
ステップ３０６において、ステップ３０４の判断が肯定的である場合、データパケットは、アクティブな話者ＦＩＦＯグループ２１０の中のその話者の割振り済み待ち行列の中に入れられる。
【００４５】
ステップ３０８において、ステップ３０４の判断が否定的であった場合、その話者が、現在、ｎ名の「予測されるアクティブな」話者のうちの１人であるか否かの判断が行われる。
【００４６】
ステップ３１０において、ステップ３０８の判断が肯定的であった場合、データパケットは、「予測されるアクティブな話者」ＦＩＦＯグループ２２０の中のその話者の割振り済み待ち行列の中に入れられる。
【００４７】
ステップ３１２において、ステップ３０８の判断が否定的であった場合、その話者を現時点で「予測されるアクティブな話者」と見なすことができるか否かの判断が行われる。即ち、受信されたデータパケットのエネルギーレベルを試験して、
Ｅｎｅｒｇｙpacket＞F1（ｋ，ｉ個のアクティブな話者のエネルギー）
であるか否かが判断される。ここで、Ｆ1（）は、数ｋと、現行のｉ（ただし、ｉ≦ｎ）名のアクティブな話者のエネルギーの関数であり、また、Ｅｎｅｒｇｙpacketは、当分野の技術者には理解されるように、多くの周知の方法によって測定することができる。
【００４８】
Ｆ1（）を計算する前に、当分野の技術者には明らかなように、まず、現行のｉ名のアクティブな話者の各人に対するアクティブな話者バッファ内の、各パケットに関するエネルギーレベルを計算する。次に、現行のｉ名のアクティブな話者の各人に対して、ＦＩＦＯ全体に関して、相加平均又は加重平均を計算する。以上を行った後に初めて、これらのｉ個のエネルギー測定値（すなわち、ＥｎｅｒｇｙFIFO 1、．．．、ＥｎｅｒｇｙFIFO i≦n）を使用して、Ｆ1（）を計算することができる。以上の計算は、Ｆ1（）を計算する前に必要とされるが、ある実施の形態では、ミキサ内部でさらなる計算上のオーバーヘッドを要さない。というのは、そのような計算は、いずれにしても、アクティブな話者更新イベント中に必要とされるからである。
【００４９】
一実施の形態では、Ｆ1（）は、
現行のｉ名のアクティブな話者のエネルギーの相加平均のｋ％に等しい。
例えば、一実施のｐ形態では、ｋ％＝５０％である。別の実施の形態では、ｉ個のアクティブな話者バッファの中で、より最近に受信されたパケットに対して、より以前に受信されたパケットよりも重い重み付けが行われる、パケットエネルギー値の加重平均を、使用することが可能である。
【００５０】
別の実施の形態では、Ｆ1（）は、
ｍｉｎ［アクティブな話者１のエネルギー，．．．，アクティブな話者ｉのエネルギー］のｋ％に等しい。
【００５１】
さらに別の実施の形態では、Ｆ1（）は、数ｋと、現行のｉ（ここで、ｉ≦ｐ）名の予測されるアクティブな話者のエネルギーとの関数であり、前述した２つの形式のどちらかをとることも可能である。
【００５２】
ステップ３１４において、ステップ３１２での判断が否定的であった場合、その話者のパケットは、単に廃棄される。これは、その話者が、現行の「アクティブな」話者ではなく、「アクティブな」話者又は「予測されるアクティブな」話者にもならなかったためである。したがって、ＭＣＵ１１６内部のミキサは、その受信されたパケットに関わる必要がない。
【００５３】
ステップ３１６において、ステップ３１２での判断が肯定的であった場合、「未割振りの予測されるアクティブな話者」ＦＩＦＯグループ２３０内で、未割当てのＦＩＦＯが存在するか（すなわち、ｕ個のＦＩＦＯの中でグループ２３０の中に留まっているＦＩＦＯが存在するか）否かが判断される。
【００５４】
ステップ３１８において、ステップ３１６での判断が肯定的であった場合、「未割振りの予測されるアクティブな話者」ＦＩＦＯグループ２３０内の未割当てのＦＩＦＯが、その時点で、その話者に割り当てられ、受信されたパケットは、新たに割り当てられたＦＩＦＯの中に記録される。そのＦＩＦＯは、この時点で、予測されるアクティブな話者」ＦＩＦＯグループ２２０の一部となる（すなわち、ｐ＝ｐ＋１；かつｕ＝ｕ−１）。
【００５５】
ステップ３２０において、ステップ３１６での判断が否定的であった場合、（ステップ３１２での第１の試験と同様の）第２の試験を使用して、その話者を現時点で「予測されるアクティブな話者」と見なすことができるか否かが判断される。つまり、受信されたデータパケットのエネルギーレベルを試験して、
Ｅｎｅｒｇｙpacket＞Ｆ2（ｊ，ｉ個のアクティブな話者のエネルギー）
であるか否かが判断される。ここで、Ｆ2（）は、数ｊと、現行のｉ（ただし、ｉ≦ｎ）名のアクティブな話者のエネルギーとの関数である。一実施の形態では、Ｆ2（）は、
現行のｉ名のアクティブな話者のエネルギーの相加平均のｊ％（ここで、ｊ＞ｋ）
に等しい（ステップ３１２）。例えば、一実施の形態では、ｊ％＝７５％である。別の実施の形態では、ｉ個のアクティブな話者バッファ内のより最近に受信されたパケットに対して、より以前に受信されたパケットよりも重い重み付けが行われる、パケットエネルギー値の加重平均が、使用され得る。
【００５６】
別の実施の形態では、Ｆ2（）は、
ｍｉｎ［アクティブな話者１のエネルギー，．．．，アクティブな話者ｉのエネルギー］のｊ％（ここで、ｊ＞ｋ）
に等しい（ステップ３１２）。
【００５７】
さらに別の実施の形態では、Ｆ2（）は、数ｊと、現行のｉ（ただし、ｉ≦ｐ）名の予測されるアクティブな話者のエネルギーの関数であり、前述した２つの形式のどちらかをとることも可能である。
【００５８】
ステップ３２２において、ステップ３２０での判断が肯定的であった場合、「予測されるアクティブな話者」ＦＩＦＯグループ２２０内の割当て済みのＦＩＦＯが、その時点で、その話者に割当て変更され、受信されたパケットは、その新たに割当て変更されたＦＩＦＯの中に記録される。グループ２２０内のｐ個の割当て済みのＦＩＦＯのどれが割当て変更されるかは、一実施の形態では、グループ２２０の中のＦＩＦＯ全体で、誰が最も弱いエネルギー測定値を有する参加者であるかによって決まる。別の実施の形態では、割当て変更は、より最近に受信されたパケットに対して、より以前に受信されたパケットよりも重い重み付けが行われる、エネルギー値の加重測定に基づく。
【００５９】
ステップ３２０での判断が否定的であった場合、話者のパケットは、ステップ３１４において、単に廃棄される。
【００６０】
当分野の技術者には理解されるように、ステップ３０２〜３２２は、音声会議のＮ名の参加者の各人に対するミキサによって行われる。したがって、制御フロー３００は、サーバ（ＭＣＵ１１６）が音声会議をホストするのを止める（すなわち、会議が終り、中止される）まで続く。
【００６１】
Ｂ．損失音声データ及び遅延の最小化
制御フロー３００が、音声会議中にＭＣＵ１１６によって常時受信されているパケットの割振りを示しているとして、ここでは、話者が「非アクティブな」ステータスから「アクティブな」ステータスに切り換わる際に、その話者に関して損失する音声データを最小化することについて詳述する。
【００６２】
前述したように、「予測されるアクティブな」話者が、アクティブな話者更新イベント中に現行の「アクティブな」話者になった場合、その話者の音声パケットが、今度は、「アクティブな話者」ＦＩＦＯグループ２１０内のｎ個の待ち行列の１つの中に受信されることが、遷移２０８によって確実になる。より具体的には、「予測されるアクティブな話者」ＦＩＦＯ内のデータが、「アクティブな話者」ＦＩＦＯデータとなる。これは、アクティブな話者ＦＩＦＯを、グループ２１０からその話者に割り当てることによって達せられる。
【００６３】
一実施の形態では、前述のプロセスによって、音声会議のＮ名の参加者へのアクティブな話者データパケットの送達に、更なる遅延が導入されないことを、確実にするために、以下のことが行われる。まず、変数Ｊが、現行のジッタバッファ深度（depth）として定義される。次に、遷移２０８中に、グループ２２０内の「予測されるアクティブな話者」ＦＩＦＯからのＭ−Ｊ個のパケットだけが、グループ２１０内の新たに割り当てられた「アクティブな話者」ＦＩＦＯに転送される。ここで、Ｍ＞Ｊであると想定し、Ｍは所定の所望のジッタバッファ深度であり、また、Ｊは現行のジッタバッファ深度である。Ｍ≦Ｊである場合、パケットは、全く転送されない。これによって、当分野の技術者には理解されるように、更なる遅延が全く加えられないことが確実になる。通常、話者が沈黙の後に話し始める場合、ジッタバッファは低く、したがって、音声パケットのいくつかが使用される。
【００６４】
本発明のその他の実施の形態では、ＭＣＵが、グループ２２０内にｐ個のＦＩＦＯを含み、グループ２３０内にｕ個のＦＩＦＯを含むのではなく、すべての「予測されるアクティブな話者」データが、単一のバッファ（すなわち、ＦＩＦＯ）の中に収集され、話者識別情報のタグが付けられた後、予測されるアクティブな話者が現行のアクティブな話者になる際に（すなわち、遷移２０８中に）、グループ２１０内の正しいＦＩＦＯにコピーされることが可能である。
【００６５】
別の実施の形態では、最新の所定時間間隔に関するすべての非アクティブな話者のデータが、単一の「非アクティブな」話者バッファの中に収集され、話者識別情報のタグが付けられる。次に、遷移２０８中において、非アクティブな話者がアクティブな話者になった際に、そのバッファ中で、話者のデータが探索され、そのデータの一部分（すなわち、ジッタバッファ深度まで）が、グループ２１０内の正しいＦＩＦＯにコピーされる。
【００６６】
さらに別の実施の形態では、遷移２０８（及びＦＩＦＯからのパケットの転送）は、ＦＩＦＯデータ構造の中に記録された音声データを実際に移動させる（即ち、コピーする）のではなく、グループ２２０内のＦＩＦＯが、その時点で、グループ２１０の一部であるとして識別されるようにＦＩＦＯデータ構造にポインタを移動することにより、ミキサの論理コードによって達せられる。
【００６７】
さらに、本明細書における説明を読むことで当分野の技術者には明らかとなるように、グループ２１０、２２０、及び２３０内のＦＩＦＯのそれぞれは、ある実施の形態では、少なくとも所望のジッタバッファ深度の深度Ｄを有する（すなわち、ＤFIFO≧Ｍ）。
【００６８】
ＩＶ．環境
本発明（すなわち、システム１００、遷移図２００のＦＩＦＯグループ及び遷移、フロー３００、又はそれらの部分のいずれか）は、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組合せを使用して実施することができ、また１つ又は複数のコンピュータシステム又はその他の処理システムにおいて実施することができる。実際に、コンピュータシステム４００の一例が、図４に示されている。コンピュータシステム４００は、任意の単一プロセッサ、又はマルチプロセッサのコンピュータを表している。それと併せて、単一スレッドのアプリケーション又はマルチスレッドのアプリケーションを使用することができる。統一された、又は分散されたメモリシステムを使用することができる。コンピュータシステム４００、又はその一部分を使用して、本発明を実施することができる。例えば、本発明のシステム１００は、コンピュータシステム４００のようなコンピュータシステム上で実行されるソフトウェアを含むことが可能である。
【００６９】
一例では、本発明のシステム１００は、ＪＡＶＡ（商標）、プログラミング言語／構造化照会言語（ＰＬ／ＳＱＬ）、ハイパーテキストマークアップ言語（ＨＴＭＬ）、プラクティカルエクストラクションレポートランゲージ（practical extraction report language）（ＰＥＲＬ）、コモンゲートウェイインターフェース／構造化照会言語（ＣＧＩ／ＳＱＬ）などのマルチプラットフォームの（プラットフォームに依存しない）プログラミング言語で実施される。Ｎｅｔｓｃａｐｅ（商標）、ＨｏｔＪａｖａ（商標）、及びＭｉｃｒｏｓｏｆｔ（商標）のＥｘｐｌｏｒｅｒ（商標）ブラウザなどのＪａｖａ（商標）対応、ＪａｖａＳｃｒｉｐｔ（商標）対応のブラウザが使用される。アクティブコンテンツＷｅｂページを使用することができる。そのようなアクティブコンテンツＷｅｂページには、Ｊａｖａ（商標）アプレット又はＡｃｔｉｖｅＸ（商標）コントロール、あるいは現在開発されている、又は将来開発される任意の他のアクティブコンテンツが含まれ得る。ただし、本発明は、Ｊａｖａ（商標）、ＪａｖａＳｃｒｉｐｔ（商標）、Ｊａｖａ（商標）対応、又はそれらに対応しているブラウザに限定されるものではなく、本説明から当分野の技術者には明らかように、現在開発されている、又は将来開発される任意のプログラミング言語及びブラウザで実施することができる。
【００７０】
別の例では、本発明のシステム１００は、高級プログラミング言語（例えば、Ｃ＋＋）及びＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（商標）ＮＴ又はＳＵＮ（商標）ＯＳ環境向けに書かれたアプリケーションを使用して、実施することができる。当分野の技術者には、本明細書の教示から、本発明をどのように、その他の実施の形態として実施するかは明白であろう。
【００７１】
コンピュータシステム４００は、プロセッサ４４４などの１つ又は複数のプロセッサを含む。１つ又は複数のプロセッサ４４４は、前述したルーチンを実施するソフトウェアを実行することができる。各プロセッサ４４４は、通信インフラストラクチャ４４２（例えば、通信バス、クロスバー交換機、又はネットワーク）に接続される。様々なソフトウェアの実施の形態を、この例示的なコンピュータシステムに関して説明する。以下の説明を読むことで、他のコンピュータシステム及び／又はコンピュータアーキテクチャを使用して、どのように本発明を実施するかが、当分野の技術者には明白となろう。
【００７２】
コンピュータシステム４００は、ディスプレイユニット４３０に表示するために、通信インフラストラクチャ４４２から（又は図示していないフレームバッファから）、グラフィックス、テキスト及びその他のデータを転送する表示インターフェース４０２を含むことができる。
【００７３】
また、コンピュータシステム４００は、メインメモリ４４６、好ましくはランダムアクセスメモリ（ＲＡＭ）を含み、２次メモリ４４８も含むことができる。２次メモリ４４８には、例えば、ハードディスクドライブ４５０、及び／又はフレキシブルディスクドライブ、磁気テープドライブ、光ディスクドライブ等を表す、取外し可能な記録装置４５２が含まれ得る。取外し可能な記録装置４５２は、周知の仕方で取外し可能な記録ユニット４５４に対して読み取り及び／又は書込みを行う。取外し可能な記録ユニット４５４は、取外し可能な記録装置４５２によって読み取り及び書込みが行われる、フレキシブルディスク、磁気テープ、光ディスク等を表す。理解されるとおり、取外し可能な記録ユニット４５４は、コンピュータソフトウェア及び／又はデータが記録された、コンピュータによって使用可能な記録媒体を含む。
【００７４】
その他の実施の形態では、２次メモリ４４８は、コンピュータプログラム又はその他の命令をコンピュータシステム４００にロードすることを可能にするための、その他の同様の手段を含むことも可能である。そのような手段には、例えば、取外し可能な記録ユニット４６２及びインターフェース４６０が含まれ得る。例には、（ビデオゲームコンソールデバイスで見られるような）プログラムカートリッジ及びカートリッジインターフェース、（ＥＰＲＯＭ又はＰＲＯＭなどの）取外し可能なメモリチップ及び関連するソケット、ならびにソフトウェア及びデータを取外し可能な記録ユニット４６２からコンピュータシステム４００に転送することを可能にする、その他の取外し可能な記録ユニット４６２及びインターフェース４６０が含まれ得る。
【００７５】
また、コンピュータシステム４００は、通信インターフェース４６４も含むことが可能である。通信インターフェース４６４によって、通信パス４６６を介して、コンピュータシステム４００と外部装置との間で、ソフトウェア及びデータを転送することが可能である。通信インターフェース４６４の例には、モデム、（イーサネットカードなどの）ネットワークインターフェース、通信ポート、前述したインターフェース群等が含まれ得る。通信インターフェース４６４を介して転送されるソフトウェア及びデータは、通信パス４６６を介して通信インターフェース４６４によって受信されることが可能な、電気的信号、電磁気的信号、光信号又はその他の信号である信号４６８の形態である。通信インターフェース４６４は、コンピュータシステム４００がインターネットなどのネットワークとインターフェースを取ることが可能になる手段を、提供することに留意されたい。
【００７６】
本発明は、前述した環境と同様の環境において動作している（つまり、実行している）ソフトウェアを使用して実施され得る。本明細書では、「コンピュータプログラム製品」という用語は、取外し可能な記録ユニット４５４、ハードディスクドライブ４５０に実装されたハードディスク、又は通信パス４６６（無線リンク又はケーブル）を介して通信インターフェース４６４にソフトウェアを搬送する搬送波を、一般的に指すものとして使用する。コンピュータ使用可能な媒体には、磁気媒体、光媒体、又はその他の記録可能な媒体、あるいは搬送波又はその他の信号を伝送する媒体が含まれ得る。以上のコンピュータプログラム製品は、ソフトウェアをコンピュータシステム４００に提供するための手段である。
【００７７】
コンピュータプログラム（コンピュータ制御ロジック（control logic）とも呼ばれる）が、メインメモリ４４６及び／又は２次メモリ４４８の中に記憶される。コンピュータプログラムは、通信インターフェース４６４を介しても受信され得る。そのようなコンピュータプログラムは、実行されたとき、コンピュータシステム４００が、本明細書で述べた本発明の機能を行うことを可能にする。詳細には、コンピュータプログラムは、実行されたとき、プロセッサ４４４が、本発明の機能を行うことを可能にする。したがって、そのようなコンピュータプログラムは、コンピュータシステム４００のコントローラである。
【００７８】
本発明は、ソフトウェア、ファームウェア、ハードウェア、又は以上の任意の組合せの制御ロジックとして実施され得る。本発明がソフトウェアを使用して実施される実施の形態では、そのソフトウェアをコンピュータプログラム製品の中に記録し、取外し可能な記録装置４５２、ハードディスクドライブ４５０、又はインターフェース４６０を使用してコンピュータシステム４００にロードすることができる。若しくは、コンピュータプログラム製品は、通信パス４６６を介してコンピュータシステム４００にダウンロードされ得る。制御ロジック（ソフトウェア）は、１つ又は複数のプロセッサ４４４によって実行されたとき、プロセッサ４４４が、本明細書で説明した本発明の機能を行うようにさせる。
【００７９】
別の実施の形態では、本発明は、例えば、特定用途向け集積回路（ＡＳＩＣ）などのハードウェア構成要素を使用するファームウェア及び／又はハードウェアにおいて、主に実施される。本明細書で説明した機能を行うようにハードウェア状態マシンを実装することは、本明細書の教示から、当分野の技術者には明白であろう。
【００８０】
Ｖ．結論
本発明の様々な実施の形態を以上に説明してきたが、これらの実施の形態は、限定するためではなく、例として示されたものであることを理解されたい。例えば、図３に示した動作の流れは、例示のみを目的としており、本発明は、十分に柔軟性を有しており、且つ構成の変更が可能であり、図示した流れ以外の形で流れることが可能である。
【００８１】
さらに、本発明の趣旨及び範囲を逸脱することなく、本発明の形態及び詳細を様々に変更することが可能であることが、当分野の技術者には明白であろう。したがって、本発明は、前述した例示的な実施の形態のいずれにも限定さるものではなく、特許請求の範囲及びその等価物に従ってのみ定義されるべきものである。
【図面の簡単な説明】
【００８２】
【図１】様々な構成要素間の接続を示す本発明の実施の形態の全体的なシステムアーキテクチャを示すブロック図である。
【図２】本発明の実施の形態に係るミキサのＦＩＦＯアーキテクチャ内部で音声データパケットを導くイベントを示す状態遷移図である。
【図３】本発明の実施の形態に係る一般的な動作の流れを示すフローチャートである。
【図４】本発明を適用した例示的なコンピュータシステムを示すブロック図である。
【図１】
2005504450.tif 000003
【図２】
2005504450.tif 000004
【図３】
2005504450.tif 000005
【図４】
2005504450.tif 000006
【国際公開パンフレット】
2005504450.tif 000007
2005504450.tif 000008
2005504450.tif 000009
2005504450.tif 000010
2005504450.tif 000011
2005504450.tif 000012
2005504450.tif 000013
2005504450.tif 000014
2005504450.tif 000015
2005504450.tif 000016
2005504450.tif 000017
2005504450.tif 000018
2005504450.tif 000019
2005504450.tif 000020
2005504450.tif 000021
2005504450.tif 000022
2005504450.tif 000023
2005504450.tif 000024
2005504450.tif 000025
2005504450.tif 000026
2005504450.tif 000027
2005504450.tif 000028
2005504450.tif 000029
2005504450.tif 000030
2005504450.tif 000031
2005504450.tif 000032
2005504450.tif 000033
2005504450.tif 000034
2005504450.tif 000035
2005504450.tif 000036
2005504450.tif 000037
2005504450.tif 000038
2005504450.tif 000039
2005504450.tif 000040
2005504450.tif 000041
【国際調査報告】
2005504450.tif 000042