(57)【要約】【課題】  ＰＣから出力されるすべてのオーディオストリームのミックス（例えば、グローバル出力）をキャプチャする単純で容易に理解されるオペレーティングシステム機構を提供する。【解決手段】  オペレーティングシステムが、出力デバイスを宛先とするストリーミングオーディオのすべてをキャプチャし、処理に提供することができるオーディオシステムサービスを有する。アプリケーションが、キャプチャされたストリーミングオーディオに対して処理を実行することができる。アプリケーションによって出力され、レンダデバイスを宛先とするあらゆるストリーミングオーディオも、出力デバイスを宛先とする他のストリーミングオーディオとミキシングされるのに先立ち、信号処理のためにキャプチャされることが可能である。【選択図】  図１ｂ
2004320734.tif 000002
【特許請求の範囲】
【請求項１】
伝送されたオーディオストリームをキャプチャするステップと、
前記伝送されたオーディオストリームを環境にレンダリングするステップと、
前記伝送されたオーディオストリームの前記レンダリングを含む環境オーディオストリームをキャプチャするステップと、
前記キャプチャされた環境オーディオストリームから前記キャプチャされた伝送されたオーディオストリームを消去するステップとを含むことを特徴とする方法。
【請求項２】
前記レンダリングするステップ、およびそれぞれの前記キャプチャするステップが、オペレーティングシステムによって実行され、前記消去するステップが、前記オペレーティングシステムによって動作させられている１つまたは複数のプロセッサによって実行されるリアルタイム通信アプリケーション（ＲＴＣ）によって実行されることを特徴とする請求項１に記載の方法。
【請求項３】
前記キャプチャされた伝送されたオーディオストリームが、パケット交換ネットワークから受信されることを特徴とする請求項１に記載の方法。
【請求項４】
前記キャプチャされた伝送されたオーディオストリームは、パケット交換ネットワークから受信されたテレフォニーオーディオストリームであることを特徴とする請求項１に記載の方法。
【請求項５】
前記キャプチャされた環境オーディオストリームからの前記キャプチャされた伝送されたオーディオストリームを前記消去するステップが、ＲＴＣによって実行されることを特徴とする請求項１に記載の方法。
【請求項６】
前記キャプチャされた環境オーディオストリームからの前記キャプチャされた伝送されたオーディオストリームを前記消去するステップは、音響エコー消去プロセス（ＡＥＣ）であることを特徴とする請求項１に記載の方法。
【請求項７】
１つまたは複数のプロセッサによって実行された際、前記１つまたは複数のプロセッサが、請求項１に記載の方法を実装するようにさせるコンピュータ可読命令を有することを特徴とする１つまたは複数のコンピュータ可読メディア。
【請求項８】
実行された際、オペレーティングシステムによって動作させられているコンピューティングシステムがローカルアプリケーションを実行するように指示し、前記ローカルアプリケーションは、
前記ローカルアプリケーションからオーディオ出力ストリームをキャプチャするように前記オペレーティングシステムのストリーミングオーディオキャプチャラ（ＳＡＣ）に呼び出しを行い、
前記ローカルアプリケーションからの前記オーディオ出力ストリームをキャプチャする論理的場所を決定し、
前記オーディオ出力ストリームが他のオーディオストリームとミキシングされる論理的場所の上流である前記決定された論理的場所において前記ローカルアプリケーションからの前記出力ストリームの受け取りポイントを確立し、
前記受け取りポイントにおいて前記ローカルアプリケーションからの前記オーディオ出力ストリームをキャプチャするように前記ＳＡＣに呼び出しを行い、
前記ローカルアプリケーションからの前記キャプチャされたオーディオ出力ストリームを受け取るコンピュータ実行可能命令を含むことを特徴とする１つまたは複数のコンピュータ可読メディア。
【請求項９】
前記ローカルアプリケーションの前記実行は、前記ローカルアプリケーションからの前記キャプチャされたオーディオ出力ストリームに対して信号処理を実行するステップをさらに含むことを特徴とする請求項８に記載の１つまたは複数のコンピュータ可読メディア。
【請求項１０】
前記信号処理が、ＡＥＣおよびスピーカ補償から成るグループから選択されることを特徴とする請求項９に記載の１つまたは複数のコンピュータ可読メディア。
【請求項１１】
前記信号処理は、前記ローカルアプリケーションからの前記キャプチャされたオーディオ出力ストリームを消去して、前記ローカルアプリケーションからの出力が前記ローカルアプリケーションからの前記キャプチャされたオーディオ出力ストリームを含まないようにすることを特徴とする請求項９に記載の１つまたは複数のコンピュータ可読メディア。
【請求項１２】
環境にレンダリングするためのシステムオーディオストリームを生成するステップと、
環境にレンダリングされる前記システムオーディオストリームをキャプチャするステップと、
前記システムオーディオストリームを環境にレンダリングするステップと、
前記レンダリングされたシステムオーディオストリームを含む環境からの環境オーディオストリームをキャプチャするステップと、
前記キャプチャされた環境オーディオストリームからの前記キャプチャされたシステムオーディオストリームを消去するステップとを含むことを特徴とする方法。
【請求項１３】
前記レンダリングするステップ、およびそれぞれの前記キャプチャするステップが、オペレーティングシステムによって実行され、前記消去するステップが、前記オペレーティングシステムによって動作させられている１つまたは複数のプロセッサによって実行されるＲＴＣによって実行されることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記キャプチャされた環境オーディオストリームから前記キャプチャされたシステムオーディオストリームを前記消去するステップが、ＲＴＣによって実行されることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記キャプチャされた環境オーディオストリームから前記キャプチャされたシステムオーディオストリームを前記消去するステップは、ＲＴＣによって実行されるＡＥＣであることを特徴とする請求項１２に記載の方法。
【請求項１６】
前記キャプチャされた環境オーディオストリームは、コンピューティングシステムによって生成されていないオーディオストリームを含み、前記キャプチャされた環境オーディオストリームから前記キャプチャされたシステムオーディオストリームを前記消去するステップは、前記コンピューティングシステムによって生成されていない前記オーディオストリームを含む結果のオーディオストリームをもたらす方法であって、
前記結果のオーディオストリームを伝送するステップをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１７】
前記コンピューティングシステムによって生成されていない前記オーディオストリームは、ＲＴＣの実行中にパケット交換ネットワークを介して伝送するための音声オーディオストリームを含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記パケット交換ネットワークを介して伝送するための前記音声オーディオストリームは、テレフォニーオーディオストリームであることを特徴とする請求項１７に記載の方法。
【請求項１９】
環境にレンダリングされる前記システムオーディオストリームは、複数のアプリケーションによって生成された複数のオーディオストリームを含むことを特徴とする請求項１２に記載の方法。
【請求項２０】
環境に前記システムオーディオストリームを前記レンダリングするステップは、スピーカに前記システムオーディオストリームのレンダリングを出力するステップをさらに含み、前記レンダリングされたシステムオーディオストリームを含む環境からの前記環境オーディオストリームを前記キャプチャするステップは、前記環境オーディオストリームをマイクを通して受け取るステップをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項２１】
１つまたは複数のプロセッサによって実行された際、前記１つまたは複数のプロセッサが、請求項１２に記載の方法を実装するようにさせるコンピュータ可読命令を有することを特徴とする１つまたは複数のコンピュータ可読メディア。
【請求項２２】
実行された際、オペレーティングシステムによって動作させられているコンピューティングシステムがローカルアプリケーションを実行するように指示し、前記ローカルアプリケーションは、
少なくとも１つの出力デバイスからオーディオ出力ストリームをキャプチャするように前記オペレーティングシステムのＳＡＣに呼び出しを行って前記オペレーティングシステムが、
キャプチャする前記オーディオ出力ストリームの源の１つの前記出力デバイスを特定し、
１つの前記出力デバイスから前記オーディオ出力ストリームをキャプチャする論理的場所を決定し、
前記決定された論理的場所において１つの前記出力デバイスから前記オーディオ出力ストリームをキャプチャするように前記ＳＡＣに関するシステムオーディオグラフの中に１つまたは複数の論理構造を挿入し、
１つの前記出力デバイスからの前記オーディオ出力ストリームが他のオーディオストリームとミキシングされる論理的場所の下流の前記決定された論理的場所において１つの前記出力デバイスからの前記出力ストリームに関する受け取りポイントを確立し、
前記受け取りポイントにおいて１つの前記出力デバイスから前記オーディオ出力ストリームをキャプチャするように前記ＳＡＣに呼び出しを行い、
１つの前記出力デバイスから前記キャプチャされたオーディオ出力ストリームを受け取るようにするコンピュータ実行可能命令を含むことを特徴とする１つまたは複数のコンピュータ可読メディア。
【請求項２３】
前記ローカルアプリケーションによる前記実行は、１つの前記出力デバイスからの前記キャプチャされたオーディオ出力ストリームに対して信号処理を実行するステップをさらに含むことを特徴とする請求項２２に記載の１つまたは複数のコンピュータ可読メディア。
【請求項２４】
前記信号処理が、ＡＥＣおよびスピーカ補償から成るグループから選択されることを特徴とする請求項２３に記載の１つまたは複数のコンピュータ可読メディア。
【請求項２５】
前記信号処理は、１つの前記出力デバイスからの前記キャプチャされたオーディオ出力ストリームを消去して、前記ローカルアプリケーションからの出力が１つの前記出力デバイスからの前記キャプチャされたオーディオ出力ストリームを含まないようにすることを特徴とする請求項２３に記載の１つまたは複数のコンピュータ可読メディア。
【請求項２６】
通信ネットワーク接続において受信された伝送されたオーディオストリームをキャプチャするステップと、
環境にレンダリングされるシステムオーディオストリームを生成するステップと、
環境にレンダリングされる前記生成されたシステムオーディオストリームをキャプチャするステップと、
前記伝送されたオーディオストリームおよび前記生成されたシステムオーディオストリームを環境にレンダリングするステップと、
環境から環境オーディオストリームをキャプチャし、その環境オーディオストリームから、前記伝送されたオーディオストリームのレンダリング、および前記生成されたシステムオーディオストリームのレンダリングを消去するステップとを含むことを特徴とする方法。
【請求項２７】
前記レンダリングするステップ、およびそれぞれの前記キャプチャするステップが、オペレーティングシステムによって実行され、前記消去するステップが、前記オペレーティングシステムによって動作させられている１つまたは複数のプロセッサによって実行されるＲＴＣによって実行されることを特徴とする請求項２６に記載の方法。
【請求項２８】
前記伝送されたオーディオストリームが、通信ネットワークを介して伝送されてから、前記ネットワーク接続において受信されることを特徴とする請求項２６に記載の方法。
【請求項２９】
前記キャプチャされた伝送されたオーディオストリームは、テレフォニーオーディオストリームであることを特徴とする請求項２６に記載の方法。
【請求項３０】
前記キャプチャされた環境オーディオストリームからキャプチャされた前記伝送されたオーディオストリームのレンダリングを前記消去するステップが、ＲＴＣによって実行されることを特徴とする請求項２６に記載の方法。
【請求項３１】
前記キャプチャされた環境オーディオストリームからキャプチャされた前記伝送されたオーディオストリームのレンダリングを前記消去するステップは、ＡＥＣであることを特徴とする請求項２６に記載の方法。
【請求項３２】
環境からキャプチャされた前記生成されたシステムオーディオストリームのレンダリングを前記消去するステップが、前記システムによって実行されるＲＴＣによって実行されることを特徴とする請求項２６に記載の方法。
【請求項３３】
環境からキャプチャされた前記生成されたシステムオーディオストリームのレンダリングを前記消去するステップは、ＡＥＣであることを特徴とする請求項２６に記載の方法。
【請求項３４】
前記キャプチャされた環境オーディオストリームは、リアルタイム通信のために伝送される音声オーディオストリームを含み、
前記キャプチャされた環境オーディオストリームから前記キャプチャされたシステムオーディオストリームを前記消去するステップは、前記音声オーディオストリームを含む結果のオーディオストリームをもたらす方法であって、
前記結果のオーディオストリームを伝送するステップをさらに含むことを特徴とする請求項２６に記載の方法。
【請求項３５】
前記音声オーディオストリームは、テレフォニーオーディオストリームであることを特徴とする請求項３４に記載の方法。
【請求項３６】
環境にレンダリングされる前記システムオーディオストリームは、複数のアプリケーションによって生成された複数のオーディオストリームを含むことを特徴とする請求項２６に記載の方法。
【請求項３７】
環境に前記生成されたシステムオーディオストリームを前記レンダリングするステップは、スピーカに前記生成されたシステムオーディオストリームのレンダリングを出力するステップをさらに含み、環境からの前記環境オーディオストリームを前記キャプチャするステップは、マイクを通して前記環境オーディオストリームを受け取るステップをさらに含むことを特徴とする請求項２６に記載の方法。
【請求項３８】
１つまたは複数のプロセッサによって実行された際、前記１つまたは複数のプロセッサが、請求項２６に記載の方法を実装するようにさせるコンピュータ可読命令を有することを特徴とする１つまたは複数のコンピュータ可読メディア。
【請求項３９】
ストリーミングオーディオキャプチャラと、
ストリーミングオーディオレンダラと、
通信ネットワークに接続するためのネットワーク接続と、
ＲＴＣおよびシステムアプリケーションを含むメモリと、
リアルタイム通信アプリケーションおよび前記システムアプリケーションを実行するための前記ストリーミングオーディオキャプチャラおよび前記ストリーミングオーディオレンダラと通信する１つまたは複数のプロセッサであって、
前記ストリーミングオーディオキャプチャラを使用して前記ネットワーク接続において受信された伝送されたオーディオストリームをキャプチャするステップと、
前記システムアプリケーションの実行によって環境にレンダリングされるシステムオーディオストリームを生成するステップと、
前記ストリーミングオーディオキャプチャラを使用して環境にレンダリングされる前記生成されたシステムオーディオストリームをキャプチャするステップと、
前記ストリーミングオーディオレンダラを使用して環境に前記伝送されたオーディオストリーム、および前記生成されたシステムオーディオストリームをレンダリングするステップと、
前記ストリーミングオーディオキャプチャラを使用して前記伝送されたオーディオストリーム、および前記レンダリングされた生成されたシステムオーディオストリームを含む環境からの環境オーディオストリームをキャプチャするステップと、
前記リアルタイム通信アプリケーションの実行によって前記キャプチャされた環境オーディオストリームからの前記キャプチャされた伝送されたオーディオストリーム、および前記キャプチャされた環境オーディオストリームからの前記キャプチャされたレンダリングされた生成されたシステムオーディオストリームを消去するステップとを行うプロセッサとを含むことを特徴とするシステム。
【請求項４０】
それぞれの前記レンダリングするステップ、およびそれぞれの前記キャプチャするステップが、前記１つまたは複数のプロセッサを動作させるオペレーティングシステムによって実行されることを特徴とする請求項３９に記載のシステム。
【請求項４１】
前記ストリーミングオーディオキャプチャラは、環境からオーディオストリームを受け取るための入力デバイスを含み、前記ストリーミングオーディオレンダラは、環境にオーディオストリームをレンダリングするための出力デバイスを含むことを特徴とする請求項３９に記載のシステム。
【請求項４２】
前記入力デバイスは、マイクであり、前記出力デバイスは、スピーカであることを特徴とする請求項４１に記載のシステム。
【請求項４３】
ネットワーク接続において受信された伝送されたオーディオストリームをキャプチャするための第１の手段と、
環境にレンダリングされるシステムオーディオストリームを生成するための手段と、
環境にレンダリングされる前記生成されたシステムオーディオストリームをキャプチャするための第２の手段と、
前記伝送されたオーディオストリームを環境にレンダリングするための第１の手段と、
前記生成されたシステムオーディオストリームを環境にレンダリングするための第２の手段と、
前記伝送されたオーディオストリームのレンダリング、および前記生成されたシステムオーディオストリームのレンダリングを含む環境からの環境オーディオストリームをキャプチャするための第３の手段と、
前記伝送されたオーディオストリームの前記レンダリング、および前記生成されたシステムオーディオストリームの前記レンダリングを前記キャプチャされたオーディオストリームから消去するための手段とを含むことを特徴とする装置。
【請求項４４】
キャプチャするための前記第１の手段、前記第２の手段、および前記第３の手段、およびレンダリングするための前記第１の手段、および前記第２の手段が、オペレーティングシステムによって実行され、消去するための前記手段が、前記オペレーティングシステムによって動作させられている１つまたは複数のプロセッサによって実行されるＲＴＣによって実行されることを特徴とする請求項４３に記載の装置。
【請求項４５】
消去するための前記手段は、キャプチャするための前記第１の手段によってキャプチャされた前記伝送されたオーディオストリームを使用して前記伝送されたオーディオストリームの前記レンダリングを消去することを特徴とする請求項４３に記載の装置。
【請求項４６】
消去するための前記手段は、キャプチャするための前記第２の手段によってキャプチャされた前記システムオーディオストリームを使用して前記生成されたシステムオーディオストリームの前記レンダリングを消去することを特徴とする請求項４３に記載の装置。
【請求項４７】
消去するための前記手段は、キャプチャするための前記第１の手段によってキャプチャされた前記伝送されたオーディオストリーム、およびキャプチャするための前記第２の手段によってキャプチャされた前記システムオーディオストリームを使用して前記伝送されたオーディオストリームの前記レンダリング、および前記生成されたシステムオーディオストリームの前記レンダリングを消去することを特徴とする請求項４３に記載の装置。
【請求項４８】
ＳＡＣおよびストリーミングオーディオレンダラ（ＳＡＲ）を含み、ＲＴＣを含むアプリケーションを実行するオペレーティングシステムを有するスピーカおよびマイクと通信する第１のシステムが、パケット交換ネットワークを介して第２のシステムと通信するリアルタイム通信システムであって、
前記ＲＴＣは、前記第２のシステムから受信された音声オーディオストリームを前記ＳＡＲに出力し、前記ＳＡＲは、該ストリームを前記マイクに入力される出力のために前記スピーカにレンダリングし、前記オペレーティングシステムは、システムサウンドオーディオストリームを前記ＳＡＲに出力し、前記ＳＡＲは、該ストリームを前記マイクに入力される出力のために前記スピーカにレンダリングし、前記マイクは、前記システムサウンドオーディオストリーム、および前記第２のシステムから受信された前記音声オーディオストリームを含む環境オーディオストリームの入力を環境から受け取り、前記ＲＴＣは、
前記第２のシステムから受信され、前記ＳＡＲによってレンダリングされた前記音声オーディオストリームを含むローカルオーディオストリーム、および前記ＳＡＲによってレンダリングされた前記システムサウンドオーディオストリームを含むグローバルオーディオストリームをキャプチャするように前記ＳＡＣに呼び出しを行うステップと、
前記ＳＡＣによってキャプチャされた前記ローカルオーディオストリームを使用して、前記ＳＡＲによってレンダリングされ、前記スピーカによって出力された前記第２のシステムから受信された前記音声オーディオストリームの前記入力を前記マイクへの前記入力から消去して、前記第２のシステムから受信された前記音声オーディオストリームが前記スピーカに出力するために前記ＳＡＲによって複数回、レンダリングされるのを防止するステップと、
前記ＳＡＣによってキャプチャされた前記グローバルオーディオストリームを使用して、前記ＳＡＲによってレンダリングされ、前記スピーカによって出力された前記オペレーティングシステムによって出力された前記システムサウンドオーディオストリームの前記入力を前記マイクへの前記入力から消去して、前記システムサウンドオーディオストリームが、前記ＲＴＣによって前記パケット交換ネットワークを介して前記第２のシステムに伝送されるのを防止するステップとを含む方法を行うことを特徴とするリアルタイム通信システム。
【請求項４９】
前記第１のシステムによって実行された際、前記第１のシステムが、請求項４８に記載の方法を実装するようにさせるコンピュータ可読命令を有することを特徴とする１つまたは複数のコンピュータ可読メディア。
【請求項５０】
第１のＲＴＣアプリケーションおよび第１のシステムアプリケーションを実行し、第１のスピーカと、第１のマイクと、第１のオーディオキャプチャラと、第１のオーディオレンダラとを含む第１のクライアントシステムと、
第２のＲＴＣアプリケーションおよび第２のシステムアプリケーションを実行し、第２のスピーカと、第２のマイクと、第２のオーディオキャプチャラと、第２のオーディオレンダラとを含む第２のクライアントシステムと、
前記第１のクライアントおよび前記第２のクライアントと通信するパケット交換ネットワークとを含むリアルタイム通信システムであって、
前記第１のクライアントシステムおよび前記第２のクライアントシステムによる前記第１のＲＴＣアプリケーションおよび前記第２のＲＴＣアプリケーションのそれぞれの実行中、前記第１のクライアントシステムは、前記第２のキャプチャラによってキャプチャされ、前記第２のレンダラによって前記第２のスピーカにおいてレンダリングされる第１の音声オーディオストリームを前記パケット交換ネットワークを介して前記第２のクライアントシステムに伝送し、前記第２のクライアントシステムは、前記第１のキャプチャラによってキャプチャされ、前記第１のレンダラによって前記第１のスピーカにおいてレンダリングされる第２の音声オーディオストリームを前記パケット交換ネットワークを介して前記第１のクライアントシステムに伝送し、第１のシステムオーディオストリームが、前記第１のクライアントシステムによる前記第１のシステムアプリケーションの実行によって生成され、前記第１のキャプチャラによってキャプチャされ、前記第１のレンダラによって前記第１のスピーカにおいてレンダリングされ、第２のシステムオーディオストリームが、前記第２のクライアントシステムによる前記第２のシステムアプリケーションの実行によって生成され、前記第２のキャプチャラによってキャプチャされ、前記第２のレンダラによって前記第２のスピーカにおいてレンダリングされ、前記第１のマイクは、前記第１のシステムオーディオストリーム、および環境からの第１の環境オーディオシステムを含む第１のバルク（ｂｕｌｋ）オーディオストリームを前記第１のオーディオキャプチャラによってキャプチャし、このキャプチャラから前記第１のＲＴＣアプリケーションに通信するために入力を受け取り、前記第２のマイクは、前記第２のシステムオーディオストリーム、および環境からの第２の環境オーディオストリームを含む第２のバルクオーディオストリームを前記第２のオーディオキャプチャラによってキャプチャし、このキャプチャラから前記第２のＲＴＣアプリケーションに通信するために入力を受け取り、前記第１のＲＴＣアプリケーションは、前記第１のバルクオーディオストリームから前記第１の音声オーディオストリーム、および前記第１のシステムオーディオストリームを消去し、前記第２のＲＴＣアプリケーションは、前記第２のバルクオーディオストリームから前記第２の音声オーディオストリーム、および前記第２のシステムオーディオストリームを消去することを特徴とするシステム。
【請求項５１】
前記第１のクライアントシステムが、前記第１のオーディオキャプチャラ、および前記第１のオーディオレンダラを含むオペレーティングシステムによって動作させられ、前記第２のクライアントシステムが、前記第２のオーディオキャプチャラ、および前記第２のオーディオレンダラを含むオペレーティングシステムによって動作させられることを特徴とする請求項５０に記載のシステム。
【請求項５２】
前記第１のＲＴＣアプリケーションおよび前記第２のＲＴＣアプリケーションはそれぞれ、ＡＥＣを含むことを特徴とする請求項５０に記載のシステム。
【請求項５３】
ＳＡＣおよびＳＡＲを含み、メディアプレーヤーアプリケーション（ＭＰ）を含むアプリケーションを実行するオペレーティングシステムを有し、スピーカおよびマイクと通信するコンピューティングシステムであって、
前記ＭＰは、メディアオーディオストリームを前記ＳＡＲに出力し、前記ＳＡＲは、前記マイクに入力される出力のために前記スピーカに該ストリームをレンダリングし、前記オペレーティングシステムは、システムサウンドオーディオストリームを前記ＳＡＲに出力し、前記ＳＡＲは、前記マイクに入力される出力のために前記スピーカに該ストリームをレンダリングし、前記マイクは、前記スピーカによって出力された前記システムサウンドオーディオストリーム、前記スピーカによって出力された前記メディアオーディオストリーム、および前記ＭＰによって実行されるべき動作のためのユーザからの音声コマンドを含む音声オーディオストリームを含む環境からの環境オーディオストリームの入力を受け取り、前記ＭＰは、
前記ＳＡＲの前記レンダリングから前記メディアオーディオストリームを含むローカルオーディオストリーム、ならびに前記システムサウンドオーディオストリームおよび前記メディアオーディオストリームを含むグローバルオーディオストリームをキャプチャするように前記ＳＡＣに呼び出しを行うステップと、
前記ＳＡＣによってキャプチャされた前記ローカルオーディオストリームを使用して、前記メディアオーディオストリームの入力を前記マイクへの前記入力から消去して、前記メディアオーディオストリームが、前記スピーカによって複数回、出力されるのを防止するステップと、
前記ＳＡＣによってキャプチャされた前記グローバルオーディオストリームを使用して、前記システムサウンドオーディオストリームおよび前記メディアオーディオストリームの入力を前記マイクへの入力から消去して、前記ＭＰが前記音声オーディオストリームだけを受け取るようにするステップとを含む方法を行うことを特徴とするコンピューティングシステム。
【請求項５４】
前記コンピューティングシステムによって実行された際、請求項５３に記載の方法を実装するコンピュータ可読命令を有することを特徴とする１つまたは複数のコンピュータ可読メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ストリーミングオーディオ処理に関し、より詳細には、オペレーティングシステムのストリーミングオーディオ録音コンポーネントおよびストリーミングオーディオレンダリングコンポーネントに関する。
【背景技術】
【０００２】
パーソナルコンピュータ（ＰＣ）などのコンピューティングシステムが、ストリーミングオーディオを録音し、再生するためにますます使用されている。１つのそのようなアプリケーションは、それぞれのＰＣのユーザが、電話機ユーザが回線交換ネットワークを介して別の電話機ユーザと話をするのとほとんど同様に、パケット交換ネットワークを介して互いに話をすることができるネットワークテレフォニーである。１つのそのようなネットワークテレフォニーアプリケーションが、インスタントメッセージングなどのリアルタイム通信アプリケーション（ＲＴＣ）である。ＲＴＣが実行されている間、各ユーザは、ＰＣにおけるローカルのマイクに音声を通して、ローカルのスピーカで遠隔の相手の音声を聞く。
【０００３】
各ＰＣにおいて出力されるサウンドが不快なエコーを含む可能性があることで、ＲＴＣにおいて困難が生じる可能性がある。例えば、１つのＰＣにおいて受信された遠隔の音声がローカルのスピーカから再生されて、ローカルのマイクに入力された場合、エコーが聞こえる可能性がある。これにより、遠隔の音声が、ローカルのスピーカにおいて２度目に出力されることになり、これが、エコーとして聞こえる。
【０００４】
ビープ音、クリック音、および実行中のアプリケーションによって生成されるその他の可聴なキュー（ｃｕｅ）などの１つのＰＣによって生成されるサウンドがローカルのマイクに入力されることで、ＲＴＣにおいて別の問題が生じる可能性がある。ローカルのユーザにだけ重要であるこれらのサウンドは、次に、ネットワークを介して遠隔の相手に伝送され、遠隔のスピーカにおいて出力された後に聞こえる。
【０００５】
以上２つの問題は、ＰＣから出力されるべきすべてのオーディオストリームのミックス（例えば、グローバル出力）に対して行われる音響エコー消去プロセス（ＡＥＣ）によって解決することができる。ＡＥＣは、信号処理技術を使用してオーディオストリームに対して実行することができる多くのプロセスの１つである。一部の信号処理技術は、ＰＣのオペレーティングシステムの部分を形成する機構によって実行されることが可能である。それらのオペレーティングシステム機構の一部は、オーディオストリームのレンダリング（または再生）のため、およびオーディオストリームのキャプチャ（または録音）のために使用することができる機構である。レンダリングのために使用される周知のオペレーティングシステム機構とキャプチャのために使用される周知のオペレーティングシステム機構は、完全に別個であり、しばしば、完全に独立したシステム内に実装される。さらに、ＡＥＣなどの信号処理のための周知のオペレーティングシステム機構は、性能の悪いアーキテクチャのために、使用すること、および理解することが困難である。
【０００６】
以上のことから、当技術分野において、ＰＣから出力されるすべてのオーディオストリームのミックス（例えば、グローバル出力）をキャプチャする単純で容易に理解されるオペレーティングシステム機構を提供することが有利であろう。このキャプチャが行われた際、ＰＣ上で実行されているアプリケーションが、グローバル出力に対して信号処理を実行して所望の音響結果を達成するようにすることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ＰＣから出力されるすべてのオーディオストリームのミックス（例えば、グローバル出力）をキャプチャする単純で容易に理解されるオペレーティングシステム機構を提供する。
【課題を解決するための手段】
【０００８】
オペレーティングシステム内部のオーディオシステムサービスが、出力デバイスを宛先とするストリーミングオーディオのすべてをキャプチャし、処理のために使用可能にする。アプリケーションなどのローカルクライアントが、キャプチャされたストリーミングオーディオに対して処理を実行することができる。さらに、レンダデバイスを宛先とするアプリケーションによって出力されたストリーミングオーディオも、出力デバイスを宛先とするその他のストリーミングオーディオとミキシングするのに先立ち、信号処理のためにキャプチャされることが可能である。
【０００９】
添付の図を参照して詳細な説明を述べる。図では、本開示および図のすべてにわたって同様のコンポーネントおよび特徴を指すのに同じ番号を使用している。１００番台の符号は、図１に最初に現れる特徴を指し、２００番台の符号は、図２に最初に現れる特徴を指し、３００番台の符号は、図３に最初に現れる特徴を指し、以下同様である。
【発明を実施するための最良の形態】
【００１０】
本発明は、アプリケーションが、オーディオストリームのシステム全体のグローバルミックス（ｓｙｓｔｅｍ−ｗｉｄｅ  ｇｌｏｂａｌ  ｍｉｘ）（グローバル出力）を獲得することを可能にする。グローバル出力は、オペレーティングシステムのオーディオサービスのキャプチャ（または録音）コンポーネントを使用して獲得される。また、オペレーティングシステムは、レンダリングコンポーネントも有する。キャプチャコンポーネントとレンダリング（または再生）コンポーネントはともに、別個の独立したシステムであるのではなく、オペレーティングシステムと一体になっている。
【００１１】
一部の実装では、アプリケーションは、再生デバイスに対してキャプチャストリームを開くことにより、出力デバイスからのグローバル出力をキャプチャするようにキャプチャコンポーネントに呼び出しを行う。これを行うため、キャプチャコンポーネントは、出力デバイスからのキャプチャソースを開いてグローバル出力を獲得する。その時点で、アプリケーションは、さらなる処理のためにグローバル出力を有する。
【００１２】
リアルタイム通信アプリケーション（ＲＴＣ）実装では、ＲＴＣは、出力デバイスに対して開くようにレンダリングコンポーネントに呼び出しを行い、入力デバイスに対して開くようにキャプチャコンポーネントに対して呼び出しを行う。このため、ＲＴＣは、実質的に、レンダリングインターフェースに対して開かれた出力デバイス、およびキャプチャインターフェースに対して開かれた入力デバイスを有する。次に、ＲＴＣは、出力デバイスに対してキャプチャコンポーネントを開く呼び出しを行うことができる。出力デバイスからのグローバル出力がＲＴＣに戻された際、出力デバイスのグローバル出力からの、そうでなければ音響エコーを生じさせるオーディオストリームが、ＲＴＣによって消去されることが可能である。その他の実装では、アプリケーションは、そのアプリケーションに関するレンダリングコンポーネント（ローカル出力）に対してキャプチャコンポーネントを開くように呼び出しを行う。レンダリングコンポーネントからのキャプチャされた出力は、続く信号処理のためにアプリケーションに送り返されることが可能である。
【００１３】
図１ａは、それぞれのＰＣ１５４、１７４を使用して、第１の個人１５２が、パケット交換ネットワーク１７０を介して第２の個人１７２と電話会話を行うパーソナルコンピュータ（ＰＣ）ネットワークテレフォニー環境１００を描いている。各ＰＣ１５４、１７４は、オペレーティングシステム１５６、１７６によってそれぞれ動作させられ、ＲＴＣを実行する。各ＰＣ１５４、１７４は、個人１５２、１７２のそれぞれの音声を含む環境（ａｍｂｉｅｎｔ）１６６、１８６からの入力を受け取る１つまたは複数のマイク１６４、１８４をそれぞれ有する。各ＰＣ１５４、１７４は、遠隔の個人１７２、１５２の話し声をローカルの個人１５２、１７２が聞く１つまたは複数のスピーカ１６２、１８２をそれぞれ有する。各個人１５２、１７２には、遠隔の個人の音声が聞こえることに加えて、ＰＣ動作環境に特有のものであるシステムサウンド（例えば、ビープ音、クリック音、可聴なキュー、および診断音（ｄｉａｇｎｏｓｔｉｃｓ））などのそれぞれのＰＣ１５４、１７４によって生じさせられるサウンドも聞こえる。
【００１４】
理想的には、ＲＴＣ１６０は、マイクを通された音声だけをネットワークを介して相手の個人に伝えるべきである。また、ＲＴＣ１６０は、受け取られた音声だけが、受信側ＰＣのスピーカから聞こえることを確実にすべきである。ＲＴＣによるストリーミングオーディオの適切な処理なしには、以上の理想は実現されない。例えば、第２のＰＣ１７４から受け取られた音声オーディオストリームが、スピーカ１６２において複数回、出力されることが防止されることがＲＴＣ１６０に重要であり、そうでなければ、個人１５２に個人１７２の音声のエコーが聞こえる。また、ＲＴＣ１６０は、ＰＣ１５２からのシステムサウンドではなく、個人１５２の音声だけが、ネットワーク１７０を介してＰＣ１７４に伝送されることを確実にすべきである。
【００１５】
以上の理想を達成するため、ＲＴＣ１６０の実装は、オペレーティングシステム１５６がストリーミングオーディオキャプチャラ（ｃａｐｔｕｒｅｒ）（ＳＡＣ）１５８およびストリーミングオーディオレンダラ（ｒｅｎｄｅｒｅｒ）（ＳＡＲ）１５８を有する場合に実行されることが可能である。この実装では、第１のシステム１５４のＲＴＣ１６０は、第２のシステム１７４から受け取られた音声オーディオストリームをＳＡＲ１５８に出力し、ＳＡＲ１５８は、マイク１６４に入力される出力のためにスピーカ１６２に同ストリームをレンダリングする。オペレーティングシステム１５６は、システムサウンドオーディオストリームをＳＡＲ１５８に出力し、ＳＡＲ１５８は、マイク１６４に入力される出力のためにスピーカ１６２に同ストリームをレンダリングする。マイク１６４は、第２のシステム１７４から受け取られたシステムサウンドオーディオストリームおよび音声オーディオストリームを含む環境１６６からの環境オーディオストリームの入力を受け取る。ＲＴＣ１６０は、次に、ＳＡＲ１５８によってレンダリングされる第２のシステム１７４から受け取られた音声オーディオストリームを含むローカルオーディオストリームをキャプチャするようにＳＡＣ１５８に呼び出しを行う。また、ＲＴＣ１６０は、ＳＡＲ１５８によってレンダリングされたシステムサウンドオーディオストリームを含むグローバルオーディオストリームをキャプチャするようにＳＡＣ１５８に呼び出しを行うこともする。
【００１６】
以上のことから、ＲＴＣ１６０は、様々な消去を実行してＲＴＣの理想を達することができる。ＳＡＣ１５８によってキャプチャされたローカルオーディオストリームを使用することにより、ＲＴＣ１６０は、マイク１６４に対する入力、ならびにＳＡＲ１５８によってレンダリングされ、スピーカ１６２によって出力された第２のシステム１７４から受け取られた音声オーディオストリームの入力を消去することができる。このため、第２のシステム１７４によって受け取られた音声オーディオストリームは、スピーカ１６２に出力するためにＳＡＲ１５８によって複数回、レンダリングされることが防止される。ＳＡＣ１５８によってキャプチャされたグローバルオーディオストリームを使用することにより、ＲＴＣ１６０は、ＳＡＲ１５８によってレンダリングされ、スピーカ１６２によって出力されたオペレーティングシステム１５６によって出力されたシステムサウンドオーディオストリームをマイク１６４に対する入力から消去することができる。このため、システムサウンドオーディオストリームが、ＲＴＣ１６０によってネットワーク１７０を介して第２のシステム１７４に伝送されることが防止される。
【００１７】
図１ｂは、図１ａのネットワークテレフォニー環境１００の態様の特徴を示す部分ブロック図である。ＲＴＣ１０２が、音響エコー消去手続き（ＡＥＣ）１１２と連携して機能する。ＡＥＣ１１２を実行するため、キャプチャデバイスからの録音された入力、およびレンダデバイスを出て行くローカルで処理されたオーディオストリーム、あるいはレンダデバイスを出て行くグローバルオーディオ出力のシステム全体のミックス（グローバル出力）を含む様々なオーディオストリームを使用することができる。図１ｂは、以上の様々なオーディオストリームが使用される環境を描いている。
【００１８】
図１ｂでは、ＲＴＣ１０２は、オーディオサービスコンポーネントを有するオペレーティングシステムによって動作させられているコンピュータシステム上で実行されている。オーディオサービスコンポーネントは、ＲＴＣ１０２によって呼び出されて、ストリーミングオーディオキャプチャラ（ＳＡＣ）１０８、１１０、およびＳＡＲ１０４をセットアップすることが可能である。ＳＡＲ１０４は、グローバルエンジン１０６に出力されるＲＴＣ１０２からのストリーミングオーディオをレンダリングする。マイク（図示せず）が、ＳＡＣ１０８によってキャプチャされ、グローバルエンジン１０６に出力されたストリーミングオーディオを入力する。グローバルエンジン１０６は、マイクとＳＡＲ１０４からの入力をミキシングする。そのミックスが、出力デバイスによって出力される。この出力は、ＳＡＣ１１０によってキャプチャされる出力デバイスのグローバル出力である。ＲＴＣ１０２に、ＳＡＣ１０８を介してマイクからキャプチャされたストリーミングオーディオが返され、ＳＡＣ１１０を介してキャプチャされたグローバル出力が返されるデジタルループバックを図１ｂに描いている。次に、ＲＴＣ１０２は、キャプチャされたグローバル出力に対してＡＥＣ１１２を実行することができる。ＡＥＣ１１２は、ＳＡＣ１１０から出力されたキャプチャされたグローバル出力を消去することを要望しているので、ＲＴＣ１０２は、ＳＡＣ１１０のデジタルループバックへの接続をシステムオーディオグラフに求める。キャプチャされたグローバル出力がＡＥＣ１１２によって使用されてローカルの効果が消去される。
【００１９】
図２ａは、ＰＣ２５４が個人２５２の音声コマンドでメディアを再生することができるメディアプレーヤー環境２００を描いている。これを行うため、個人２５２は、環境２６６に音声を発する（ｓｐｅａｋ  ｉｎｔｏ）。環境２６６からのサウンドが、マイク２６４によって拾われる。マイク２６４は、音声認識処理のために環境２６６からのサウンドをＰＣ２５４に入力する。メディアプレーヤーアプリケーション（ＭＰ）２６０がＰＣ２５４上で実行され、音声認識処理から音声コマンドを受け取る。例として、メディアプレーヤー２６０は、米国ワシントン州、レッドモンド市のマイクロソフトコーポレーションによって提供されるＷｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｐｌａｙｅｒのソフトウェアであることが可能である。それらのコマンドは、歌を再生すること、歌の再生を一時停止すること、次の歌を再生すること、歌を再生するのを停止すること、ポータブルメディアプレーヤーからポータブルメディア（例えば、ＣＤ）を取り出すこと等であることが可能である。ＭＰ２６０は、スピーカ２６２から出力されるメディアを再生することができる。
【００２０】
理想的には、ＭＰ２６０によって生成されるサウンドは、スピーカ２６２によって複数回、出力されることが防止されなければならず、ＭＰ２６０は、ＰＣ２５４からのシステムサウンドではなく、音声コマンドだけを受け取らなければならない。以上の理想を達するため、ＭＰ２６０の実装が、オーディオサービスコンポーネントを有するオペレーティングシステム２５６を使用するＰＣ２５４上で実行されることが可能である。オーディオサービスコンポーネントは、ＳＡＣ２５４およびＳＡＲ２５８を含む。メディアプレーヤーアプリケーション（ＭＰ）２６０は、メディアオーディオストリームをＳＡＲ２５８に出力し、ＳＡＲ２５８は、環境２６６からマイク２６４に入力される出力のためにスピーカ２６２に同ストリームをレンダリングする。オペレーティングシステム２５６は、システムサウンドオーディオストリームをＳＡＲ２５８に出力し、ＳＡＲ２５８は、環境２６６からマイク２６４に入力される出力のためにスピーカ２６２に同ストリームをレンダリングする。マイク２６４は、環境２６６からの環境オーディオストリームの入力を受け取る。以上のことから、環境オーディオストリームには、スピーカ２６２によって出力されたシステムサウンドオーディオストリーム、スピーカ２６２によって出力されたメディアオーディオストリーム、およびＭＰ２６０によって実行される動作のためのユーザ２５２からの音声コマンドを含む音声オーディオストリームが含まれる。ＭＰ２６０は、ＳＡＲ２５８のレンダリングから、メディアオーディオストリームを含むローカルオーディオストリーム、およびシステムサウンドオーディオストリームとメディアオーディオストリームを含むグローバルオーディオストリームのそれぞれをキャプチャするようにＳＡＣ２５４に呼び出しを行う。
【００２１】
ＭＰ２６０は、マイク２６４に対する入力から様々な消去を実行することができる。ＳＡＣ２５４によってキャプチャされたローカルオーディオストリームを使用することにより、ＭＰ２６０は、メディアオーディオストリームの入力を消去して、メディアオーディオストリームが、スピーカ２６２によって複数回、出力されるのを防止するようにする。ＳＡＣ２５４によってキャプチャされたグローバルオーディオストリームを使用することにより、ＭＰ２６０は、システムサウンドオーディオストリームおよびメディアオーディオストリームの入力を消去して、自らが音声オーディオストリームだけを受け取るようにすることができる。
【００２２】
図２ｂは、図２ａのメディアプレーヤー環境２００の態様の特徴を示す部分ブロック図である。メディアプレーヤー２０２は、オーディオサービスコンポーネントを有するオペレーティングシステムによって動作させられるコンピューティングシステム上で実行されている。オーディオサービスコンポーネントは、メディアプレーヤー２０２によって呼び出されてＳＡＣ２１４およびＳＡＲ２０４、２０８をセットアップすることができる。メディアプレーヤー２０２は、ＳＡＲ２０４に出力している。システムサウンド２０６が、コンピューティングシステムによってＳＡＲ２０８に出力するために生成されている。ＭＰ２０２からのストリーミングオーディオ、およびシステムサウンド２０６が、グローバルエンジン２２０にレンダリングされ、エンジン２２０においてミキシングされてグローバル出力がもたらされる。グローバル出力は、サウンドレコーダ２１６による録音のためにＳＡＣ２１４によってキャプチャされる。サウンドレコーダ２１６内のストリーミングオーディオを信号処理のために使用して、図２ａに見られるＭＰ２０６に関する理想のような所望の音響結果を達することができる。
【００２３】
図３〜５は、既存のレンダリングＡＰＩに対してキャプチャアプリケーションプログラムインターフェース（ＡＰＩ）を開くように呼び出しを行って、ＲＴＣ出力ミックスが、ＡＥＣなどの高度な信号処理を最適に受けることが可能であるようにするＲＴＣを特色とするそれぞれの環境３００、４００、および５００を示している。
【００２４】
図３は、ＲＴＣ３０２が、出力デバイスドライバ３３８と通信する出力デバイスと入力デバイスドライバ３２０と通信する入力デバイスの間のデジタルループバック回路内にある環境３００を示している。環境３００は、太線で囲まれ、アプリケーションセクション３６０、システムオーディオサービスセクション３７０、ミックス入力／出力（Ｉ／Ｏ）セクション３８０、およびカーネルセクション３９０を含むいくつかのセクションを示している。アプリケーションセクション３６０は、システムサービスセクション３７０によるサービスを受ける。ミックスＩ／Ｏセクション３８０は、入力デバイスから入力を受け取り、それぞれドライバ３３８、３２０を介して出力デバイスに出力する。環境３００では、ＲＴＣ３０２は、グローバル出力のすべてからの出力を消去するのではなく、ローカルプロセスからの出力だけを消去する。
【００２５】
ＲＴＣ３０２は、出力デバイスドライバ３３８に対して開かれたＳＡＲ３０４、および入力デバイスドライバ３２０に対して開かれたＳＡＣ３３３を有する。図３で、実線の矢印は制御のフローを反映し、破線の矢印はデータフローを示している。符号「１」で示される制御フローは、ＲＴＣ３０２が、環境３００に示したプロセスを開始するように制御フロー命令をＳＡＲ３０４に送った時点で開始する。符号「１」における制御フロー矢印は、ＲＴＣ３０２が、ＲＴＣ３０２から出力の録音を呼び出す、または要求することができるという概念を例示することを目的としている。この制御フロー中、ＲＴＣ３０２は、インターフェースを使用してＳＡＣ３６３に対して出力を開くようにシステムオーディオサービス３７０に要求を行う。構造のほとんどは、システムオーディオフィルタグラフマネージャ３７２によって環境３００内でセットアップされる。ＲＴＣ３０２は、ＳＡＲ３０４からＳＡＣインターフェースを獲得する目的でＳＡＲ３０４を呼び出す。このケースでは、ＳＡＣ３６３がＲＴＣ３０２によって呼び出されるインターフェースである。このため、ＲＴＣ３０２は、ＳＡＲ３０４に対するデータフローを有する。ＳＡＲ３０４は、バッファ３０６に出力する。
【００２６】
符号「２」および「３」で示される制御フローは、ＳＡＲ３０４からプロセッサ３６２、およびエンドポイント３６４にそれぞれ進む。プロセッサ３６２は、処理されるべきオーディオ効果のリストを保持するオブジェクトの名前を表わすことを意図しており、オブジェクトが、その効果が処理されるように要求する。符号「２」および「３」における制御フロー矢印は、ＳＡＲ３０４のアプリケーションプログラムインターフェース（ＡＰＩ）がＲＴＣ３０２からの出力の録音を調整することができる可能な構成を反映している。
【００２７】
データは、バッファ３０６から符号３０８における形式変換プロセスのために進む。符号３０８における形式変換に続き、データは、サンプルレートコンバータ（ＳＲＣ）３３０に進む。ＳＲＣ３３０は、データがミックスＩ／Ｏセクション３８０に進む前に図３で見られる最後の音響効果モジュールである。
【００２８】
ＳＲＣ３３０で、データは、サンプルレート変換を受ける。ＳＲＣ３３０から、データは、２つの異なる方向に進む。その方向の１つが、バッファ３６２からＳＡＣ３６３へのデータフローである。ＳＡＣ３６３で、データがキャプチャされ、ＲＴＣ３０２に入力として戻される。このため、ＲＴＣ３０２は、ローカルプロセスからキャプチャされたローカル出力を受け取っている。したがって、ＲＴＣ３０２は、キャプチャＡＰＩインスタンスを返されており、ＳＡＣ３６３からＲＴＣ３０２に向かうデータフロー矢印で入力として出力データの配信を受ける。もう一方の方向で、ＳＲＣ３３０は、バッファ３６２に出力されたのと同じデータをバッファ３３２に出力する。バッファ３３２内のデータは、グローバルエンジン３３４に送られる。グローバルエンジン３３４は、ループバッファ３３６に出力し、データは、ループバッファ３３６から出力デバイスドライバ３３８に進む。出力デバイスドライバ３３８から、データは、カーネルセクション３９０とインターフェースをとる出力デバイス（図示せず）上で出力されることが可能である。
【００２９】
データは、入力デバイスドライバ３２０を介して入力デバイス（図示せず）からも受け取られることが可能である。入力デバイスドライバ３２０は、ループバッファ３２２に出力する。ループバッファ３２２は、データをグローバルエンジン３２４に送り、エンジン３２４は、バッファ３２６に出力する。バッファ３２６は、ローカルエンジン３２８に出力し、エンジン３２８は、バッファ３３１に出力する。ＳＡＣ３３３においてバッファ３３１からオーディオデータがキャプチャされ、ＳＡＣ３３３からＲＴＣ３０２に戻される。
【００３０】
図４は、ＳＡＲ３０４が、ＲＴＣ３０２にデータを戻すためにＳＡＣ３０５に直接に出力する図３の環境３００のバリエーションである環境４００を示している。環境４００では、３０８における形式変換の前に、ＳＡＣ３０５においてオーディオデータがキャプチャされる。したがって、オーディオデータは、ＳＡＣ３０５を介してＳＡＲ３０４から直接に獲得される。ローカルエリアに入る前に、環境４００で見られるプロセスは、ＲＴＣ３０２に送り返されるオーディオデータが、それぞれ符号３０８および３３０において形式変換およびサンプリングレート変換を回避していることで、環境３００で見られるプロセスのステップを減らしている。その他の点では、環境４００は、環境３００と同様である。
【００３１】
図５は、図３、４の環境３００、４００のバリエーションである環境５００を示している。環境５００は、ＲＴＣ３０２からオーディオデータを受け取るスプリッタ（ｓｐｌｉｔｔｅｒ）３０３を示している。スプリッタ３０３は、ＳＡＲ３０４とＳＡＣ３０５の両方に出力する。このため、図５は、ＳＡＲ３０５におけるレンダリングプロセスの前に、ＳＡＣ３０５によってオーディオデータがキャプチャされることで図４とは異なっている。その他の点では、環境５００を描く図５は、環境３００および４００と同様である。
【００３２】
図６は、それぞれ図３〜５の環境３００、４００、および５００に適用可能な方法６００に関する流れ図である。方法６００は、ローカルプロセスからの出力の録音を可能にする。方法６００では、ＲＴＣなどのアプリケーションが、グローバル出力のすべてからローカルプロセスからの出力を消去するのではなく、ローカルプロセスからの出力だけを消去している。アプリケーションは、出力デバイスに対して開かれるようにＳＡＲに呼び出しを行い、入力デバイスに対して開かれるようにＳＡＣに呼び出しを行う。このため、アプリケーションは、出力デバイスがＳＡＲインターフェースを使用して開かれることを要求し、入力がＳＡＣインターフェースを使用して開くことを要求する。
【００３３】
方法６００は、ブロック６０２で開始し、アプリケーションが、ローカルプロセスからの出力ストリームをキャプチャすることを要求する。ブロック６０２に続くブロック６０４で、ローカル出力アプリケーションプログラムインターフェース（ＡＰＩ）が、どこでデータストリームに接続する（ｈｏｏｋ  ｉｎｔｏ）かを決める。この接続またはフック（ｈｏｏｋ）は、通常、グローバルサービスに向かうローカル出力の直前である。ブロック６０４に続き、方法６００は、制御をブロック６０６に進め、ローカル出力ＡＰＩが、出力ストリームのキャプチャを実行するためにローカルエンジン内でオーディオシステムグラフを接続する（ｈｏｏｋ  ｕｐ）。ブロック６０６に続き、ブロック６０８が方法６００において実行される。ブロック６０８で、アプリケーションは、キャプチャＡＰＩインスタンスを返され、アプリケーションに入力された出力データを送出する。
【００３４】
図７は、以下に述べること以外は図３の環境３００と同様な環境７００を示している。環境７００において、ＲＴＣ７０２は、出力デバイスドライバ７２４と通信する出力デバイスと入力デバイスドライバ７２６と通信する入力デバイスの間のデジタルループバック回路である。環境７００は、太線で囲まれ、アプリケーションセクション７６０、システムオーディオサービスセクション７７０、ミックス入力／出力（Ｉ／Ｏ）セクション７８０、およびカーネルセクション７９０を含むいくつかのセクションを示している。アプリケーションセクション７６０は、システムサービスセクション７７０によるサービスを受ける。ミックスＩ／Ｏセクション７８０は、入力デバイスから入力を受け取り、それぞれのドライバ７２４、７２６を介して出力デバイスに出力する。環境７００において、ＲＴＣ７０２は、出力デバイスに対してストリーミングオーディオキャプチャラを開くことによって出力デバイスに対するグローバル出力内のオーディオストリームのミックスに対して信号処理（例えば、ＡＥＣ）を実行する。
【００３５】
ＲＴＣ７０２は、出力デバイスドライバ７２４に対して開いたＳＡＲ７０４、および入力デバイスドライバ７２６に対して開いたＳＡＣ７３８を有する。図７で、実線は制御のフローを反映しており、破線はデータフローを示している。制御フローは、システムオーディオサービス７７０が、環境７００に示したプロセスを開始するようにＲＴＣ７０２から制御フロー命令を受け取った時点で開始する。この制御フロー中、ＲＴＣ７０２は、ＳＡＣ７６８に対してインターフェースを使用して出力を開くようにシステムオーディオサービス７７０に要求を行う。ＲＴＣ７０２は、システムオーディオサービス７７０を使用してＳＡＲ７０４、ＳＡＣ７３８、およびＳＡＣ７６８をセットアップする。この場合、ＳＡＣ７６８が、ＲＴＣ７０２によって呼び出されるインターフェースである。このため、ＲＴＣ７０２は、ＳＡＲ７０４に対するデータフローを有する。ＳＡＲ７０４は、バッファ７０６に出力する。データは、バッファ７０６から符号７０８における形式変換プロセスのために進む。符号７０８における形式変換に続き、データは、サンプルレートコンバータ（ＳＲＣ）７１０に進む。ＳＲＣ７１０は、データがミックスＩ／Ｏセクション７８０に進む前に図７で見られる最後の音響効果モジュールである。ボリュームミックスダウン、チャネルミックスダウン等を含むＳＲＣ７３０以外の効果も企図されている。
【００３６】
ＳＲＣ７１０で、データが、サンプルレート変換を受け、バッファ７１２に出力される。データは、バッファ７１２からミックスＩ／Ｏセクション７８０およびミキサーモジュール７１４に入る。様々なソースからの様々なオーディオストリームが、ミキサーモジュール７１４において一緒にミキシングされることが可能である。ミキサーモジュール７１４から、データは、グローバル効果モジュール（ＧＦＸ）７１６に進む。ＧＦＸ７１６で、データは、２つの異なる方向に進む。その方向の１つで、データは、ＧＦＸ７１６から出て、形式変換モジュール７１８に出力され、次に、エンドポイント７２０に出力される。エンドポイント７２０から、データは、ループバッファ（ｌｏｏｐｅｄ  ｂｕｆｆｅｒ）７２２に進み、そこから出力デバイスドライバ７２４に進む。出力デバイスドライバ７２４から、データは、カーネルセクション７９０とインターフェースを取る出力デバイス（図示せず）上で出力されることが可能である。もう一方の方向で、データは、ＧＦＸ７１６からバッファ７６２に進み、データがローカルエンジン７６４に進むようにアプリケーションセクション７６０に戻る。ローカルエンジン７６４から、データは、バッファ７６６に進み、次にＳＡＣ７６８に進む。ＳＡＣ７６８で、データがキャプチャされ、ＲＴＣ７０２に入力として戻される。このため、ＲＴＣ７０２は、出力デバイスからキャプチャされたグローバル出力を受け取っている。
【００３７】
データは、入力デバイスドライバ７２６を介して入力デバイス（図示せず）からも受け取られることが可能である。入力デバイスドライバ７２６は、ループバッファ７２８に出力する。ループバッファ７２８は、データをグローバルエンジン７３０に送り、エンジン７３０は、バッファ７３２に出力する。バッファ７３２は、ローカルエンジン７３４に出力し、エンジン７３４は、バッファ７３６に出力する。ＳＡＣ７３８においてバッファ７３６からオーディオデータがキャプチャされ、ＳＡＣ７３８からＲＴＣ７０２に戻される。
【００３８】
図７は、グローバル出力へのアクセスが与えられたＲＴＣ７０２が使用するためのグローバル出力の録音を描いている。これは、ＲＴＣ７０２が、オペレーティングシステムキャプチャサービスを使用して再生デバイスに対してキャプチャストリームが開かれるように要求することによって達せられる。そのように開かれた際、出力デバイスからグローバル出力がキャプチャされて、ＲＴＣ７０２が、そのグローバル出力に対して信号処理技術、例えば、ＡＥＣを実行することができる。ＳＡＲ７０４、ＳＡＣ７６８、およびＳＡＣ７３８を含むいくつかのアプリケーションプログラムインターフェース（ＡＰＩ）が、ＲＴＣ７０２によって使用される。ＳＡＲ７０４は、出力デバイス上でストリーミングオーディオデータをレンダリングすることを目的とする。ＳＡＣ７６８は、キャプチャデバイスからオーディオデータをストリーミングすることを目的とする。ＳＡＣ７３８は、ＳＡＣ７６８と同様の機能を実行する。出力デバイスドライバ７２４が通信する出力デバイスに対してＳＡＣ７６８が開かれた時点で、ＲＴＣ７０２が、デジタルループバックパスに対するアクセスを得る。これにより、グローバル出力がＲＴＣ７０２に対して、あたかも実際のオーディオデバイスからオーディオデータがキャプチャされているかのように提供されることが可能である。このため、環境７００により、ＲＴＣ７０２のようなサウンド録音アプリケーションが、出力デバイスに関わらずすべてのサウンドを容易にキャプチャすることが可能になる。
【００３９】
入力デバイス（図示せず）は、入力デバイスドライバ７２６とインターフェースを取り、ＲＴＣ７０２は、ＳＡＲ７０４に対してインターフェースを使用して出力デバイスドライバ７２４を介して開かれた出力デバイスを有し、また、ＲＴＣ７０２は、ＳＡＣ７３８に対して入力デバイスドライバ７２６を介して開かれた入力デバイスも有する。このため、ＲＴＣ７０２は、グローバル出力から音響エコーを消去することができる。もちろん、環境７００は、オペレーティングシステムサービスを使用して出力デバイスからのキャプチャソースを開くことによって音響エコー消去以外の他の形態の高度な信号処理も実行することができる。したがって、ローカルクライアント（例えば、アプリケーション）は、これにより、信号処理を実行するためにグローバル出力に対するアクセスを得ることができる。
【００４０】
図８は、アプリケーションが、オペレーティングシステムのシステムオーディオサービスのキャプチャサービスを使用してグローバル出力を獲得することができる方法８００を示している。方法８００は、ブロック８０２で開始し、アプリケーションが、出力デバイスからオーディオストリームをキャプチャするようにオーディオサービスを呼び出す。次に、方法８００は、ブロック８０４に進み、オーディオサービスが、入力を受け取るためにいずれの出力デバイスに接続する（ｔａｐ  ｉｎｔｏ）かを決める。次に、方法８００は、ブロック８０６に進む。制御がブロック８０６に進んだ際、オーディオサービスが、どこからオーディオデータを取り込むかを決める。次に、制御は、ブロック８０８に進み、オーディオサービスが、キャプチャされるべき出力データを取り出すためにオーディオシステムグラフに関する構造を挿入する。出力データは、キャプチャされると、信号処理のためのアプリケーションに対する入力データとして使用される。方法８００の制御は、ブロック８１０に進み、アプリケーションは、出力データを入力として録音するためにキャプチャＡＰＩを返される。このため、アプリケーションは、オペレーティングシステムのシステムオーディオサービスのキャプチャサービスを使用することによってグローバル出力を受け取ることができる。アプリケーションは、ＡＥＣを含むが、それに限定されないいくつかの信号処理技術のいずれでもグローバル出力に対して実行することができる。
【００４１】
例示的なコンピューティングシステムおよびコンピューティング環境
図９は、本明細書で説明するＲＴＣおよびＭＰを含むアプリケーションが内部にすべて実装されている、または部分的に実装されていることが可能なコンピューティング環境９００の例を示している。例示的なコンピューティング環境９００は、コンピューティングシステムの一例に過ぎず、ネットワークアーキテクチャの使用または機能の範囲に関する限定を何ら示唆することを意図するものではない。また、コンピューティング環境９００が、例示的なコンピューティング環境９００に示したコンポーネントのいずれか１つ、またはいずれかの組み合わせに関連する依存関係または要件を有すると解釈してはならない。
【００４２】
コンピュータアーキテクチャおよびネットワークアーキテクチャは、多数の他の汎用または特殊目的のコンピューティングシステム環境またはコンピューティングシステム構成を使用して実装することも可能である。使用に適する可能性がある周知のコンピューティングシステム、コンピューティング環境、および／またはコンピューティング構成の例には、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、ゲームコンソール、以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境等が含まれるが、以上には限定されない。
【００４３】
アプリケーション（ＲＴＣおよびＭＰを含め）は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈において説明することができる。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれる。アプリケーション（ＲＴＣおよびＭＰを含む）は、通信ネットワークを介してリンクされた遠隔の処理デバイスによってタスクが実行される分散コンピューティング環境において実施することも可能である。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルのコンピュータ記憶メディアと遠隔のコンピュータ記憶メディアの両方の中に配置されることが可能である。
【００４４】
コンピューティング環境９００は、コンピュータ９０２の形態で汎用コンピューティングシステムを含む。コンピュータ９０２のコンポーネントには、１つまたは複数のプロセッサまたは処理ユニット９０４、システムメモリ９０６、ならびにプロセッサ９０４からシステムメモリ９０６までを含む様々なシステムコンポーネントを結合するシステムバス９０８が含まれることが可能であるが、以上には限定されない。
【００４５】
システムバス９０８は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート（ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ）、およびプロセッサバスまたはローカルバスを含むいくつかのタイプのバス構造のいずれかの１つまたは複数を表わす。例として、そのようなアーキテクチャには、インダストリスタンダードアーキテクチャ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）（ＭＣＡ）バス、エンハンストＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）（ＥＩＳＡ）バス、ビデオエレクトロニクススタンダーズアソシエーション（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）（ＶＥＳＡ）ローカルバス、およびメザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られるペリフェラルコンポーネントインターコネクツ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）（ＰＣＩ）バスが含まれることが可能である。
【００４６】
コンピュータシステム９０２は、通常、様々なコンピュータ可読メディアを含む。そのようなメディアは、コンピュータ９０２によってアクセス可能な任意の利用可能なメディアであることが可能であり、揮発性のメディアと不揮発性のメディア、取外し可能なメディアと取外し不可能なメディアがともに含まれる。システムメモリ９０６は、ランダムアクセスメモリ（ＲＡＭ）９１０などの揮発性メモリの形態、および／または読取り専用メモリ（ＲＯＭ）９１２のような不揮発性メモリの形態でコンピュータ可読メディアを含む。始動中などにコンピュータ９０２内部の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）９１４が、ＲＯＭ９１２の中に格納されている。ＲＡＭ９１０は、通常、処理ユニット９０４が即時にアクセスすることが可能であり、かつ／または現在、処理しているデータおよび／またはプログラムモジュールを含む。
【００４７】
コンピュータ９０２は、その他の取外し可能な／取外し不可能な、揮発性／不揮発性のコンピュータ記憶メディアも含むことが可能である。例として、図９は、取外し不可能な不揮発性の磁気メディア（図示せず）に対して読取りおよび書込みを行うためのハードディスクドライブ９１６、取外し可能な不揮発性の磁気ディスク９２０（例えば、「フロッピー（登録商標）ディスク」）に対して読取りおよび書込みを行うための磁気ディスクドライブ９１８、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光メディアなどの取外し可能な不揮発性の光ディスク９２４に対して読取りおよび／または書込みを行うための光ディスクドライブ９２２を示している。ハードディスクドライブ９１６、磁気ディスクドライブ９１８、および光ディスクドライブ９２２はそれぞれ、１つまたは複数のデータメディアインターフェース９２５でシステムバス９０８に接続されている。代替として、ハードディスクドライブ９１６、磁気ディスクドライブ９１８、および光ディスクドライブ９２２は、ＳＣＳＩインターフェース（図示せず）でシステムバス９０８に接続することも可能である。
【００４８】
以上のディスクドライブおよび関連するコンピュータ可読メディアにより、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性ストレージがコンピュータ９０２に提供される。この例は、ハードディスク９１６、取外し可能な磁気ディスク９２０、および取外し可能な光ディスク９２４を図示しているが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）または他の光ストレージ、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、電気的に消去可能なプログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）などの、コンピュータによってアクセス可能なデータを格納することができる他のタイプのコンピュータ可読メディアも、例示的なコンピューティングシステムおよびコンピューティング環境を実装するのに利用できることが認められよう。
【００４９】
例として、オペレーティングシステム９２６、１つまたは複数のアプリケーションプログラム９２８、他のプログラムモジュール９３０、およびプログラムデータ９３２を含む任意の数のプログラムモジュールをハードディスク９１６、磁気ディスク９２０、光ディスク９２４、ＲＯＭ９１２、および／またはＲＡＭ９１０に格納することができる。そのようなオペレーティングシステム９２６、１つまたは複数のアプリケーションプログラム９２８、他のプログラムモジュール９３０、およびプログラムデータ９３２のそれぞれ（または以上の何らかの組み合わせ）が、本明細書で開示するＲＴＣおよび／またはＭＰの実施形態を含むことが可能である。オペレーティングシステム９２６は、前述した標準のオペレーティングシステムストリーミングのオーディオキャプチャサービスおよびオーディオレンダサービス（ＳＡＣおよびＳＡＲ）を含むことが可能である。オペレーティングシステム９２６のこれらのサービスを使用して、ＲＴＣ、ＭＰなどのクライアントアプリケーションは、信号処理のためのグローバルオーディオ出力のシステム全体のミックスを獲得することができる。
【００５０】
コンピュータシステム９０２は、通信メディアとして特定された様々なコンピュータ可読メディアを含むことが可能である。通信メディアは、通常、搬送波または他のトランスポート機構における変調されたデータ信号としてコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを実現し、任意の情報配信媒体が含まれる。
【００５１】
「変調されたデータ信号」という用語は、信号内に情報を符号化するような形で特性の１つまたは複数が設定されている、または変更されている信号を意味する。例として、限定としてではなく、通信メディアには、ワイヤードネットワークまたは直接ワイヤード接続などのワイヤードメディア、ならびに音響ワイヤレスメディア、ＲＦワイヤレスメディア、赤外線ワイヤレスメディア、およびその他のワイヤレスメディアなどのワイヤレスメディアが含まれる。以上のいずれかの組み合わせも、コンピュータ可読メディアの範囲に含まれる。
【００５２】
ユーザは、キーボード９３４やポインティングデバイス９３６（例えば、「マウス」）などの入力デバイスを介してコマンドおよび情報をコンピュータシステム９０２に入力することができる。マイク９３５を使用して、音声入力を転送するための音声認識プロセスを受けることが可能な音声コマンドを入力することができる。その他の入力デバイス９３８（図示せず）には、ジョイスティック、ゲームパッド、サテライトディッシュ、シリアルポート、スキャナ、および／または以上に類する物が含まれることが可能である。以上の入力デバイス、およびその他の入力デバイスは、システムバス９０８に結合された入力／出力インターフェース９４０を介して処理ユニット９０４に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などのその他のインターフェースやバス構造で接続してもよい。
【００５３】
また、モニタ９４２、または他のタイプのディスプレイデバイスも、ビデオアダプタ９４４のようなインターフェースを介してシステムバス９０８に接続することができる。入力／出力インターフェース９４０には、サウンドカード、内蔵型（例えば、オンボード）サウンドカード等が含まれることが可能である。１つまたは複数のスピーカ９３７が、入力／出力インターフェース９４０と通信していることが可能である。モニタ９４２に加えて、その他の出力周辺デバイスには、入力／出力インターフェース９４０を介してコンピュータ９０２に接続されることが可能なプリンタ９４６などのコンポーネントが含まれることが可能である。
【００５４】
コンピュータ９０２は、遠隔コンピューティングデバイス９４８のような１つまたは複数の遠隔コンピュータに対する論理接続を使用するネットワーク化された環境において動作することができる。例として、遠隔コンピューティングデバイス９４８は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、または他の一般的なネットワークノード等であることが可能である。遠隔コンピューティングデバイス９４８は、コンピュータシステム９０２に関連して本明細書で説明した要素および特徴の多く、またはすべてを含むことが可能なポータブルコンピュータとして図示している。
【００５５】
コンピュータ９０２と遠隔コンピュータ９４８の間の論理接続が、ローカルエリアネットワーク（ＬＡＮ）９５０、および汎用ワイドエリアネットワーク（ＷＡＮ）９５２として描かれている。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。ＬＡＮネットワーキング環境で実装される場合、コンピュータ９０２は、ネットワークインターフェースまたはネットワークアダプタ９５４を介してローカルネットワーク９５０に接続される。ＷＡＮネットワーキング環境で実装される場合、コンピュータ９０２は、通常、ワイドネットワーク９５２を介して通信を確立するためのモデム９５６、またはその他の手段を含む。コンピュータ９０２の内部にあることも、外部にあることも可能なモデム９５６は、入力／出力インターフェース９４０、または他の適切な機構を介してシステムバス９０８に接続されることが可能である。図示したネットワーク接続は、例示的であり、コンピュータ９０２と９４８の間で通信リンクを確立するその他の手段も使用できることを理解されたい。
【００５６】
コンピューティング環境９００で例示したようなネットワーク化された環境では、コンピュータ９０２に関連して描いたプログラムモジュール、またはプログラムモジュールの部分は、遠隔のメモリ記憶装置の中に格納されることが可能である。例として、遠隔のアプリケーションプログラム９５８が、遠隔コンピュータ９４８のメモリデバイス上に常駐している。例示のため、オペレーティングシステムなどのアプリケーションプログラムおよびその他の実行可能なプログラムコンポーネントを本明細書では、個別のブロックとして示しているが、そのようなプログラムおよびコンポーネントは、様々な時点でコンピュータシステム９０２の異なる記憶コンポーネントの中に存在し、コンピュータのデータプロセッサによって実行されることが認識されている。
【００５７】
結論
オペレーティングシステムのオーディオキャプチャサービスを使用して再生デバイスに対してキャプチャストリームを開くことによってグローバルオーディオ出力に対するアクセスをクライアントアプリケーションに提供することができる。これを行う際、クライアントアプリケーションは、オーディオデバイスなどの出力デバイスからグローバル出力をキャプチャしている。キャプチャされると、クライアントアプリケーションは、キャプチャされたグローバル出力に対して信号処理技術（例えば、ＡＥＣ）を実行することができる。さらに、このキャプチャサービスがクライアントアプリケーションによって呼び出されて、クライアントアプリケーションからの出力オーディオミックスだけが、クライアントアプリケーションによるさらなる信号処理のためにキャプチャされるように既存のレンダリングＡＰＩに対して開かれることが可能である。したがって、例えば、クライアントアプリケーションは、グローバル出力のすべてからの消去を実行するのではなく、自らの出力だけから消去を実行することができる。
【００５８】
本発明を構造的特徴および／または方法上のステップに特有の言い回しで説明してきたが、特許請求の範囲で定義される本発明は、説明した特定の特徴またはステップに必ずしも限定されないことを理解されたい。むしろ、特定の特徴およびステップは、請求する本発明を実施する好ましい形態として開示している。
【図面の簡単な説明】
【００５９】
【図１ａ】リアルタイム通信アプリケーション（ＲＴＣ）をそれぞれが実行しているそれぞれのパーソナルコンピュータ（ＰＣ）を使用して、第１の個人がネットワークを介して第２の個人と話をするネットワークテレフォニー環境を示す図である。
【図１ｂ】ストリーミングオーディオキャプチャラ（ＳＡＣ）およびストリーミングオーディオレンダラ（ＳＡＲ）を使用して音響エコー消去（ＡＥＣ）を行うＲＴＣを例示する図１ａのネットワークテレフォニー環境に関する部分ブロック図である。
【図２ａ】ユーザが、ＰＣによって実行されているメディアプレーヤーアプリケーション（ＭＰ）にマイクを介してＰＣに入力される音声コマンドを与え、ユーザが、ＭＰの実行から生じさせられたスピーカによって出力されたサウンドを聞くＳＡＣおよびＳＡＲを含むオペレーティングシステムを有するＰＣを示す図である。
【図２ｂ】ＰＣからのシステムサウンドおよびＭＰからのメディアサウンドを例示し、ＰＣおよびＭＰそれぞれからのストリーミングオーディオが、グローバルエンジン内のミキシングおよび処理のためにそれぞれのＳＡＲに入力され、グローバルエンジンからの出力が、サウンドレコーダを使用して録音するためにＳＡＣに出力される図２ａのＰＣに関する部分ブロック図である。
【図３】ＳＡＲが出力デバイスに対して開き、ＳＡＣが入力デバイスに対して開いており、ＳＡＲおよびＳＡＣが、グローバル出力からの出力を消去するのではなく、ＲＴＣの出力から出力を消去するのに使用されるオペレーティングシステムを有するコンピュータシステム内部でＲＴＣが実行されている実装を示す図である。
【図４】ＳＡＲが出力デバイスに対して開き、ＳＡＣが入力デバイスに対して開いており、ＳＡＲおよびＳＡＣが、グローバル出力からの出力を消去するのではなく、ＲＴＣの出力から出力を消去するのに使用されるオペレーティングシステムを有するコンピュータシステム内部でＲＴＣが実行されている実装を示す図である。
【図５】ＳＡＲが出力デバイスに対して開かれ、ＳＡＣが入力デバイスに対して開かれており、ＳＡＲおよびＳＡＣが、グローバル出力からの出力を消去するのではなく、ＲＴＣの出力から出力を消去するのに使用されるオペレーティングシステムを有するコンピュータシステム内部でＲＴＣが実行されている実装を示す図である。
【図６】アプリケーションが、出力に対してＳＡＣを開いてその出力を消去し、結果をアプリケーションに送り返すようにする呼び出しを行うプロセスを例示する流れ図である。
【図７】ＳＡＲが出力デバイスに対して開かれ、ＳＡＣが入力デバイスに対して開かれており、出力デバイスに対してＳＡＣを開くことによってグローバル出力からの音響エコーが消去されるオペレーティングシステムを有するコンピュータシステム内部でＲＴＣアプリケーションが実行されている実装を示す図である。
【図８】アプリケーションが、出力デバイスに対してＳＡＣを開いて出力デバイスからのグローバル出力をキャプチャするようにし、キャプチャされたグローバル出力が、さらなる処理のためにアプリケーションに戻されるようにする呼び出しを行うプロセスを例示する流れ図である。
【図９】本明細書で説明するコンピュータ、ネットワーク、ソフトウェアアプリケーション、方法、およびシステムをすべて、または部分的に実装することができるコンピューティング環境の例を示す図である。
【符号の説明】
【００６０】
１０２  リアルタイム通信アプリケーション
１０４  ストリーミングオーディオレンダラ
１０６  グローバルエンジン
１０８、１１０  ストリーミングオーディオキャプチャラ
１１２  音響エコー消去プロセス
【図１ａ】
2004320734.tif 000003
【図１ｂ】
2004320734.tif 000004
【図２ａ】
2004320734.tif 000005
【図２ｂ】
2004320734.tif 000006
【図３】
2004320734.tif 000007
【図４】
2004320734.tif 000008
【図５】
2004320734.tif 000009
【図６】
2004320734.tif 000010
【図７】
2004320734.tif 000011
【図８】
2004320734.tif 000012
【図９】
2004320734.tif 000013