(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-13
(45)【発行日】2025-02-21
(54)【発明の名称】デコーダ入力におけるパケット複製を介したオーディオパケット損失隠蔽
(51)【国際特許分類】
G10L 19/005 20130101AFI20250214BHJP
【FI】
G10L19/005
(21)【出願番号】P 2022520308
(86)(22)【出願日】2020-12-07
(86)【国際出願番号】 US2020063618
(87)【国際公開番号】W WO2021201926
(87)【国際公開日】2021-10-07
【審査請求日】2022-08-25
(32)【優先日】2020-04-01
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ライ,チョン・チン
【審査官】菊池 智紀
(56)【参考文献】
【文献】特開平05-316054(JP,A)
【文献】特開2007-010855(JP,A)
【文献】特開2013-178554(JP,A)
【文献】米国特許出願公開第2020/0020342(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G10L 19/005
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ネットワークを介してオーディオパケットのストリームを受信するように構成されたネットワークインターフェースと、
前記ストリームのオーディオパケットのサブセットを一時的にバッファリングするように構成されたバッファと、
前記バッファからオーディオパケットを受信するための入力と、復号されたオーディオデータストリームの対応するセグメントを提供するための出力とを有するオーディオデコーダと、
前記バッファ内の前記サブセットの第1オーディオパケットに続く、損失または遅延した第2オーディオパケットの復号の代わりに、前記オーディオデコーダによって復号された前記第1オーディオパケットを、反復復号のために前記オーディオデコーダの前記入力に再び提供するように構成されるストリーム監視モジュールとを備え、
前記ストリーム監視モジュールは、
前記第1オーディオパケットが連続して復号された回数が指定された閾値を超えていないとの判定に応答して、前記オーディオデコーダによって以前に復号された前記第1オーディオパケットを、反復復号のために前記オーディオデコーダの前記入力に再び提供するように構成され、
前記第1オーディオパケットが連続して復号された前記回数が前記指定された閾値を超えたことに応答して、前記第1オーディオパケットの復号とは異なる処理として、異常をトリガするための処理、または損失もしくは遅延した前記第2オーディオパケットを補償するための代替パケット損失隠蔽処理を実行するように構成される、電子装置。
【請求項2】
前記ストリーム監視モジュールは、
前記電子装置においてタイムリーに受信された前記第1オーディオパケットについて、第1タイムスロットに対して復号されたオーディオ信号の対応する第1セグメントに復号するために、前記第1オーディオパケットを前記オーディオデコーダに提供し、
遅延または損失した前記第2オーディオパケットについて、第2タイムスロットに対して前記復号されたオーディオ信号の対応する第2セグメントに復号するために、前記第1オーディオパケットを前記オーディオデコーダに提供するように構成される、請求項1に記載の電子装置。
【請求項3】
前記オーディオデコーダは、前記第1セグメントと前記第2セグメントとの間の連続性を提供するように構成される、請求項2に記載の電子装置。
【請求項4】
前記ストリーム監視モジュールは、遅延または損失した第3オーディオパケットについて、第3タイムスロットに対して前記復号されたオーディオ信号の対応する第3セグメントに復号するために、前記第1オーディオパケットを前記オーディオデコーダに提供するようにさらに構成される、請求項2または請求項3に記載の電子装置。
【請求項5】
前記オーディオデコーダは、前記第2セグメントと前記第3セグメントとの間の連続性を提供するように構成される、請求項4に記載の電子装置。
【請求項6】
前記オーディオパケットのストリームは、前記ネットワークを介して前記電子装置に接続されたサーバで実行されるビデオゲームアプリケーションによって生成されたオーディオコンテンツから生成される、請求項1から請求項5のいずれかに記載の電子装置。
【請求項7】
前記オーディオパケットのストリームを生成するサーバと、請求項1から請求項6のいずれかに記載の電子装置とを備える、システム。
【請求項8】
ネットワークからオーディオパケットのストリームを受信するステップと、
前記オーディオパケットのサブセットを一時的にバッファリングするステップと、
オーディオデコーダにおいて、前記サブセットの第1オーディオパケットを復号して、復号されたオーディオデータストリームの第1セグメントを生成するステップと、
前記ストリーム内の前記第1オーディオパケットに続く第2オーディオパケットが損失または遅延したことを検出したことおよび前記第1オーディオパケットが連続して復号された回数が指定された閾値を超えていないとの判定に応答して、前記オーディオデコーダにおいて、前記第1オーディオパケットを再度復号して、前記復号されたオーディオ信号中の前記第1セグメントに続く、前記復号されたオーディオ信号の第2セグメントを生成するステップと、
前記第1オーディオパケットが連続して復号された前記回数が前記指定された閾値を超えたことに応答して、前記第1オーディオパケットの復号とは異なる処理として、異常をトリガするための処理、または損失もしくは遅延した前記第2オーディオパケットを補償するための代替パケット損失隠蔽処理を実行するステップとを含む、コンピュータ実装の方法。
【請求項9】
前記ストリーム内の前記第2オーディオパケットに続く第3オーディオパケットが損失または遅延したことを検出したことに応答して、前記オーディオデコーダにおいて、前記第1オーディオパケットを3回目に復号して、前記復号されたオーディオ信号中の前記第2セグメントに続く、前記復号されたオーディオ信号の第3セグメントを生成するステップをさらに含む、請求項8に記載の方法。
【請求項10】
前記オーディオデコーダは、前記第1セグメントと連続性を有するように前記第2セグメントを生成する、請求項8または請求項9に記載の方法。
【請求項11】
前記オーディオパケットのストリームは、サーバで実行されるビデオゲームアプリケーションによって生成されたオーディオコンテンツから生成される、請求項8から請求項10のいずれかに記載の方法。
【請求項12】
オーディオパケットをバッファリングするバッファと、
オーディオパケットを復号するデコーダとを備え、
請求項8から請求項11のいずれかに記載の方法を実行するように構成される、電子装置。
【請求項13】
コンピュータプログラムであって、前記コンピュータプログラムは、プロセッサに実行されることによって、前記プロセッサに、
ネットワークを介して受信されたストリームのオーディオパケットの一時的にバッファリングされたサブセットの第1オーディオパケットを復号して、復号されたオーディオ信号の第1セグメントを生成
する処理をさせ、
前記ストリーム内の前記第1オーディオパケットに続く第2オーディオパケットが損失または遅延したことを検出したことおよび前記第1オーディオパケットが連続して復号された回数が指定された閾値を超えていないとの判定に応答して、前記第1オーディオパケットを再度復号して、前記復号されたオーディオ信号中の前記第1セグメントに続き、前記第1セグメントと連続性を有する、前記復号されたオーディオ信号の第2セグメントを生成
する処理をさせ、
前記第1オーディオパケットが連続して復号された前記回数が前記指定された閾値を超えたことに応答して、前記第1オーディオパケットの復号とは異なる処理として、異常をトリガするための処理、または損失もしくは遅延した前記第2オーディオパケットを補償するための代替パケット損失隠蔽処理を実行
させる、コンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
リアルタイムメディアストリーミングサービスは、しばしば、ネットワーク問題(たとえばパケットの損失かさもなければパケットの遅延など)の影響を受けやすい。オーディオストリームの場合、受信クライアント装置のオーディオデコーダは、通常、オーディオ再生の一時停止がオーディオ品質を低下させ、サービスの品質に影響を与えるであろうことから、オーディオ再生を単純に一時停止することができないので、オーディオパケットの損失または遅延が問題となり得る。遅れた/損失したオーディオパケットの影響を軽減するために、多くのシステムは、前方誤り訂正(FEC:Forward Error Correction)、無音挿入、補間分析、またはポストデコーディングセグメント複製などの従来のパケット損失隠蔽(PLC:Packet Loss Concealment)技術を採用する。
【発明の概要】
【発明が解決しようとする課題】
【0002】
一般に、FECベースのPLC技術は、少なくとも部分的に冗長なパケットの送信数を増加させることに依存しており、この冗長性は、損失したオーディオパケットまたは遅れたオーディオパケットをクライアント装置が再構築することを可能にする。しかしながら、この冗長性は、余分な帯域幅を消費するため、オーディオストリームの全体的なビットレートを低下させることがよくある。さらに、このアプローチは、FEC機能を内蔵しているクライアント装置のみに限定される。無音挿入技術は、事実上、損失した/遅れたオーディオパケットに対応するタイムスロットに対して、ゼロ出力またはデフォルトで定義された出力のいずれかを提供する。実装は比較的簡単であるが、このデフォルトの挿入は、しばしば知覚可能なオーディオアーチファクトを引き起こす。これに対して、補間分析ベースの技術は、先行するオーディオ信号を分析し、信号推定を通じて損失した/遅れたオーディオパケットのコンテンツを再構成することを試みるものであり、オーディオ信号の複製を改善し、知覚可能なオーディオアーチファクトを少なくすることができる。ポストデコーディング複製技術は、オーディオデコーダのオーディオ出力のスライスの複製に依存して、遅れた/損失したオーディオパケットを補償し、さらに、再構成されたオーディオ信号を分析し、オーディオアーチファクトを低減する方法で効果的に、再構成されたオーディオ信号をともに「ステッチ(stitch)」する追加の処理を行なう。しかしながら、ポストデコーディング複製技術および補間分析技術は改善された信号の忠実度を提供することができるが、これらの技術は、多くのクライアント装置にとって実行不可能な複雑および計算リソース能力を必要とすることが多い。
【課題を解決するための手段】
【0003】
実施形態の概要
第1の実施の形態では、電子装置は、ネットワークを介してオーディオパケットのストリームを受信するように構成されたネットワークインターフェースと、ストリームのオーディオパケットのサブセットを一時的にバッファリングするように構成されたバッファと、バッファからオーディオパケットを受信するための入力および復号されたオーディオデータストリームの対応するセグメント(すなわち、復号されたオーディオデータがバッファからのオーディオパケットにそれぞれ対応するセグメント)を提供するための出力を有するオーディオデコーダとを含む。電子装置は、デコーダによって以前に復号された、バッファ内のサブセットのオーディオパケットを、損失したまたは遅れたオーディオパケットの復号の代わりに、反復復号するために再びデコーダの入力に提供するように構成されたストリーム監視モジュールをさらに含む。ストリーム監視モジュールは、オーディオパケットが連続して復号された回数が指定された閾値を越えていないと判断することにさらに応答して、デコーダによって以前に復号されたオーディオパケットを、再びデコーダの入力に提供して反復復号することによるパケット損失隠蔽(PLC)処理を提供するように構成することができ、さらに、オーディオパケットが連続して復号された回数が指定された閾値を越えたことに応答して異常をトリガするように構成してもよい。ストリーム監視モジュールは、また、オーディオパケットが連続して復号された回数が指定された閾値を越えたことに応答して、損失したまたは遅れたオーディオパケットを補償するための代替のパケット損失隠蔽(PLC)処理を実装するようにさらに構成することができる。
【0004】
異常をトリガすることは、異常信号、たとえば、オーディオストリーム(および、例示的な実施形態では、対応するビデオストリームがあればビデオストリーム)の再生の停止および/またはシステム性能チェックの開始をもたらす異常信号の生成をトリガすることを含んでもよい。
【0005】
したがって、提案される電子装置は、ネットワークからオーディオストリームを受信するネットワークインターフェースと、電子装置で受信されるオーディオパケットのサブセットを一時的にバッファリングするバッファたとえばジッタバッファと、バッファからのオーディオパケットを復号して、復号されたオーディオ信号の対応するセグメントを生成するためのオーディオデコーダとを含んでもよい。復号されたオーディオ信号は、その後、他のオーディオソースと混合され、再パケット化され、さらに送信され、または他の方法でさらに処理されて、1つ以上の対応するスピーカを駆動するのに用いられる1つ以上のアナログオーディオ信号を最終的に生成することができる。少なくとも1つの実施形態において、電子装置は、ネットワークによって損失されたまたは過度に遅延された(すなわち「遅れた」)1つ以上の後続のオーディオパケットを補償するために、以前に受信されたオーディオパケットの1つ以上の反復復号に基づく提案されたパケット損失隠蔽(PLC)技術を採用してもよい。この目的のために、電子装置は、ストリーム監視モジュールを採用して、受信されたオーディオストリームを監視し、ストリームのオーディオパケットが遅れているまたは損失していることを検出することができる。このような遅れたまたは損失したオーディオパケットを検出することに応答して、ストリーム監視モジュールは、前のタイムスロットのためにデコーダによって以前に復号されたバッファ内のサブセットのオーディオパケットを、現在のタイムスロットを対象とする損失されたまたは遅れたオーディオパケットの復号の代わりに、現在のタイムスロットに対する反復復号のために再びデコーダの入力に提供する。遅れた/損失したパケットによって生じるギャップを埋めるために以前に復号されたオーディオパケットの復号を繰り返すことによって、このPLC技術では、デコーダのオーディオ合成を活用して(通常の復号処理パスに従うことにより)、パケット復号複製中に復号されたオーディオ信号の連続性を促進し、この連続性がない場合に発生し得る歪みまたはアーチファクトを低減または排除する。
【0006】
例示的な実施形態では、ストリーム監視モジュールは、電子装置でタイムリーに受信された第1オーディオパケットについて、第1タイムスロットに対して復号されたオーディオ信号の対応する第1セグメントに復号させるために、第1オーディオパケットをオーディオデコーダに提供し、遅れたまたは損失した第2オーディオパケットについて、第2タイムスロットに対して復号されたオーディオ信号の対応する第2セグメントに復号させるために、第1オーディオパケットをオーディオデコーダに提供し、第2セグメントが第1セグメントと連続性を有するように構成することができる。ストリーム監視モジュールは、また、遅れたまたは損失した第3オーディオパケットについて、第3タイムスロットに対して復号されたオーディオ信号の対応する第3セグメントに復号させるために、第1オーディオパケットをオーディオデコーダに提供し、第3セグメントが第2セグメントと連続性を有するようにさらに構成することができる。
【0007】
上記のいずれの例においても、オーディオパケットのストリームは、ネットワークを介して電子装置に接続されたサーバで実行されるビデオゲームアプリケーションによって生成されるオーディオコンテンツから生成することができる。
【0008】
他の実施形態は、上述した例のいずれかの電子装置を動作させる方法、ならびに、オーディオパケットのストリームを生成するサーバと、上述した例のいずれかの電子装置とを含むシステムを含んでもよい。
【0009】
別の実施形態では、提案されるコンピュータ実装方法は、ネットワークからオーディオパケットのストリームを受信するステップと、オーディオパケットのサブセットを一時的にバッファリングするステップと、オーディオデコーダにおいて、サブセットの第1オーディオパケットを復号して、復号されたオーディオデータストリームの第1セグメントを生成するステップと、ストリーム内の第1オーディオパケットに続く第2オーディオパケットの損失または遅れを検出したことに応答して、オーディオデコーダにおいて、第1オーディオパケットを再度復号して、復号されたオーディオ信号の第1セグメントに続く、復号されたオーディオ信号の第2セグメントを生成するステップとを含む。この方法は、また、ストリーム内の第2オーディオパケットに続く第3オーディオパケットの損失または遅れを検出したことに応答して、オーディオデコーダにおいて、第1オーディオパケットを3回目に復号して、復号されたオーディオ信号中の第2セグメントに続く、復号されたオーディオ信号の第3セグメントを生成するステップを含むことができる。第1オーディオパケットを再度復号することは、第1オーディオパケットが連続して復号された回数が指定された閾値を超えていないとの判定にさらに応答させることができる。この方法は、第1オーディオパケットが連続して復号された回数が指定された閾値を超えたことに応答して、異常をトリガするステップをさらに含むことができる。この方法は、また、第1オーディオパケットが連続して復号された回数が指定された閾値を超えたことに応答して、第2オーディオパケットが損失または遅れることを補償するための代替パケット損失隠蔽処理を実行するステップをさらに含むことができる。上記の例のいずれにおいても、オーディオデコーダは、第1セグメントと連続性を有するように第2セグメントを生成することができる。同様に、上述の例のいずれにおいても、オーディオパケットのストリームは、サーバで実行されるビデオゲームアプリケーションによって生成されたオーディオコンテンツから生成することができる。
【0010】
他の実施形態は、オーディオパケットをバッファリングするためのバッファと、オーディオパケットを復号するためのデコーダとを備える電子装置を含むことができ、電子装置は、例示的な方法を実行するように構成される。
【0011】
別の実施形態は、ネットワークを介して受信されたストリームのオーディオパケットの一時的にバッファリングされたサブセットの第1オーディオパケットを復号して、復号されたオーディオ信号の第1セグメントを生成し、ストリーム内の第1オーディオパケットに続く第2オーディオパケットが損失または遅れたことを検出したことに応答して、オーディオデコーダにおいて、第1オーディオパケットを再度復号して、復号されたオーディオ信号の第1セグメントに続き、第1セグメントと連続性を有する、復号されたオーディオ信号の第2セグメントを生成するようにプロセッサを操作するように構成された、実行可能命令のセットを記憶する非一時的なコンピュータ記録媒体を含む。
【0012】
図面の簡単な説明
本開示は、添付の図面を参照することによって、よりよく理解され得、その多数の特徴および利点が当業者に明らかになる。異なる図面における同じ参照符号の使用は、類似または同一の項目を示す。
【図面の簡単な説明】
【0013】
【
図1】いくつかの実施形態による、プリデコーダパケット複製に基づくパケット損失隠蔽(PLC)を採用するリアルタイムメディアストリーミングシステムを示すブロック図である。
【
図2】いくつかの実施形態による、プリデコーダパケット複製を用いたPLCのための方法を示すフロー図である。
【
図3】
図2の方法の例示的な実装形態を示す図である。
【発明を実施するための形態】
【0014】
詳細な説明
図1~3は、1つ以上のネットワークを介してサーバからユーザの電子装置(すなわち、「クライアント装置」)に送信されるリアルタイムオーディオストリームにおけるパケット損失またはパケット遅延の影響を軽減するための様々なシステムおよび技術を示す。クライアント装置は、ネットワークからオーディオストリームを受信するネットワークインターフェースと、クライアント装置で受信されるオーディオパケットのサブセットを一時的にバッファリングするジッタバッファと、ジッタバッファからのオーディオパケットを復号して、復号されたオーディオ信号の対応するセグメントを生成するオーディオデコーダとを含む。たとえば、復号されたオーディオ信号は、その後、他のオーディオソースと混合され、再パケット化され、さらに送信され、または他の方法でさらに処理されて、1つ以上の対応するスピーカを駆動するのに用いられる1つ以上のアナログオーディオ信号を最終的に生成することができる。少なくとも1つの実施形態において、クライアント装置は、ネットワークによって損失されたまたは過度に遅延された(すなわち「遅れた」)1つ以上の後続のオーディオパケットを補償するために、以前に受信されたオーディオパケットの1つ以上の反復復号に基づくパケット損失隠蔽(PLC)技術を採用する。この目的のために、クライアント装置は、ストリーム監視モジュールを採用して、受信されたオーディオストリームを監視し、ストリームのオーディオパケットの遅れまたは損失を検出する。このような遅れたまたは損失したオーディオパケットを検出することに応答して、ストリーム監視モジュールは、前のタイムスロットのためにデコーダによって以前に復号されたバッファ内のサブセットのオーディオパケットを、現在のタイムスロットを対象とする損失されたまたは遅れたオーディオパケットの復号の代わりに、現在のタイムスロットに対する反復復号のために再度デコーダの入力に提供する。遅れた/損失したパケットによって生じるギャップを埋めるために以前に復号されたオーディオパケットの復号を繰り返すことによって、このPLC技術では、デコーダのオーディオ合成を活用して(通常の復号処理パスに従うことにより)、パケット復号複製中に復号されたオーディオ信号の連続性を促進し、この連続性がない場合に発生し得る歪みまたはアーチファクトを低減または排除する。
【0015】
図1は、いくつかの実施形態による、プリデコーダパケット複製を用いたPLC技術を採用するリアルタイムメディアストリーミングシステム100を示す図である。システム100は、1つ以上のネットワーク106を介してユーザの電子装置104(以下、「クライアント装置104」)に結合されたサーバ102を含む。1つ以上のネットワーク106は、たとえば、インターネットもしくは他の公衆アクセスネットワーク、有線もしくは無線ワイドエリアネットワーク(WAN)、有線もしくは無線ローカルエリアネットワーク(LAN)、有線もしくは無線パーソナルエリアネットワーク(PAN)、またはそれらの組合せを含むことができる。
【0016】
サーバ102は、ネットワーク106に結合されたネットワークインターフェース108と、リアルタイムメディアソース110と、オーディオエンコーダ112とを含む。リアルタイムメディアソース110は、クライアント装置104に送信するためのリアルタイムメディアコンテンツを生成するか、または他の方法で提供する。例示すると、リアルタイムメディアソース110は、たとえば、ネットワーク106を介してクライアント装置104から受信されたプレーヤ入力に基づいてサーバ102で実行されているクラウドベースのビデオゲームを含むことができ、ビデオゲームは、クライアントに送信するための、ビデオフレームのストリームと、付随するオーディオフレームのストリームとの両方を生成する。別の例として、リアルタイムメディアソース110は、様々な参加者のクライアント装置間でビデオおよびオーディオストリームを配信するビデオ会議アプリケーションを含むことができる。さらに別の例として、リアルタイムメディアソース110は、モバイルセルラーシステムにおけるVoIP(Voice-over-Internet Protocol)または他のパケットベースの音声通話の音声コンテンツの転送送信を含むことができる。オーディオエンコーダ112は、リアルタイムメディアソース110からのオーディオコンテンツストリームを符号化し、結果として生じる符号化されたオーディオストリームをネットワークインターフェース108に提供するように動作し、ネットワークインターフェース108はそれに応じて、符号化されたオーディオストリームをパケット化し、結果として生じるオーディオパケットを、パケット化されたオーディオストリーム114の一部として、ネットワーク106を介してクライアント装置104に送信する。
【0017】
クライアント装置104は、オーディオストリーム114のオーディオコンテンツを再生するために、またはさらに別の電子装置による再生のためにオーディオコンテンツを復号および転送するために利用される様々な電子装置のいずれかを表す。クライアント装置104の例は、携帯電話、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ゲーム機、「スマート」テレビ、「スマート」ウォッチ、自動車情報/エンターテイメントシステムなどを含む。クライアント装置104は、オーディオストリーム114のオーディオパケットを受信するネットワークインターフェース116と、最近受信されたオーディオパケットのスライディングサブセットを一時的にバッファリングするためのジッタバッファ118(たとえば、サーキュラーバッファ)と、ジッタバッファ118からのオーディオパケットを指定された順序(たとえば、受信された順序、タイムスタンプに基づく順番など)で順次復号して出力復号オーディオ信号122(たとえば、パルスコード変調(PCM:Pulse-Code-Modulation)デジタル信号)を生成するよう動作するオーディオデコーダ120とを含み、出力復号オーディオ信号は、少なくとも1つのスピーカ124(たとえば、デジタル-アナログ変換器またはDACを介して)を駆動するために使用される1つ以上のアナログオーディオ信号に直接変換され得るか、または、少なくとも1つのスピーカ124を駆動するための1つ以上のアナログスピーカ信号に変換される前に、デジタル増幅器/ミキサ127などによってさらに処理され得る出力復号オーディオ信号122(たとえば、パルスコード変調(PCM:Pulse-Code-Modulation)デジタル信号)を生成するよう動作するオーディオデコーダ120とを含む。一実施形態では、オーディオデコーダ120は、システムメモリ130または他の非一時的なコンピュータ可読媒体に記憶されたオーディオ復号ソフトウェア128を実行する1つ以上のプロセッサ126として実装される。例示すると、オーディオ復号ソフトウェア128は、たとえば、Opus Interactive Audio Codecまたは他のよく知られたまたは独自のソフトウェアベースのコーデックとして実装することができる。他の実施形態では、オーディオデコーダ120は、本明細書で説明する機能を実行するように構成された特定用途向け集積回路(ASIC:Application-Specific Integrated Circuit)またはフィールドプログラマブルゲートアレイ(FPGA:Field-Programmable Gate Array)などのハードコードまたはプログラマブルロジックとして実装することが可能である。さらに他の実施形態では、オーディオデコーダ120は、ソフトウェアを実行するプロセッサと特定のハードコード/プログラマブルロジックとの組み合わせとして実装することが可能である。
【0018】
少なくとも1つの実施形態では、ネットワーク106は、1つ以上のパケット交換ネットワークの組み合せであり、したがって、オーディオストリーム114のオーディオパケットの1つ以上が損失される(すなわち、クライアント装置104によって決して受信されない)または遅れる(すなわち、クライアント装置104によって、その対応する復号タイムスロットにおける再生のために処理されるべき時間内に受信されない)結果となり得る輻輳、ルーティングエラー、バッファオーバーフローおよび他のネットワーク問題の影響を受ける。遅いオーディオパケットは、どちらも対応するタイムスロットで表されたオーディオコンテンツの再生を提供するために使用することができないという点で、損失したオーディオパケットと同じ結果を有し、したがって、事実上「損失」であり、特に断らない限り、本明細書における「損失されたオーディオパケット」への言及は、ネットワーク106で損失されたオーディオパケットまたはクライアント装置104にあまりにも遅く到着したオーディオパケットのいずれかを含むことが意図されている。補償メカニズムなしでは、損失されたオーディオパケットは、オーディオデコーダ120が、対応するタイムスロットについての復号されたオーディオ信号122の対応するセグメントを生成するために復号すべき意図されたオーディオコンテンツを有さず、したがって、結果として生じる復号されたオーディオ信号122に、リスナーの体験を損なう著しい不連続性をもたらすことを意味する。FEC、無音挿入、補間分析、および復号信号セグメントの反復などの従来のPLC技術は、損失したオーディオパケットの影響を軽減しようと試みるが、これらの従来の技術は、過度に複雑でリソースを大量に消費するか、または結果として得られる復号されたオーディオ信号における不連続性を充分に排除しないかのいずれかである。
【0019】
したがって、少なくとも1つの実施形態では、クライアント装置104は、プリデコーダパケット複製(すなわち、デコーダの入力におけるオーディオパケットコンテンツの複製)に基づくPLC技術を採用する。この目的のために、クライアント装置104は、ネットワークインターフェース116およびジッタバッファ118に結合され、さらに、ジッタバッファ118にバッファリングされたオーディオパケットを選択してオーディオデコーダ120の入力136に提供するように動作するパケットセレクタ134に結合されたストリーム監視モジュール132をさらに含む。いくつかの実施形態では、ストリーム監視モジュール132およびパケットセレクタ134の一方または両方は、システムメモリ130または他の非一時的コンピュータ可読媒体に記憶されたソフトウェア138を実行する1つ以上のプロセッサ126として少なくとも部分的に実装される。他の実施形態では、ストリーム監視モジュール132およびパケットセレクタ134の一方または両方は、少なくとも部分的に、ハードコードされた論理もしくはプログラム可能な論理、またはプロセッサ実行ソフトウェアとプログラム可能な/ハードコードされた論理との組み合わせとして実装される。
【0020】
一般的な動作概要として、ストリーム監視モジュール132は、ネットワークインターフェース116またはジッタバッファ118を介して受信されたオーディオストリーム114を監視して、損失されたオーディオパケットを検出する。対応する復号タイムスロットのためのオーディオパケットが時間内に受信されている間、ストリーム監視モジュール132は、パケットセレクタ134を制御して、ジッタバッファ118から受信されたオーディオパケットにアクセスし、そのオーディオコンテンツの復号のためにアクセスしたオーディオパケットをオーディオデコーダ120に提供して、対応するタイムスロットのための復号されたオーディオ信号122のセグメントを生成する。これに対し、損失したオーディオパケットの検出に応答して、損失したパケットの復号タイムスロットが近づいているとき、ストリーム監視モジュール132は、パケットセレクタ134を制御して、前の復号タイムスロットのためにオーディオデコーダ120によって復号されたオーディオパケットにアクセスし、この同じオーディオパケットを反復復号のためにオーディオデコーダ120の入力136に提供し、その結果として得られる復号されたセグメントが、損失したオーディオパケットに対して損失されなかった場合にオーディオデコーダ120が生成したであろう、復号されたセグメントの置き換えとして、復号オーディオ信号122で使用される。
【0021】
例として説明するために、サーバ102が、オーディオストリーム114のオーディオパケット140,141,142を、この順序でネットワーク106を介して送信すると仮定する。この例では、オーディオパケット140,142は、クライアント装置104に正常に受信され、時間通りにバッファリングされるが、オーディオパケット141は、ネットワーク106で損失される。したがって、オーディオパケット140が適時に受信され、バッファリングされた状態で、パケットセレクタ134は、対応するタイムスロットXにおいて、ジッタバッファ118からオーディオデコーダ120の入力136にオーディオパケット140を供給し、それに応じてオーディオデコーダ120は、オーディオパケット140のオーディオコンテンツを復号して、復号されたオーディオ信号122のセグメントYを生成する。次のタイムスロットX+1について、次のオーディオパケットであるオーディオパケット141が「損失」されたと判定することに応答して、ストリーム監視モジュール132は、パケットセレクタ134を制御して、以前に復号されたオーディオパケット、すなわちオーディオパケット140をオーディオデコーダ120の入力136に再度提供し、そこで再度復号されて、復号されたオーディオ信号122の対応するセグメントY+1を生成する。オーディオデコーダ120によって示される典型的なオーディオ合成特性は、同じオーディオコンテンツからオーディオデコーダ120によって以前に生成されたセグメントYとシームレスにステッチするために、セグメントY+1がオーディオデコーダ120によって生成され、したがって、両方のセグメントが同じ入力パケット(オーディオパケット140)から生成されたとしても、セグメントYとセグメントY+1との間で復号されたオーディオ信号122の連続性を保証する結果となることに注意されたい。続いて、オーディオパケット142が適時受信されると、タイムスロットX+2について、パケットセレクタ134は、オーディオパケット142をオーディオデコーダ120の入力136に提供し、それに応じてオーディオデコーダ120は、オーディオパケット142を復号して、復号されたオーディオ信号122のためのセグメントY+2を生成し、これもまた、オーディオデコーダ120によって採用される標準的なオーディオ合成手順により、オーディオデコーダ120によってセグメントY+2とシームレスにステッチされる。
【0022】
図2は、いくつかの実施形態による、
図1のシステム100のクライアント装置104によって採用されるプリデコーダパケット反復PLC技術を表す方法200をより詳細に示す図である。ブロック202によって表されるように、オーディオストリーム114を処理するためのクライアント装置104の初期化中に、ストリーム監視モジュール132は、いくつかのパラメータを設定する。そのようなパラメータの初期化の1つは、繰り返されるパケットの数の進行中のカウントを表す変数REP_PACKET_COUNTをゼロまたは何らかの他の初期化値に設定することを含む。別のパラメータ初期化は、実装形態に応じて、異常をトリガするかまたは異なるPLCプロセスに切り替えるかのいずれかの前に、オーディオパケットが連続して復号のために複製され得る最大回数(または複製された復号が実行される回数)を表わす指定された数に変数THRESHOLDを設定することを含む。このように、THRESHOLDは、パケット損失の観点からのロバスト性とオーディオ品質との間でバランスをとるために使用され得るチューニングパラメータである。したがって、THRESHOLDの値は、ユーザ、オーディオストリーム114のプロバイダ、クライアント装置104のプロバイダなどによって設定され得る。
【0023】
ブロック204において、クライアント装置104は、ネットワークインターフェース116を介してサーバ102からオーディオストリーム114のオーディオパケットの受信を開始し、オーディオパケットのスライディングサブセットをジッタバッファ118にバッファリングする(ここで、現在のバッファリングされたサブセットの最大サイズは、ジッタバッファ118のエントリ数に基づく)。オーディオパケットが受信され、バッファリングされると、ブロック206において、ストリーム監視モジュール132は、入力オーディオパケットを監視して、オーディオパケットが損失されたかどうかを判定する。損失されたパケットが検出されない場合、ブロック208において、ストリーム監視モジュール132は、変数REP_PACKET_COUNTをゼロに設定するか、さもなければ維持し、次の復号タイムスロットについて、パケットセレクタ134は、ジッタバッファ118からのその復号タイムスロットに対応するバッファリングされたオーディオパケットにアクセスし、ブロック210において、アクセスされたオーディオパケットを入力オーディオパケットとしてオーディオデコーダ120の入力136に提供する。
【0024】
例示すると、いくつかの実装形態では、各オーディオパケットには、サーバ102での符号化処理中の意図された再生シーケンスにおける、対応するオーディオパケットの位置を特定するシーケンス番号が割り当てられる。その結果、ストリーム監視モジュール132がジッタバッファ118からの次のオーディオパケットにアクセスするとき、ストリーム監視モジュール132は、アクセスされたオーディオパケットのシーケンス番号を予期されるシーケンス番号と比較する。これらの番号が一致する場合、ストリーム監視モジュール132は、対応する復号タイムスロットに対するオーディオパケットが適時であると判定する。逆に、アクセスされたオーディオパケットの実際のシーケンス番号が期待されるシーケンス番号と一致しない場合、ストリーム監視モジュール132は、対応する復号タイムスロットに対するオーディオパケットを損失として識別する。
【0025】
ブロック206に戻り、損失されたオーディオパケットが検出された場合、ブロック212において、ストリーム監視モジュール132は、変数REP_PACKET COUNTをTHRESHOLDと比較することによって、同じオーディオパケットに対する連続したパケット復号の複製の最大数が実行されたか否かを判定する。そうである場合(すなわち、REP_PACKET_COUNT=THRESHOLD)、損失されたパケットの中断されたシーケンスに対するさらなるパケット復号の反復は許可されず、したがって、ブロック214において、ストリーム監視モジュール132は、異常をトリガして、オーディオストリーム(および、もしあれば、対応するビデオストリーム)の再生を停止し、システム性能チェックを開始する。代替として、異常をトリガするのではなく、クライアント装置104は、無音挿入、補間分析などの異なるPLC技術の使用に切り替えることができる。しかしながら、連続したパケット復号の反復最大回数よりも少ない回数が実行された場合(すなわち、REP_PACKET_COUNT<THRESHOLD)、次いで、ブロック216において、ストリーム監視モジュール132は、パケットセレクタ134に、ジッタバッファ118から最新のタイムスロットについて以前に復号されたオーディオパケットにアクセスし、このアクセスされたオーディオパケットを、次の復号タイムスロットために、入力オーディオパケットとしてオーディオデコーダの入力136に提供するように指示する。また、ストリーム監視モジュール132は、REP_PACKET_COUNTをインクリメントして、このオーディオパケットのパケット復号複製が実行されたことを反映する。
【0026】
ブロック218において、オーディオデコーダ120は、ブロック206~216によって表されるプロセスを介して選択された入力オーディオパケット、すなわち、現在の復号タイムスロットに関連付けられたオーディオパケット(このパケットが損失されなかった場合)、または前のタイムスロットについて以前に復号されたオーディオパケット(このタイムスロットを対象とするオーディオパケットが損失された場合)のいずれかを復号する。オーディオデコーダ120は、入力オーディオパケットの符号化されたオーディオコンテンツから復号されたオーディオ信号122の対応するセグメントを生成する。上記で説明したように、オーディオデコーダ120によって典型的に採用されるオーディオ合成技術は、各生成されたセグメントの次のセグメントとのシームレスなスティッチングをもたらし、したがって、1つ以上のパケットが連続して損失された場合であっても実質的な不連続性のない復号されたオーディオ信号122を提供する。復号されたオーディオ信号122の対応するセグメントを生成するためのオーディオパケットの復号と同時に、ブロック220において、復号されたオーディオ信号122はさらに処理され(たとえば、他のオーディオ信号と混合することによって)、次いで、オーディオストリーム114によって表されるオーディオコンテンツの再生に影響を与えるために1つ以上のスピーカ124を駆動するために使用される1つ以上のアナログ信号に変換され得る。
【0027】
図3は、
図2の方法200によって表されるプリデコーダパケット反復PLC処理の例示的な動作を示すチャート300を示す。チャート300の7つの縦列は、クライアント装置104のオーディオデコーダの7つの復号タイムスロットを表し、タイムスロットA,B,C,D,E,F,Gとして識別され、タイムスロットAは最も早いタイムスロットであり、タイムスロットGは最も遅いタイムスロットである。行310は、対応するタイムスロットA~G毎のオーディオパケットを生成する際のサーバ102の動作を表し、行312は、対応するタイムスロット毎のサーバ102からオーディオパケットを受信する際のクライアント装置104の動作を表し、行314は、オーディオパケットを復号し、結果として得られる復号されたオーディオ信号セグメントの再生を提供する際のクライアント装置の動作を表す。
【0028】
行310によって図示されるように、サーバは、タイムスロットA,B,C,D,E,F,Gに対して、それぞれ、オーディオパケット301,302,303,304,305,306,307を生成し、送信する。行312および行314によって表されるように、クライアント装置側では、タイムスロットAについて、オーディオパケット301が(損失または遅れを伴わずに)受信され、バッファリングされ、復号され、復号されたオーディオ信号の結果として生じるセグメントが通常動作に従って再生される。同様に、タイムスロットBについて、オーディオパケット302が(損失または遅れを伴わずに)受信され、バッファリングされ、復号され、復号されたオーディオ信号の結果として生じるセグメントが通常動作に従って再生される。しかしながら、タイムスロットCについては、関連するオーディオパケット303は、ネットワーク106によって損失される。したがって、ストリーム監視モジュール132は、オーディオパケット303の損失された状態に気付き、したがって、前のタイムスロットBについて復号されたオーディオパケット、すなわちオーディオパケット302にアクセスし、このオーディオパケット302をオーディオデコーダ120に提供して、タイムスロットCについて復号されたオーディオ信号の対応するセグメントに再び復号するようにパケットセレクタ134に指示する。このように、オーディオパケット302のオーディオコンテンツは、結果として得られる復号されたオーディオ信号の2つの連続するセグメントを生成するために2回復号され、1回はその関連するタイムスロットBについて、次に、次のタイムスロットCについて損失されたオーディオパケット303を埋めるために再び、タイムスロットBおよびCに対応するセグメントに対するオーディオ信号を再構成するために復号される。
【0029】
その後、タイムスロットDについて、関連付けられたオーディオパケット304は、時間通りに受信され、したがって、オーディオデコーダ120による復号のために、復号されたオーディオ信号の対応するセグメントに提供される。続く2つのタイムスロットEおよびFについて、関連付けられたオーディオパケット305および306は、それらのそれぞれのタイムスロットにおいて復号のために時間通りに受信されず、代わりに、後続のタイムスロットGの間に遅れて受信される。したがって、タイムスロットEについて、クライアント装置104は、復号されたオーディオ信号の対応するセグメントを復号するためにオーディオパケット304のオーディオコンテンツを再利用し、オーディオパケット304は、タイムスロットFについての復号されたオーディオ信号の別のセグメントを生成するための3回目の復号のために再び選択される。そして、3つのオーディオパケット305,306,307のすべてがタイムスロットGの時間内に受信されているが、オーディオパケット305,306は、より早いタイムスロットに関連付けられているので、ジッタバッファ118から破棄され、オーディオデコーダ120は、オーディオパケット307を復号して、タイムスロットGに対応する復号されたオーディオ信号のセグメントを生成する。
【0030】
いくつかの実施形態では、上述した技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装され得る。ソフトウェアは、非一時的コンピュータ可読記憶媒体に記憶された、またはそうでなければ有形に具現化された1つ以上の実行可能命令のセットを備える。ソフトウェアは、1つ以上のプロセッサによって実行されると、上述の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令と特定のデータとを含むことができる。非一時的コンピュータ可読記憶媒体は、たとえば、磁気または光ディスク記憶装置、フラッシュメモリなどのソリッドステート記憶装置、キャッシュ、RAM(Random Access Memory)または他の不揮発性記憶装置などを含むことができる。非一時的コンピュータ可読記憶媒体上に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、または1つ以上のプロセッサによって解釈されるか、あるいは実行可能である他の命令フォーマットであってよい。
【0031】
コンピュータ可読記憶媒体は、命令および/またはデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体または記憶媒体の組合せを含んでもよい。そのような記憶媒体は、光学媒体(たとえば、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク)、磁気媒体(たとえば、フロッピーディスク、磁気テープ、または磁気ハードドライブ)、揮発性メモリ(たとえば、RAM(Random Access Memory)、またはキャッシュ)、不揮発性メモリ(たとえば、ROM(Read-Only Memory)、またはフラッシュメモリ)、またはMEMS(Microelectromechanical Systems)ベースの記憶媒体を含むことができるが、これらに限定されるものではない。コンピュータ可読記憶媒体は、コンピューティングシステム(たとえば、システムRAMまたはROM)に組み込まれてもよいし、コンピューティングシステム(たとえば、磁気ハードドライブ)に固定的に取り付けられてもよいし、コンピューティングシステム(たとえば、光ディスクまたはUSB(Universal Serial Bus)ベースのフラッシュメモリ)に取り外し可能に取り付けられてもよいし、または有線もしくは無線ネットワーク(たとえば、NAS(Network Accessible Storage)を介してコンピュータシステムに結合されてもよい。
【0032】
全般的な説明において上述された活動または要素のすべてが必要とされるわけではなく、特定の活動または装置の一部は必要とされないことがあり、説明されたものに加えて、1つ以上のさらなる活動が実行されたり、または要素が含まれたりすることがあることに留意されたい。さらに、活性が列挙されている順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載される本開示の範囲から逸脱することなく、様々な改良および変更を行うことができることを理解することができる。したがって、明細書および図面は、限定的な意味ではなく例示的な意味で見なされるべきであり、すべてのそのような改良は、本開示の範囲内に含まれることが意図される。
【0033】
利益、他の利点、および問題に対する解決策は、特定の実施形態に関して上述されている。しかしながら、利益、利点、問題に対する解決策、および任意の利益、利点、または解決策を生じさせ得るか、またはより顕著にさせ得る任意の特徴は、いずれかのまたはすべての請求項の重要な、必要な、または本質的な特徴として解釈されるべきではない。さらに、開示された主題は、本明細書の教示の利益を有する当業者に明白である、異なるが同等の様式で改良および実施され得るため、上記に開示された特定の実施形態は例示に過ぎない。以下の特許請求の範囲に記載されるものを除き、本明細書に示される構造または設計の詳細への限定は意図されない。したがって、上記で開示された特定の実施形態は、変更または改良され得ることが明らかであり、すべてのそのような変形は、開示された主題の範囲内であるとみなされる。したがって、本明細書で求められる保護は、以下の特許請求の範囲に記載されるとおりである。