(57)【要約】  遅延または損失した符号化オーディオ情報に関する技術およびツールを開示する。例えば、１つまたは複数の紛失フレームに対する隠蔽技術を１つまたは複数の因子に基づいて選択する。その因子には、１つまたは複数の紛失フレーム近くの１つまたは複数の利用可能フレームのそれぞれを分類することが含まれる。別の例として、隠蔽信号からの情報を用いて、後続フレームの復号化時に依存される置換情報を生成する。さらに別の例として、受信パケット遅延に対応するノードを有するデータ構造を用いて、所望のデコーダパケット遅延値を判定する。
2008542838.tif 000002
【特許請求の範囲】
【請求項１】
オーディオ信号のビットストリーム処理中に１つまたは複数の紛失フレームに遭遇した場合、
少なくとも部分的に１つまたは複数の因子に基づいて、複数の利用可能な信号依存隠蔽技術から隠蔽技術を選択すること、および
前記の選択した隠蔽技術を実施すること
を含めて、前記ビットストリームを処理すること、および
結果を出力すること
を含むことを特徴とするコンピュータ実行型の方法。
【請求項２】
前記１つまたは複数の因子は、前記オーディオ信号内の前記１つまたは複数の紛失フレームの前に利用可能なフレームを分類することを含み、前記分類は有声分類および無声分類を含む可能な分類集合の１つであることを特徴とする請求項１に記載の方法。
【請求項３】
前記の利用可能な先行フレームが有声に分類される場合、前記の選択した隠蔽技術は、ピッチ拡張技術を用いて隠蔽信号を生成することを含むこと、および
前記の利用可能な先行フレームが無声に分類される場合、前記の選択した隠蔽技術は、少なくとも部分的に前記の利用可能な先行フレームのエネルギーに基づいて前記隠蔽信号を生成することを含むこと
を特徴とする請求項２に記載の方法。
【請求項４】
前記１つまたは複数の因子は前記１つまたは複数の紛失フレームの数をさらに含み、前記の数は、紛失している連続フレームの数を示すことを特徴とする請求項２に記載の方法。
【請求項５】
前記の利用可能な先行フレームの分類と、前記オーディオ信号内に前記１つまたは複数の紛失フレームに続く利用可能フレームの分類とが両方とも有声であり、かつ前記１つまたは複数の紛失フレームの数が閾値未満である場合、前記の選択した隠蔽技術は双方向隠蔽を含むこと、および
前記の利用可能な先行フレームの分類が有声であり、かつ前記１つまたは複数の紛失フレームの数が閾値より多い場合、前記の選択した隠蔽技術は一方向隠蔽を含むこと
を特徴とする請求項４に記載の方法。
【請求項６】
前記の利用可能な先行フレームの分類が有声である場合、前記隠蔽信号が閾値期間よりも長いならば前記の選択した隠蔽技術は隠蔽信号に雑音を追加することを含むことを特徴とする請求項２に記載の方法。
【請求項７】
前記の利用可能な先行フレームの分類が無声である場合、前記の選択した隠蔽技術は
前記の利用可能な先行フレームの複数セグメントを特定すること
前記複数の先行フレームセグメントを用いて複数の隠蔽信号セグメントを生成すること、および
前記複数の先行フレームセグメントを前記複数の隠蔽セグメントと合併して隠蔽信号を生成すること
を含むことを特徴とする請求項２に記載の方法。
【請求項８】
前記の選択した隠蔽技術は
拡張信号を生成すること、および
前記拡張信号に雑音を追加して隠蔽信号を生成すること
を含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記の選択した隠蔽技術は、
前記拡張信号のエネルギーを少なくとも前記オーディオ信号の一部に沿って徐々に減少させること、および
前記雑音のエネルギーを少なくとも前記オーディオ信号の一部に沿って徐々に増加させること
をさらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記複数の利用可能な信号依存隠蔽技術は、有声内容に対する一方向隠蔽技術、無声内容に対する一方向隠蔽技術、双方向隠蔽技術、およびフェーディング隠蔽技術を含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記１つまたは複数の因子は、利用可能な先行フレームの分類、利用可能な後続フレームの分類、および前記オーディオ信号における前記の利用可能な先行フレームと前記の利用可能な後続フレームとの間の紛失フレーム数を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
オーディオ信号に対するビットストリームから紛失した１つまたは複数のフレームに遭遇するとき、ピッチジッタを導入することを含めて、１つまたは複数の前回フレームにおけるピッチサイクルに少なくとも部分的に基づいて隠蔽信号を生成すること、および
結果を出力すること
を含むことを特徴とするコンピュータ実行型の方法。
【請求項１３】
前記のピッチジッタの導入は、前記隠蔽信号に対するピッチにランダムまたは擬似ランダムな因子を追加することを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記ランダムまたは擬似ランダムな因子は正および負の値を含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
別個のランダムまたは擬似ランダムな因子が前記隠蔽信号の複数部分の各々に適用されることを特徴とする請求項１３に記載の方法。
【請求項１６】
前記導入は、前記１つまたは複数の前回フレームからの距離が増加するときに前記ピッチジッタを増加させることを含むことを特徴とする請求項１２に記載の方法。
【請求項１７】
オーディオ信号に対するビットストリームから紛失した１つまたは複数のフレームに遭遇すること
隠蔽信号を生成すること
復号化の際、前記１つまたは複数の紛失フレームからの情報に少なくとも部分的に依存する後続フレームに遭遇すること
前記隠蔽信号から置換情報を生成すること、および
前記１つまたは複数の紛失フレームからの情報の代わりに前記置換情報に依存して、前記後続フレームを復号化すること
を含むことを特徴とするコンピュータ実行型の方法。
【請求項１８】
前記後続フレームの適応コードブック指標が、前記後続フレームの励起信号の少なくとも一部に対する適応コードブック寄与の計算において前記１つまたは複数の紛失フレームのセグメントを使用すべきと指定することを特徴とする請求項１７に記載の方法。
【請求項１９】
前記置換情報を生成することは、前記隠蔽信号の少なくとも一部を少なくとも部分的に符号化することを含むことを特徴とする請求項１７に記載の方法。
【請求項２０】
前記置換情報を生成することは、残差信号を表す情報を前記隠蔽信号に基づいて構築することを含むことを特徴とする請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示したツールおよび技術はオーディオコーデックに関し、特に遅延または損失した符号化オーディオ情報の処理技術に関する。
【背景技術】
【０００２】
デジタル無線電話ネットワークが出現すると、インターネットおよびインターネット電話上でのオーディオストリーミング、音声のデジタル処理およびデジタル配信が一般的となった。技術者は様々な技術を用いて、品質を維持しつつ音声を効率的に処理する。これらの技術を理解するには、コンピュータにおいてオーディオ情報がどのように表現および処理されるかを理解することが役立つ。
【０００３】
I．コンピュータにおけるオーディオ情報の表現
コンピュータはオーディオ情報を、オーディオを表す一連の数字として処理する。単一の数字はオーディオサンプルを表現することができ、この数字は特定の時点での振幅値である。幾つかの因子がオーディオの品質に影響する。その因子には、サンプル深度とサンプリングレートがある。
【０００４】
サンプル深度（または精度）は、サンプルの表現に用いる数字の範囲を示す。それぞれのサンプルに対してより多くの可能な値を用いると、より微妙な振幅変動を表現できるので、より高品質の出力が得られる。８ビットのサンプルは２５６個の可能な値を有し、１６ビットのサンプルは６５，５３６個の可能な値を有する。
【０００５】
サンプリングレート（通常は１秒あたりのサンプル数で測定される）も品質に影響する。サンプリングレートがより高速になると、より多くの音声周波数を表現できるのでより高品質になる。一般的なサンプリングレートには８，０００、１１，０２５、２２，０５０、３２，０００、４４，１００、４８，０００および９６，０００サンプル／秒（Ｈｚ）がある。表１は異なる品質レベルを有する幾つかのオーディオフォーマットを生ビットレートのコストとともに示す。
【０００６】
【表１】
2008542838.tif 000003
【０００７】
表１が示すように、高品質なオーディオには高ビットレートのコストがかかる。高品質なオーディオ情報は多量のコンピュータ記憶容量および伝送容量を消費する。多くのコンピュータおよびコンピュータネットワークには、生のデジタルオーディオを処理するためのリソースが不足している。圧縮（符号化またはコード化とも呼ばれる）は、情報を低いビットレートの形態に変換することでオーディオ情報の記憶コストおよび伝送コストを減少させる。圧縮は可逆的（品質が劣化しない）または不可逆的（品質は劣化するが、後続の可逆的圧縮からのビットレート低減はより劇的である）であることができる。圧縮解除（復号化とも呼ばれる）は元の情報の再構築バージョンを圧縮形態から抽出する。コーデックはエンコーダ／デコーダシステムである。
【０００８】
II．音声エンコーダおよびデコーダ
オーディオ圧縮の１つの目標は、所定量のビットに対してオーディオ信号をデジタル的に表現し、最大の信号品質を提供することである。換言すると、本目標は、所定レベルの品質に対して最小ビット数でオーディオ信号を表現することである。伝送エラーに対する復元力、および符号化／伝送／復号化を起因とする全体的な遅延の抑制といった他の目標は、幾つかのシナリオで適用される。
【０００９】
様々な種類のオーディオ信号は様々な特性を有する。音楽は広範囲の周波数および振幅で特徴付けられ、２つ以上のチャンネルを含むことがよくある。他方で、音声はより狭い範囲の周波数および振幅で特徴付けられ、普通は単一のチャンネルで表される。ある特定のコーデックおよび処理技術は音楽および一般的なオーディオに適している。他のコーデックおよび処理技術は音声に適している。
【００１０】
ある種の従来の音声コーデックは線形予測を用いて圧縮を実現する。音声の符号化には幾つかの段階が含まれる。エンコーダは線形予測フィルタに対する係数を発見および量子化する。この係数を用いて、サンプル値を予測サンプル値の線形結合として予測する。残差信号（「励起」信号として表される）は、フィルタリングにより正確に予測されなかったオリジナル信号の部分を示す。幾つかの段階では、異種の音声は異なる特性を有するので、音声コーデックは有声セグメント（声帯振動で特徴付けられる）、無声セグメント、および無音セグメントに対して異なる圧縮技術を用いる。有声セグメントは典型的に繰り返しの多い有声パターンを示し、これは残差領域でも当てはまる。有声セグメントに対して、エンコーダは現在の残差信号を前回の残差サイクルと比較すること、および現在の残差信号を前回のサイクルに対する遅延またはラグの情報に関して符号化することで、更なる圧縮を実現する。エンコーダはオリジナル信号と（線形予測および遅延情報から）予測した符号化表現との間の他の不一致を、特別に設計したコードブックを用いて処理する。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述の音声コーデックの幾つかは多数のアプリケーションに対して良い全体性能を有するが、幾つかの欠点も有する。特に、音声コーデックを動的なネットワークリソースと併用して用いる際に幾つかの欠点が表面化する。上記シナリオでは、符号化された音声は一時的な帯域不足または他の問題のため失われる可能性がある。
【００１２】
Ａ．無効な隠蔽技術
パケットが損失、遅延、破損する場合またはそれら以外で配信中にパケットが使用不能となった場合あるいは他の場合のように、符号化された音声の１つまたは複数のパケットが失われるとき、デコーダは失われたパケットの隠蔽を何らかの方法で試みることがよくある。例えば、幾つかのデコーダは既に受信したパケットを単純に繰り返す。しかしながらパケットの損失が大量にある場合、本技術により復号化された音声出力の品質は迅速に劣化する可能性がある。
【００１３】
幾つかのコーデックは、波形類似性をベースとした重複加算技術（「ＷＳＯＬＡ」）のようなより洗練された隠蔽技術を使用する。本技術は、既存のピッチサイクルの加重平均から新規ピッチサイクルを生成することで、復号化されたオーディオ信号を拡張して紛失パケットを隠蔽する。本方法は、紛失パケットの隠蔽においては、単に前のパケットの繰り返しよりも効率的である可能性がある。しかしながら、本方法はすべての場合に対して理想的であるとは限らない。さらに、本方法を用いて非常に長く信号を拡張する場合は、本方法は（機械音または共鳴音のような）望ましくない音響効果を生み出す可能性がある。
【００１４】
さらに、多くのフレームは復号化に対して、（励起信号の履歴のような）前回フレームの復号化特性のメモリに依存する。（メモリの生成に使用されたであろうパケットが損失、遅延、等する場合のように）上記メモリが存在しない場合、損失フレームに続く受信フレームさえも信号品質が劣化することがある。
【００１５】
Ｂ．非効率的または無効な所望パケット遅延計算
符号化されたオーディオ情報のパケットがデコーダアプリケーションへ運ばれるとき、それぞれのパケットは例えばネットワーク変動により様々な遅延を受けることがある。この結果、パケットは送信時とは異なる順序で到着することにもなりうる。アプリケーションまたはデコーダは遅延の統計を計算して、所望のデコーダバッファ遅延を判定することがある。デコーダバッファ遅延は、十分な数のパケットが復号化時および使用時に間に合ってデコーダに到着できるように、十分な長さであることが期待される。もちろん、相反する懸念事項はシステム、特にリアルタイムシステム、テレフォニーのような対話型アプリケーションにおける全体的な遅延であろう。
【００１６】
最適な遅延を計算する１つのアプローチは、前回のパケットの最大遅延を見てその遅延値を指針として用いることである。パケットの遅延は典型的に、パケットの送信時にエンコーダ側で適用した送信タイムスタンプと、パケットの受信時にデコーダ側で適用した受信タイムスタンプとの差分を計算することで判定される。しかしながら、異常値が時々存在することがあり、その異常値がシステムを代表的でないパケットに適応させる。加えて、これらの異常な遅いパケットを受信するのに十分な長さの遅延を与えるよりも、小数のパケットを非常に遅く到着（および損失）させるほうが良い場合もある。
【００１７】
１つの代替手段は、移動平均、および移動分散計算のような公式に基づいて所望の遅延を計算することである。しかしながら、上記計算では多数のパラメータを最適化する必要があり、一方で計算と応答速度との間の正しいトレードオフを発見し、他方で履歴値の代表的な集団に基づいて計算することは困難である。
【００１８】
別のアプローチは、パケット遅延の分布を直接的に分析することである。例えば、パケット遅延のヒストグラムを保持することができる。遅延時間ヒストグラムにおけるビン幅は、最適な遅延の計算における所望の正確性を表す。ビンの大きさを減らすと正確性が増す。ヒストグラムの形は、根底にあるパケット遅延の分布を近似的に反映する。
【００１９】
新規パケットが到着すると、パケット遅延は対応するビンにマップされ、そのビンに入るパケット数が増加する。一部の古いパケットの年代を反映するため、すべての他のビンにおけるカウントは「エージング」と呼ばれるプロセスで縮小される。新たな所望の遅延を発見するため、デコーダは所望の損失率を設定する。典型的な値は１パーセントから５パーセントの範囲にある。ヒストグラムを分析して、所望の損失の達成に必要な所望の遅延値を判定する。本アプローチの１つの問題は、ビン幅、エージング因子のような幾つかのパラメータを調整する必要があるということである。加えて、すべての古いパケットがエージングプロセスにおいて同様に扱われ、エージングアプローチ自体が本技術の全体性能において過度に重要な役割を果たす。加えて、クロックドリフトの状態が発生する可能性がある。クロックドリフトは、異なるデバイスのクロックレートが同一でないときに発生する。送信タイムスタンプを適用するエンコーダ側デバイスと受信タイムスタンプを適用するデコーダ側デバイスとの間でクロックドリフトが発生する場合、全体的な遅延は正または負の傾向のいずれかを有する。これにより、ヒストグラムが固定であるべき時でも、ヒストグラムは遅延時系列に沿ってドリフトする可能性がある。
【課題を解決するための手段】
【００２０】
手短に述べると、オーディオコーデックに関する様々な技術およびツールに関して詳細な説明を行い、特に、任意の理由で紛失したオーディオ情報の処理技術に関するツールおよび技術を詳細に説明する。記載の実施態様は、１つまたは複数の説明した技術およびツールを実装する。その技術およびツールは以下のものを含むが、これらに限らない。
【００２１】
１態様においては、オーディオ信号のビットストリーム処理中に１つまたは複数の紛失フレームに遭遇すると、少なくとも部分的に１つまたは複数の因子に基づく複数の利用可能な信号依存隠蔽技術の中から隠蔽技術を選択する。選択した隠蔽技術を実施し、結果を出力する。
【００２２】
別の態様では、オーディオ信号のビットストリームから紛失した１つまたは複数のフレームに遭遇すると、ピッチジッタの導入を含めて、１つまたは複数の前回フレームにおけるピッチサイクルに少なくとも部分的に基づく隠蔽信号を生成する。
【００２３】
別の態様では、オーディオ信号のビットストリームから紛失した１つまたは複数のフレームに遭遇し、隠蔽信号を生成する。復号化するための１つまたは複数の紛失フレームからの情報に少なくとも部分的に依存する後続フレームに遭遇する。置換情報を隠蔽信号から生成し、１つまたは複数の紛失フレームから得た情報の代わりに置換情報に依存して後続フレームを復号化する。
【００２４】
別の態様では、オーディオ信号のビットストリームを処理する。ビットストリームから紛失した１つまたは複数のフレームに遭遇すると、利用可能なフレームに関連する１つまたは複数の値に少なくとも部分的に基づいた拡張信号寄与を含む隠蔽信号を生成すること、および隠蔽信号の閾値期間後に隠蔽信号に対する雑音寄与を追加することを含んだ処理を行う。ビットストリームから紛失した１つまたは複数のフレームに遭遇すると、拡張信号寄与エネルギーを少なくともオーディオ信号の一部に沿って徐々に減少させること、および雑音寄与エネルギーを少なくともオーディオ信号の一部に沿って徐々に増加させることをさらに含んだ処理を行うことができる。さらに、拡張信号寄与エネルギーを徐々に減少させることは、拡張信号が感知不能になるまでエネルギーを徐々に減少させることを含むことができる。さらに、拡張信号寄与エネルギーを徐々に減少させることは拡張信号が感知できなくなるまで徐々に減少させることを含むことができる。また、隠蔽信号が本質的に所定レベルの背景雑音から構成されるまで、拡張信号寄与エネルギーを徐々に減少させ、雑音寄与エネルギーを徐々に増加させることができる。
【００２５】
別の態様では、オーディオ信号のビットストリームを処理する。ビットストリームから紛失した１つまたは複数のフレームに遭遇すると、利用可能なフレームから複数の利用可能なセグメントを特定すること、およびその複数の利用可能なセグメントの各々に対して、利用可能なセグメントの１つまたは複数の特性を用いて導出セグメントを生成することを含んだ処理を行う。複数の利用可能なセグメントと複数の導出セグメントとを用いて合併信号を形成する。利用可能なフレームは無声フレームであることができ、１つまたは複数の特性は利用可能なセグメントのエネルギーを含むことができる。複数の利用可能なセグメントは第１および第２の利用可能なセグメントを含むことができ、複数の導出セグメントは第１および第２の導出セグメントを含むことができ、合併信号を形成することは、第１の利用可能なセグメントと第１の導出セグメントとを合併すること、第１の導出セグメントと第２の導出セグメントとを合併すること、および第２の導出セグメントと第２の利用可能なセグメントとを合併することを含むことができる。複数の利用可能なセグメントは２つ以上の利用可能なセグメントを含むことができ、複数の導出セグメントは２つ以上の導出セグメントを含むことができる。また、利用可能なフレームと１つまたは複数の紛失フレームとの代わりに合併セグメントを使用することを処理にさらに含めることができる。
【００２６】
別の態様では、データ構造を保持する。データ構造は、受信パケット集合内のパケットに対応する複数ノードの集合を含む。複数ノードの集合の各ノードは、対応する受信パケット集合のパケットの受信に対する遅延値、次に高い遅延値を有する複数ノード集合のノードを指す高値ポインタ、および次に低い遅延値を有する複数ノード集合のノードを指す低値ポインタを含む。所望のデコーダパケット遅延値は少なくとも部分的にデータ構造に基づいて判定する。新規パケットを受信するとき、データ構造を保持することは、受信パケット集合の最古パケットの遅延値を新規パケットの遅延値で置き換えること、複数ノード集合の１つまたは複数のノードの高値ポインタを更新すること、および複数ノード集合の１つまたは複数のノードの低値ポインタを更新することを含むことができる。さらに、所望のデコーダパケット遅延値を判定することは、最大遅延値を備える複数ノード集合のノードの位置を決定すること、連続的に低い遅延値を有する複数ノード集合のノードを所望数のノードが検索されるまで検索すること、および検索した最終ノードの遅延値をデコーダに対する所望のパケット遅延として使用することを含むことができる。また、望ましいノード数は所定の所望パケット損失率に対応することができる。
【００２７】
様々な技術およびツールを組み合わせて、または独立に使用することができる。
【００２８】
更なる特徴および利点は、添付図面を参照して進める以下の様々な実施態様の詳細説明から明らかになるであろう。
【発明を実施するための最良の形態】
【００２９】
記載の実施態様は、符号化および／または復号化におけるオーディオ情報の処理技術およびツールに関する。これらの技術により、リアルタイム音声コーデックのような音声コーデックから導出した音声の品質が改善する。上記改善は、様々な技術およびツールを別個に、または組み合わせて使用することで得ることができる。
【００３０】
上記技術およびツールは、オーディオ信号の特性に基づいた隠蔽技術の選択および／またはピッチ拡張隠蔽技術と併用したピッチジッタリングの使用を含むことができる。本技術は、隠蔽技術から生ずる信号の一部またはすべてを符号化すること、および符号化した情報を用いて将来のパケットの復号化用メモリを再生成することを含むこともできる。さらに、本技術は、パケット遅延の追跡および順序付けに適したデータ構造を用いて所望パケット遅延値を計算することを含むことができる。
【００３１】
様々な技術に対する動作を表現上の目的で特定の逐次的順序で記述するが、特定の順序を必要としない限り、動作順序の細部を変更することも本記述方法に含まれることは理解されるべきである。例えば、幾つかの場合では、逐次的に記述した動作を再配置または並列実行することができる。さらに簡潔さのため、フローチャートは、特定の技術を他の技術と併用しうる様々な方法を示さない場合もある。
【００３２】
特定のコンピューティング環境の特徴およびオーディオコーデックの特徴を後述するが、１つまたは複数のツールおよび技術を、様々な異種のコンピューティング環境および／または様々な異種のコーデックと併用してもよい。例えば、適応差分パルス符号変調コーデック、変換コーデックおよび／または他種のコーデックのようなＣＥＬＰ符号化方式を使用しないコーデックとともに１つまたは複数の堅牢なデコーダ技術を使用してもよい。別の例として、１つまたは複数の堅牢なデコーダ技術をシングルバンドコーデックまたはサブバンドコーデックと併用してもよい。別の例として、１つまたは複数の堅牢なデコーダ技術をマルチバンドコーデックのシングルバンド、および／またはマルチバンドコーデックのマルチバンドの寄与を含む同期または未符号化信号に適用することができる。
【００３３】
I．コンピューティング環境
図１は、記載した１つまたは複数の実施態様の実装に適したコンピューティング環境（１００）の一般的な例を示す。本発明を多様な汎用目的または特殊目的コンピューティング環境で実装することができるので、コンピューティング環境（１００）が本発明の使用範囲または機能性範囲に関する限定を示唆するとは意図していない。
【００３４】
図１を参照する。コンピューティング環境（１００）には少なくとも１つの処理ユニット（１１０）とメモリ（１２０）が含まれる。図１において、この最も基本的な構成（１３０）を点線で囲んである。処理ユニット（１１０）はコンピュータ実行可能命令を実行し、現実または仮想のプロセッサであることができる。マルチプロセッシングシステムにおいては、複数の処理ユニットがコンピュータ実行可能命令を実行して処理能力を向上させる。メモリ（１２０）は揮発性メモリ（例えばレジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例えばＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、等）、またはそれら２つの何らかの組合せであることができる。メモリ（１２０）は信号依存隠蔽、ピッチジッタリング、デコーダメモリ回復、および／またはリンクリストパケット遅延計算のような技術を実装するソフトウェア（１８０）を記憶する。
【００３５】
コンピューティング環境（１００）は更なる特徴を有することができる。図１において、コンピューティング環境（１００）にはストレージ（１４０）、１つまたは複数の入力装置（１５０）、１つまたは複数の出力装置（１６０）、および１つまたは複数の通信接続（１７０）が含まれる。バス、コントローラ、またはネットワークのような相互接続メカニズム（示さず）は、コンピューティング環境（１１０）の構成要素を相互接続する。典型的に、オペレーティングシステムソフトウェア（示さず）はコンピューティング環境（１００）内で実行する他のソフトウェアに動作環境を提供し、コンピューティング環境（１００）の構成要素の活動を調整する。
【００３６】
ストレージ（１４０）はリムーバブルまたは非リムーバブルであることができ、磁気ディスク、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、または情報の記憶に使用できかつコンピューティング環境（１００）内部でアクセス可能な任意の他の媒体を含むことができる。ストレージ（１４０）はソフトウェア（１８０）に対する命令を記憶する。
【００３７】
入力装置（複数）（１５０）はキーボード、マウス、ペン、またはトラックボールのようなタッチ入力装置、音声入力装置、スキャニング装置、ネットワークアダプタ、またはコンピューティング環境（１００）に対する入力を与える別の装置であることができる。オーディオに対しては、入力装置（複数）（１５０）はサウンドカード、マイクロフォンあるいはアナログまたはデジタルの形でオーディオ入力できる他の装置、またはコンピューティング環境（１００）にオーディオサンプルを与えるＣＤ／ＤＶＤリーダであることができる。出力装置（複数）（１６０）はディスプレイ、プリンタ、スピーカ、ＣＤ／ＤＶＤライタ、ネットワークアダプタ、またはコンピューティング環境（１００）からの出力を与える別の装置であることができる。
【００３８】
通信接続（複数）（１７０）は、別のコンピューティングエンティティに対する通信を通信媒体上で可能とする。通信媒体は、コンピュータ実行可能命令、圧縮音声情報、または他のデータを変調データ信号で運ぶ。変調データ信号は、１つまたは複数の特性集合を有するかまたは信号内の情報を符号化するように変化した信号である。限定ではなく例として、通信媒体には電気、光学、ＲＦ、赤外線、音響、または他のキャリアで実装した有線または無線技術が含まれる。
【００３９】
本発明をコンピュータ可読媒体の一般的なコンテキストで説明することができる。コンピュータ可読媒体は、コンピューティング環境内部でアクセス可能な任意の利用可能な媒体である。限定ではなく例として、コンピューティング環境（１００）に付随して、コンピュータ可読媒体はメモリ（１２０）、ストレージ（１４０）、通信媒体、および上記の任意の組合せを含む。
【００４０】
本発明を、プログラムモジュール内に含まれるもの、対象となる現実または仮想プロセッサ上のコンピューティング環境で実行されるもののようなコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般にプログラムモジュールには、特定のタスクを実施または特定の抽象データ型を実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造、等が含まれる。プログラムモジュールの機能性を様々な実施態様で望ましいように組み合わせるか、またはプログラムモジュール間で分割することができる。プログラムモジュールに対するコンピュータ実行可能命令をローカルまたは分散コンピューティング環境内部で実行することができる。
【００４１】
表現の都合上、詳細な説明では「判定する」、「生成する」、「調整する」、および「適用する」等の用語を使用して、コンピューティング環境におけるコンピュータの動作を記述する。これらの用語はコンピュータが実施する動作に対する高レベルな抽象であり、人間が実施する動作と混同すべきではない。これらの用語に対応する実際のコンピュータ動作は、実装に依存して変化する。
【００４２】
II．一般的ネットワーク環境およびリアルタイム音声コーデック
図２は一般的ネットワーク環境（２００）のブロック図であり、記載した１つまたは複数の実施態様をそのネットワーク環境とともに実装することができる。ネットワーク（２５０）は様々なエンコーダ側コンポーネントを様々なデコーダ側コンポーネントから分離する。
【００４３】
エンコーダ側およびデコーダ側コンポーネントの主要な機能は、それぞれ音声符号化および復号化である。エンコーダ側では、入力バッファ（２１０）が音声入力（２０２）を受入れ、記憶する。音声エンコーダ（２３０）は音声入力（２０２）を入力バッファ（２１０）から取得し、それを符号化する。
【００４４】
より詳細には、フレームスプリッタ（２１２）が音声入力（２０２）のサンプルをフレームに分割する。１実装において、フレームは一様に２０ｍｓの長さ、すなわち８ｋＨｚの入力に対して１６０個のサンプル、および１６ｋＨｚの入力に対して３２０個のサンプルである。他の実装においては、フレームは様々な持続時間を有し、不均一であるかまたは重複し、および／または入力（２０２）のサンプリングレートが異なる。フレームをスーパーフレーム／フレーム、フレーム／サブフレーム、または様々な段階の符号化および復号化に対する他の構成で編成することができる。
【００４５】
フレーム分類器（２１４）は、信号エネルギー、零交差率、長期予測利得、利得差分、および／またはサブフレームまたは全体フレームに対する他の基準のような１つまたは複数の基準に従ってフレームを分類する。その基準に従って、フレーム分類器（２１４）は様々なフレームを、無音、無声、有声、および遷移（例えば、無声から有声）のようなクラスに分類する。さらにフレームを、そのフレームに用いる冗長符号化の型があれば、その型に従って分類することができる。フレームクラスは、フレームを符号化するために計算されるパラメータに影響する。加えて、フレームクラスはパラメータの符号化に関する解像度および損失復元力に影響し、より重要なフレームクラスおよびパラメータに対して更なる解像度および損失復元力を与えることができる。例えば、無音フレームは典型的に非常に低速で符号化され、損失時に隠蔽によって非常に容易に回復するので、損失に対する保護を必要としなくともよい。無声フレームは典型的に若干高速で符号化され、損失時に隠蔽によって十分容易に回復するので、損失に対して著しくは保護されない。有声および遷移フレームは、フレームの複雑性と遷移の存在とにより、通常はより多数のビットで符号化される。有声および遷移フレームは損失時に回復困難でもあり、したがって損失に対して著しく保護される。または、フレーム分類器（２１４）はその他および／または追加のフレームクラスを使用する。
【００４６】
図２において、フレーム符号化コンポーネント（２３２）によりそれぞれのフレームを符号化する。上記フレームの符号化は図３を参照して以下でより詳細に説明する。符号化された結果の音声を、マルチプレクサ（「ＭＵＸ」）（２３６）を通して１つまたは複数のネットワーク層（２４０）に対するソフトウェアに与える。ネットワーク層（複数）（２４０）は符号化された音声を処理してネットワーク（２５０）上で送信する。例えば、ネットワーク層のソフトウェアは、符号化された音声情報のフレームをＲＴＰプロトコルに従うパケットにパッケージ化する。このパケットを、ＵＤＰ、ＩＰ、および様々な物理層プロトコルを用いてインターネット上で中継する。または、その他および／または追加のソフトウェア層またはネットワークプロトコル層を使用する。
【００４７】
ネットワーク（２５０）はインターネットのような広域の、パケット交換ネットワークである。または、ネットワーク（２５０）はローカルエリアネットワークまたは他種のネットワークである。
【００４８】
デコーダ側では、１つまたは複数のネットワーク層（２６０）に対するソフトウェアが送信データを受信し、処理する。デコーダ側のネットワーク層（複数）（２６０）におけるネットワーク、トランスポート、および高次層プロトコルおよびソフトウェアは通常、エンコーダ側のネットワーク層（複数）（２４０）に対応する。ネットワーク層（複数）は符号化された音声情報を、デマルチプレクサ（「ＤＥＭＵＸ」）（２７６）を通して音声デコーダ（２７０）に与える。
【００４９】
デコーダ（２７０）は、復号化モジュール（２７２）に示すようにそれぞれのフレームを復号化する。復号化された音声出力（２９２）を１つまたは複数のポストフィルタ（２８４）に通過させ、結果のフィルタされた音声出力（２９４）の品質を向上させることもできる。
【００５０】
図５を参照して一般的リアルタイム音声フレームデコーダの１つを後述するが、他の音声デコーダを代わりに使用してもよい。さらに、説明したツールおよび技術の一部またはすべてを、音楽エンコーダおよびデコーダ、または汎用目的オーディオエンコーダおよびデコーダのような他種のオーディオエンコーダおよびデコーダとともに使用してもよい。
【００５１】
これらの主要な符号化および復号化機能とは別に、コンポーネントは（図２の点線で示す）情報を共有して、符号化された音声のレート、品質、および／または損失復元力を制御することもできる。レートコントローラ（２２０）は、入力バッファ（２１０）における現在の入力の複雑度、エンコーダ（２３０）内または他所での出力バッファのバッファ充填度、所望の出力レート、現在のネットワーク帯域幅、ネットワーク輻輳／雑音条件および／またはデコーダ損失率などの様々な因子を考慮する。デコーダ（２７０）はデコーダ損失率情報をレートコントローラ（２２０）にフィードバックする。ネットワーク層（複数）（２４０、２６０）は現在のネットワーク帯域幅および輻輳／雑音条件に関する情報を収集または推定する。この情報をレートコントローラ（２２０）にフィードバックする。または、レートコントローラ（２２０）はその他および／または追加の因子を考慮する。
【００５２】
レートコントローラ（２２０）は音声エンコーダ（２３０）に命令して音声の符号化に関わるレート、品質、および／または損失復元力を変化させる。エンコーダ（２３０）は、パラメータに対する量子化因子を調整することまたはパラメータを表現するエントロピー符号の解像度を変更することにより、速度および品質を変更することができる。さらに、エンコーダは冗長符号化のレートまたは型を調整することで損失復元力を変更することができる。したがって、エンコーダ（２３０）はネットワーク条件によって、主要な符号化機能と損失復元力機能の間でビット割当てを変更することができる。または、エンコーダが固定レートで動作する場合のように、レートを何らかの他の方法で制御する。
【００５３】
図３は一般的音声フレームエンコーダ（３００）のブロック図であり、記載した１つまたは複数の実施態様をその一般的音声フレームエンコーダとともに実装することができる。フレームエンコーダ（３００）は一般に、図２のフレーム符号化コンポーネント（２３２）に対応する。フレームエンコーダ（３００）はフレームスプリッタからフレーム入力（３０２）を受け取り、符号化されたフレーム出力（３９２）を生成する。
【００５４】
ＬＰ分析コンポーネント（３３０）は線形予測係数（３３２）を計算する。１実装において、ＬＰフィルタは８ｋＨｚの入力に対して１０個の係数を使用し、１６ｋＨｚの入力に対して１６個の係数を使用し、ＬＰ分析コンポーネント（３３０）はフレーム当たり１つの線形予測係数の集合を計算する。または、ＬＰ分析コンポーネント（３３０）は、２つのウィンドウの各々に対して１つの係数集合を異なる位置に集中させるようにフレーム当たり２つの係数集合を計算し、あるいは１フレームあたり異なる数の係数を計算する。
【００５５】
ＬＰＣ処理コンポーネント（３３５）は線形予測係数（３３２）を受信し、処理する。典型的に、より効率的に量子化および符号化するため、ＬＰＣ処理コンポーネント（３３５）はＬＰＣ値を様々な表現に変換する。例えば、ＬＰＣ処理コンポーネント（３３５）はＬＰＣ値を線スペクトル対（ＬＳＰ）表現に変換し、次いでＬＳＰ値を（例えばベクトル量子化により）量子化して符号化する。ＬＳＰ値を内部符号化するか、または他のＬＳＰ値から予測することができる。様々な表現、量子化技術、および符号化技術がＬＰＣ値に対して可能である。パケット化および送信の目的で、ＬＰＣ値を（任意の量子化パラメータおよび再構築に必要な他の情報とともに）符号化フレーム出力（３９２）の一部として何らかの形で与える。エンコーダ（３００）で引き続き使用するため、ＬＰＣ処理コンポーネント（３３５）はＬＰＣ値を再構築する。ＬＰＣ処理コンポーネント（３３５）は（ＬＰＣ表現または別の表現において等価なように）ＬＰＣ値に対する補間を実施し、様々なＬＰＣ係数集合の間、またはフレームの様々なサブフレームに用いるＬＰＣ係数の間での遷移を滑らかにすることができる。
【００５６】
合成（または「短期予測」）フィルタ（３４０）は再構築ＬＰＣ値（３３８）を受け取り、それらをフィルタに取り込む。合成フィルタ（３４０）は励起信号を受信し、オリジナル信号を近似する。所与のフレームに対して、合成フィルタ（３４０）は多数の再構築サンプル（例えば、１０タップのフィルタに対して１０個）を前回のフレームからバッファして予測を開始することができる。
【００５７】
知覚的重み付けコンポーネント（３５０、３５５）は知覚的重み付けをオリジナル信号と合成フィルタ（３４０）のモデル出力とに適用し、音声信号のフォルマント構造を選択的に非強調化して量子化誤りに対する聴覚系の感受性を低くする。知覚的重み付けコンポーネント（３５０、３５５）はマスキングのような心理音響的現象を利用する。１実装において、知覚的重み付けコンポーネント（３５０、３５５）は、ＬＰ分析コンポーネント（３３０）から受信した元のＬＰＣ値（３３２）に基づいて重みを適用する。または、知覚的重み付けコンポーネント（３５０、３５５）はその他および／または追加の重みを適用する。
【００５８】
知覚的重み付けコンポーネント（３５０、３５５）に続いて、エンコーダ（３００）は知覚的に重み付けしたオリジナル信号と知覚的に重み付けした合成フィルタ（３４０）の出力との差分を計算し、差分信号（３３４）を生成する。または、エンコーダ（３００）は異なる技術を用いて音声パラメータを計算する。
【００５９】
励起パラメータ化コンポーネント（３６０）は適応コードブック指標、固定コードブック指標および利得コードブック指標の最良の組合せを、知覚的に重み付けしたオリジナル信号と合成信号との差分を（重み付け平均二乗誤差または他の基準の意味で）最小化する観点から発見することを試みる。多数のパラメータをサブフレーム単位に計算するが、より一般的にパラメータはスーパーフレーム、フレーム、またはサブフレーム単位であってもよい。表２は、１実装において様々なフレームクラスに対して利用可能なパラメータタイプを示す。
【００６０】
【表２】
2008542838.tif 000004
【００６１】
図３において、励起パラメータ化コンポーネント（３６０）はフレームをサブフレームに分割し、必要に応じてそれぞれのサブフレームに対してコードブック指標および利得を計算する。例えば、使用すべきコードブック段階の数と種類、およびコードブック指標の解像度を符号化モードにより最初に判定することができる。ここで、モードは上述のレート制御コンポーネントにより指定する。特定のモードは、例えばコードブック指標の解像度のような、コードブック段階の数および種類以外の符号化および復号化パラメータを指定することもできる。それぞれのコードブック段階のパラメータは、パラメータを最適化して対象信号と合成信号へのコードブック段階の寄与との間の誤差を最小にすることで判定される（本明細書で使用する場合、用語「最適化する」は、パラメータ空間上で全探索を実施するのではなく、歪み低減、パラメータ探索時間、パラメータ探索計算量、パラメータのビットレート、等のような適用可能な制約下で適切な解を発見することを意味する。同様に、用語「最小化する」は適用可能な制約下で適切な解を発見することの観点で理解すべきである）。例えば、修正平均二乗誤差技術を用いて最適化を行うことができる。各段階に対する対象信号は、合成信号が存在すれば、合成信号への前回のコードブック段階の寄与和と残差信号との差分である。または、他の最適化技術を使用してもよい。
【００６２】
図４は、１実装に従ってコードブックパラメータを判定する技術を示す。励起パラメータ化コンポーネント（３６０）は前述の技術を実施し、潜在的にレートコントローラのような他のコンポーネントとともに実施することが可能である。または、エンコーダ内の別コンポーネントが前述の技術を実施する。
【００６３】
図４を参照する。有声または遷移フレーム内の各サブフレームに対して、励起パラメータ化コンポーネント（３６０）は、適応コードブックを現在のサブフレームに対して使用可能か否かを判定する（４１０）（例えば、レートコントローラは特定のフレームに対して適応コードブックを使用できないと決定することができる）。適応コードブックを使用できない場合、適応コードブックスイッチは使用可能な適応コードブックがないことを示す（４３５）。例えばこれを、フレーム内で使用される適応コードブックがないことを示す１ビットのフラグをフレームレベルで設定すること、フレームレベルで特定の符号化モードを指定すること、またはサブフレーム内で使用される適応コードブックがないことを示す１ビットのフラグを各サブフレームに対して設定することにより行うことができる。
【００６４】
なお図４を参照する。適応コードブックを使用できる場合、コンポーネント（３６０）は適応コードブックパラメータを判定する。これらパラメータには、励起信号履歴の所望セグメントを示す指標、またはピッチ値、およびその所望セグメントに適用する利得が含まれる。図３および４において、コンポーネント（３６０）は閉ループピッチ探索（４２０）を実施する。本探索は、図３の任意の開ループピッチ探索コンポーネント（３２５）により判定されるピッチで始まる。開ループピッチ探索コンポーネント（３２５）は、重み付けコンポーネント（３５０）により生成した重み付け信号を分析してそのピッチを推定する。この推定したピッチから始めて、閉ループピッチ探索（４２０）はピッチ値を最適化して、対象信号と励起信号履歴の指定セグメントから生成した重み付け合成信号との間の誤差を減少させる。適応コードブック利得値も最適化される（４２５）。適応コードブック利得値は乗算器に指示してピッチ予測値（励起信号履歴の指定セグメントからの値）を適用させ、その値の大きさを調整させる。ピッチ予測値で乗じた利得は、現在のフレームまたはサブフレームに対する励起信号への適応コードブック寄与である。利得最適化（４２５）および閉ループピッチ探索（４２０）はそれぞれ、利得値および指標値を生成する。それらの利得値および指標値は、対象信号と適応コードブック寄与からの重み付け合成信号との間の誤差を最小化する。
【００６５】
適応コードブックを使用可能であるとコンポーネント（３６０）が判定する（４３０）場合、適応コードブックパラメータをビットストリーム内で信号送信する（４４０）。そうでない場合、上述のように例えば１ビットのサブフレームレベルのフラグを設定することで、サブフレームに対して使用される適応コードブックがないことを示す（４３５）。本判定（４３０）は、特定のサブフレームに対する適応コードブック寄与が、適応コードブックパラメータの信号送信に必要なビット数に相当する程度の大きさか否かの判定を含むことができる。または、その判定に対して何らかの他の根拠を用いることができる。さらに、図４は判定後の信号送信を示すが、代わりに、前述した技術がフレームまたはスーパーフレームに対して完了するまで信号をまとめることができる。
【００６６】
励起パラメータ化コンポーネント（３６０）は、パルスコードブックを使用するか否かも判定する（４５０）。パルスコードブックの使用または不使用を現在のフレームに対する全体的な符号化モードの一部として指示するか、あるいは他の方法で指示または判定することができる。パルスコードブックは、励起信号に寄与されうる１つまたは複数のパルスを指定する、ある種の固定コードブックである。パルスコードブックパラメータには指標と符号の対が含まれる（利得は正または負であることができる）。それぞれの対は励起信号内に含まれうるパルスを示し、指標はパルスの位置を示し、符号はパルスの極性を示す。パルスコードブックに含まれ、かつ励起信号への寄与に用いられるパルスの数は、符号化モードに依存して変化することができる。さらに、パルスの数は、適応コードブックが使用されているか否かに依存することができる。
【００６７】
パルスコードブックが使用される場合、パルスコードブックパラメータを最適化して（４５５）、指定パルスの寄与と対象信号との間の誤差を最小化する。適応コードブックが使用されない場合、対象信号は重み付けオリジナル信号である。適応コードブックを使用する場合、対象信号は、重み付けオリジナル信号と重み付けした合成信号への適応コードブックの寄与との差分である。ある時点（示さず）で、パルスコードブックパラメータをビットストリーム内で信号送信する。
【００６８】
励起パラメータ化コンポーネント（３６０）は任意のランダムコードブック段階を使用すべきか否かも判定する（４６５）。（もしあれば）ランダムコードブック段階の数を、現在のフレームに対する全体的な符号化モードの一部として指示するか、あるいは他の方法で指示または判定することができる。ランダムコードブックはある種の固定コードブックであり、この固定コードブックは、自身が符号化する値に対して所定の信号モデルを用いる。コードブックパラメータは、信号モデルの指定セグメントに対する開始点と、正または負でありうる符号を含むことができる。指定セグメントの長さまたは範囲は典型的に固定され、したがって典型的には信号送信されないが、代わりに指定セグメントの長さまたは限界が信号送信される。利得に指定セグメント内の値を乗じて、励起信号に対するランダムコードブックの寄与を生成する。
【００６９】
少なくとも１つのランダムコードブック段階を使用する場合、そのコードブック段階に対するコードブック段階パラメータを最適化して（４７０）、ランダムコードブック段階の寄与と対象信号との間の誤差を最小化する。対象信号は、（もしあれば）適応コードブック、（もしあれば）パルスコードブック、および（もしあれば）予め判定されたランダムコードブック段階の重み付け合成信号に対する寄与和と重み付けオリジナル信号との差分である。ある時点（示さず）で、ランダムコードブックパラメータをビットストリーム内で信号送信する。
【００７０】
コンポーネント（３６０）は、これ以上のランダムコードブック段階が使用可能かを判定する（４８０）。そうならば、次のランダムコードブック段階のパラメータを上述のように最適化し（４７０）、信号送信する。これはランダムコードブック段階に対するすべてのパラメータが判定されるまで継続する。すべてのランダムコードブック段階は同一の信号モデルを使用することができるが、それらはモデルとは異なるセグメントを指定し、異なる利得値を有することが多い。または、異なる信号モデルを異なるランダムコードブック段階に使用することができる。
【００７１】
レートコントローラおよび／または他のコンポーネントにより判定して、各励起利得を独立に量子化するか、または２つ以上の利得を一度に量子化することができる。
【００７２】
様々なコードブックパラメータの最適化に対して本明細書では特定の順序を説明したが、他の順序および最適化技術を使用してもよい。例えば、すべてのランダムコードブックを同時に最適化することができる。したがって、図４は異なるコードブックパラメータの逐次計算を示すが、代わりに、（例えば、何らかの非線形最適化技術に従ってパラメータを一緒に変化させ、結果を評価することで）２つ以上の異なるコードブックパラメータを一緒に最適化することができる。さらに、他のコードブック構成または他の励起信号パラメータを使用することができる。
【００７３】
本実装における励起信号は、適応コードブック、パルスコードブック、およびランダムコードブック段階（複数）の任意の寄与の和である。または、コンポーネント（３６０）は励起信号に対するその他および／または追加のパラメータを計算することができる。
【００７４】
図３を参照する。励起信号に対するコードパラメータを（図３内の点線で囲んだ）ローカルデコーダ（３６５）およびフレーム出力（３９２）に信号送信するか、または与える。したがって、符号化フレーム出力（３９２）には上述のＬＰＣ処理コンポーネント（３３５）からの出力と、励起パラメータ化コンポーネント（３６０）からの出力が含まれる。
【００７５】
出力（３９２）のビットレートはコードブックが使用するパラメータに部分的に依存し、エンコーダ（３００）は組み込みの符号を用いて、または他の技術を用いてコードブック指標の異集合間で切り替えることにより、ビットレートおよび／または品質を制御することができる。コードブックの種類と段階の異なる組合せにより、異なるフレームおよび／またはサブフレームに対して異なる符号化モードを生成することができる。例えば、無声フレームはランダムコードブック段階を１つだけ使用することができる。適応コードブックおよびパルスコードブックを低速の有声フレームに使用することができる。高速のフレームを、適応コードブック、パルスコードブック、および１つまたは複数のランダムコードブック段階を用いて符号化することができる。レート制御モジュールは各フレームに対するモードを判定すること、またはそれらモードに影響を及ぼすことができる。
【００７６】
図３をなお参照する。励起パラメータ化コンポーネント（３６０）の出力をコードブック再構築コンポーネント（３７０、３７２、３７４、３７６）と、パラメータ化コンポーネント（３６０）が用いるコードブックに対応する利得アプリケーションコンポーネント（３８０、３８２、３８４、３８６）とにより受信される。コードブック段階（３７０、３７２、３７４、３７６）および対応する利得アプリケーションコンポーネント（３８０、３８２、３８４、３８６）はコードブックの寄与を再構築する。これら寄与を足し込んで励起信号（３９０）を生成する。励起信号（３９０）を合成フィルタ（３４０）により受信し、そこで「予測」サンプルとともに使用する。その「予測」サンプルから後続の線形予測が生ずる。適応コードブック再構築コンポーネント（３７０）が励起信号の遅延部分を励起履歴信号として使用して後続の適応コードブックパラメータ（例えば、ピッチ寄与）を再構築し、パラメータ化コンポーネント（３６０）が励起信号の遅延部分を励起履歴信号として使用して後続の適応コードブックパラメータ（例えば、ピッチ指標およびピッチ利得値）を計算する。
【００７７】
戻って図２を参照する。符号化フレーム出力を他のパラメータとともにＭＵＸ（２３６）により受け取る。上記の他のパラメータは他の情報のうち、フレーム分類器（２１４）からのフレームクラス情報（２２２）とフレーム符号化モードを含むことができる。ＭＵＸ（２３６）は他のソフトウェアに渡すアプリケーション層パケットを構築するか、またはＭＵＸ（２３６）はＲＴＰのようなプロトコルに従うパケットのペイロードにデータを置く。ＭＵＸはパラメータをバッファして、後のパケットにおける前方誤り訂正用のパラメータを選択的に再現可能とすることができる。１実装において、ＭＵＸ（２３６）は、１つのフレームに対する主要な符号化音声情報を、１つまたは複数の前回フレームのすべてまたは一部に対する前方誤り訂正情報とともに単一のパケットに詰め込む。
【００７８】
ＭＵＸ（２３６）は、レート制御の目的で、現在のバッファ充填度のようなフィードバックを与える。より一般的には、エンコーダ（２３０）の様々なコンポーネント（フレーム分類器（２１４）およびＭＵＸ（２３６）を含む）は、図２に示すもののようなレートコントローラ（２２０）に情報を与えることができる。
【００７９】
図２のビットストリームＤＥＭＵＸ（２７６）は符号化音声情報を入力として受け取って解析し、パラメータを特定および処理する。パラメータはフレームクラス、ＬＰＣ値の何らかの表現、およびコードブックパラメータを含むことができる。フレームクラスは、所与のフレームに対して存在するその他のパラメータを示すことができる。より一般的には、ＤＥＭＵＸ（２７６）はエンコーダ（２３０）が用いるプロトコルを使用し、エンコーダ（２３０）がパケットに詰め込むパラメータを抽出する。動的パケット交換ネットワーク上で受信したパケットに対し、ＤＥＭＵＸ（２７６）は、所定期間でのパケットレートの短期変動を平滑化するジッタバッファを含む。場合によっては、デコーダ（２７０）はバッファ遅延を規制し、バッファからパケットを読み出す時点を管理して、遅延、品質制御、紛失フレームの隠蔽、等を復号化に統合する。他の場合、アプリケーション層コンポーネントはジッタバッファを管理し、ジッタバッファは可変レートで充填され、デコーダ（２７０）により一定または相対的に一定のレートで消耗される。
【００８０】
ＤＥＭＵＸ（２７６）は所与のセグメントに対して複数のバージョンのパラメータを受信することができ、そのバージョンには主要な符号化バージョンと１つまたは複数の２次誤り訂正バージョンとが含まれる。誤り訂正が失敗すると、デコーダ（２７０）は後述の隠蔽技術のような隠蔽技術を使用する。
【００８１】
図５はリアルタイム音声フレームデコーダ（５００）のブロック図であり、記載した１つまたは複数の実施態様をそのリアルタイム音声フレームデコーダとともに実装することができる。フレームデコーダ（５００）は一般に図２のフレームデコーディングコンポーネント（２７２）に対応する。
【００８２】
フレームデコーダ（５００）は符号化音声情報（５９２）を入力として受け取り、復号化後の再構築出力（５０２）を生成する。デコーダ（５００）のコンポーネントはエンコーダ（３００）内の対応するコンポーネントを有するが、全体的にデコーダ（５００）には知覚的重み付け、励起処理ループおよびレート制御に対するコンポーネントがないので、デコーダ（５００）はより単純である。
【００８３】
ＬＰＣ処理コンポーネント（５３５）は、ＬＰＣ値を表す情報（および任意の量子化パラメータおよび再構築に必要な他の情報）をフレームエンコーダ（３００）が与える形で受信する。ＬＰＣ処理コンポーネント（５３５）は、以前にＬＰＣ値に適用した変換、量子化、符号化、等の逆を用いてＬＰＣ値（５３８）を再構築する。ＬＰＣ処理コンポーネント（５３５）は（ＬＰＣ表現または、ＬＳＰのような別の表現の）ＬＰＣ値に対する補間も実施し、ＬＰＣ係数の異集合間で遷移を滑らかにすることもできる。
【００８４】
コードブック段階（５７０、５７２、５７４、５７６）および利得アプリケーションコンポーネント（５８０、５８２、５８４、５８６）は励起信号に用いる任意の対応コードブック段階のパラメータを復号化し、用いる各コードブック段階の寄与を計算する。より一般的には、コードブック段階（５７０、５７２、５７４、５７６）および利得コンポーネント（５８０、５８２、５８４、５８６）の構成および動作は、エンコーダ（３００）内のコードブック段階（３７０、３７２、３７４、３７６）および利得コンポーネント（３８０、３８２、３８４、３８６）の構成および動作に対応する。用いたコードブック段階の寄与を足し合わせ、結果の励起信号（５９０）を合成フィルタ（５４０）に提供する。適応コードブック（５７０）が励起信号（５９０）の遅延値を励起履歴としても使用して、励起信号の後続部分に対する適応コードブックの寄与を計算する。
【００８５】
合成フィルタ（５４０）は再構築ＬＰＣ値（５３８）を受け取り、それらをフィルタに取り込む。合成フィルタ（５４０）は以前に再構築されたサンプルを処理するために記憶する。励起信号（５９０）は、合成フィルタを通過してオリジナル音声信号の近似を形成する。
【００８６】
図２−５に示した関係は情報の一般的な流れを示す。他の関係は、簡潔さのため示していない。所望の実装および圧縮の種類に依存して、コンポーネントの追加、省略、複数コンポーネントへの分割、他のコンポーネントとの結合、および／または類似コンポーネントでの置換を行うことができる。例えば、図２に示す環境（２００）において、レートコントローラ（２２０）を音声エンコーダ（２３０）と結合することができる。潜在的に追加したコンポーネントには、音声エンコーダ（またはデコーダ）および他のエンコーダ（またはデコーダ）を管理し、かつネットワークおよびデコーダ状態の情報を収集し、適応誤り訂正機能を実施するマルチメディア符号化（または再生）アプリケーションが含まれる。代替実施態様では、本明細書で説明した技術を用いるコンポーネントの異なる組合せおよび構成により音声情報を処理することができる。
【００８７】
III．堅牢な復号化技術およびツール
様々な堅牢な復号化技術およびツールにより、リアルタイム音声コーデックのような音声コーデックから導出された音声の品質が向上する。様々な堅牢な復号化技術およびツールを独立に、または組み合わせて使用することができる。
【００８８】
特定のコンピューティング環境の特徴およびオーディオコーデックの特徴を上述したが、１つまたは複数のツールおよび技術を様々な種類のコンピューティング環境および／または様々な種類のコーデックと併用してもよい。例えば、１つまたは複数の堅牢なデコーダ技術を、適応差分パルス符号変調コーデック、変換コーデックおよび／または他種のコーデックのようなＣＥＬＰ符号化方式を用いないコーデックと併用してもよい。別の例として、１つまたは複数の堅牢なデコーダ技術をシングルバンドコーデックまたはサブバンドコーデックと併用してもよい。別の例として、１つまたは複数の堅牢なデコーダ技術を、マルチバンドコーデックのシングルバンドに適用すること、および／またはマルチバンドコーデックのマルチバンドの寄与を含む合成または未符号化信号に適用することができる。
【００８９】
Ａ．デコーダ側ＶｏＩＰ
ボイスオーバインターネットプロトコル（「ＶｏＩＰ」）アプリケーションは、説明したコーデックに対して使用可能なものの１つである。ＶｏＩＰアプリケーションは典型的にいわゆる「プッシュモード」、またはいわゆる「プルモード」のいずれかで動作する。説明した技術をいずれかのモード、または何らかの他のモードで使用することができる。しかしながら、現在のＶｏＩＰアプリケーションの多くはプルモード復号化を使用する。したがって、図６は、幾つかのデコーダ側プルモード動作のうち１つの可能な配置を一般的な形で示す。一般に、ＶｏＩＰアプリケーション（６１０）はネットワーク源（６００）から受信したすべてのパケットを即座にデコーダ（６２０）に渡し、デコーダは所望のバッファリング遅延を決定する。図６において、デコーダ（６２０）は、信号の紛失部分の隠蔽作業をレシーバアプリケーション（６１０）に委譲するのではなく、後述の隠蔽技術を実施する。または、アプリケーション（６１０）または何らかの他のコンポーネントが後述の隠蔽技術を実施する。
【００９０】
プルモードでは、オーディオ再生コンポーネントであるレンダラ（６３０）が追加の復号化オーディオ情報の再生を必要とするとき、レンダラ（６３０）はその情報を要求する（６５０）。ＶｏＩＰアプリケーション（６１０）は、（要求した再生期間以外でも）ネットワーク源（６００）から利用可能な情報を取り出し（６５５）、情報をデコーダ（６２０）にプッシュする（６６０）。デコーダ（６２０）は情報の一部（例えば、要求再生期間に対するサンプル）を復号化し、復号化情報をＶｏＩＰアプリケーション（６１０）に戻す（６６５）。ＶｏＩＰアプリケーション（６１０）はその情報をレンダラ（６３０）に与える（６７０）。
【００９１】
１つまたは複数のフレームが紛失している場合、デコーダ（６２０）は１つまたは複数の隠蔽技術を実施し、結果の隠蔽情報を（例えば、オーディオサンプルとして）紛失フレーム（複数）に対する実際のサンプルの代わりとしてＶｏＩＰアプリケーション（６１０）に返す。必要時にレンダラ（６３０）がサンプルを要求するので、タイミングはレンダラ（６３０）が用いるローカルクロックにのみ依存する。したがって本設計は、少々異なるクロックレートを有する複数クロックに依存しうるプッシュモードデコーダのような、他の設計で発生しうるクロックドリフト問題を自動的に対処することができる。
【００９２】
図７に示すように、ＶｏＩＰアプリケーションによってネットワーク源（７１０）から受信したパケットを即座にデコーダに配信する。デコーダはパケットをそれらの（オーディオ信号における）逐次的順序に従ってジッタバッファ（７２０）内に置く。図７に示すように、ジッタバッファ（７２０）内の「１」は対応パケットが存在することを示し、「０」は対応パケットがないことを示す。
【００９３】
加えて、サンプルバッファ（７３０）が存在する。サンプルバッファ（７３０）は、再生可能な復号化出力サンプル（７４０）を保持する。レンダラ（７６０）が何らかのオーディオの再生を望むとき、レンダラ（７６０）は所望のサンプル（７５０）をデコーダサンプルバッファ（７３０）から引き出す。サンプルバッファ（７３０）が要求を満たすのに十分なサンプルを有さない場合、デコーダはジッタバッファ（７２０）を参照して次のパケットが利用可能かどうかを見る。
【００９４】
次のパケットが利用可能な場合、そのパケットを復号化し、復号化されたサンプルをサンプルバッファ（７３０）に置き、ＶｏＩＰアプリケーションを通して要求サンプルをレンダラ（７６０）に渡す。他方で、パケットが利用可能でない場合、隠蔽モジュールを起動して置換サンプルを生成する。置換サンプルをサンプルバッファ（７３０）に置き、要求を満たす。いずれの場合も、ジッタバッファをシフトすることができ、ジッタバッファのヘッダ情報（７２５）が適切に調整される。
【００９５】
Ｂ．パケット遅延計算
幾つかの堅牢な復号化技術およびツールにおいて、デコーダはパケット受信時間を監視することでパケット損失率を追跡し、ネットワーク遅延を推定する。図８はパケット遅延分布の例を示す。受信パケットの履歴を使用して任意の遅延傾向を判定し、所望遅延（Ｄｄｅｓｉｒｅｄ，８２０）を計算することができる。（例えば、ネットワーク変動によって）所望遅延（８２０）が変化するかまたはパケット遅延分布が変化する場合、デコーダは時間圧縮／伸張（または可変プレイアウト）技術を用いてジッタバッファ遅延を動的に変化させ、復号化することができる。時間圧縮／伸張技術は、正確なピッチを維持しつつオーディオの再生時間を修正する。上記技術を用いると、パケット遅延が増加していることが観測されると、再生遅延、双方向性、等に関して受入れ可能な一定の点まで遅延パケットを収容できるように、サンプルバッファ内のサンプルを時間伸張することができる。有声フレームに対しては、これを後述のＷＳＯＬＡ技術を用いて行うことができる。同様に、遅延が減少していることが観測されると、ジッタバッファが満杯にならないように、サンプルバッファ内のサンプルを時間圧縮（高速再生）することができる。
【００９６】
所望遅延を計算する従来アプローチには、単純に前回パケットの最大遅延を指針として用いることが含まれる。しかしながら、異常値が存在する場合があり、その異常値がシステムを代表的でないパケット遅延値に適応させてしまう。加えて、これらの異常な遅いパケットを受信するのに十分な長さの遅延を与えるのではなく、小数のパケットを非常に遅く到着（および損失）させるのが良い場合もある。一部のコーデックは、移動平均および移動分散計算のような公式に基づいて所望の遅延を計算する。１つの例は１９９４年４月刊行のＲ．Ｒａｍｊｅｅ、Ｊ．Ｋｕｒｏｓｅ、Ｄ．Ｔｏｗｓｌｅｙ、およびＨ．Ｓｃｈｕｌｚｒｉｎｎｅによる「広域ネットワークにおけるパケット化オーディオアプリケーション向け適応プレイアウトメカニズム」Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＩＥＥＥ  ＩＮＦＯＣＯＭ‘９４、６８０−６８８頁に説明されている。しかしながら、上記計算では多数のパラメータを最適化する必要があり、一方で計算と応答速度との間の正しいトレードオフを発見し、他方で履歴値の代表的な集団に基づいてその計算をすることは困難である。
【００９７】
別のアプローチは、例えば２０００年６月刊行のＣ．Ｊ．Ｓｒｅｅｎａｎ、Ｊ−Ｃ．Ｃｈｅｎ、Ｐ．Ａｇｒａｗａｌ、およびＢ．Ｎａｒｅｎｄｒａｎによる「プレイアウトバッファリングに対する遅延縮小技術」、Ｐｒｏｃ．ＩＥＥＥ  Ｔｒａｎｓ．Ｍｕｌｔｉｍｅｄｉａ、ｖｏｌ．２、ｎｏ．２、８８−１００頁に説明されているコンコードアルゴリズムの実装を使用することで、パケット遅延分布（８１０）を直接的に分析することである。その方法においては、パケット遅延のヒストグラムを保持する。ヒストグラムにおけるビン幅は、最適遅延の計算に関する所望の正確性を表す。ビンの大きさを減少させると正確性が増すが、追跡の計算量も増す。ヒストグラムの形は、根底にあるパケット遅延の分布を近似的に反映する。新規パケットが到着すると、パケット遅延は対応するビンにマップされ、そのビンに入るパケット数が増加する。一部の古いパケットの年代を反映するため、すべての他のビンにおけるカウントは「エージング」と呼ばれるプロセスで縮小される。新規の所望遅延を発見するため、デコーダは所望損失率（Ｌｄｅｓｉｒｅｄ，８３０）を設定する。典型的な所望損失率の値は１パーセントから５パーセントの範囲にある。ヒストグラムを分析して、損失率の達成に必要な所望遅延の位置を判定する。このアプローチの問題は、ビン幅、エージング因子のような幾つかのパラメータを調整する必要があるということである。加えて、すべての古いパケットが同様に扱われ、エージングアプローチは全体的な性能において過度に重要な役割を果たす。加えて、クロックドリフトの状態が発生すると、全体的な遅延は正または負の傾向のいずれかを有する。このことにより、特にヒストグラムが時間遅延時系列内で不変であることを意図するとき、アルゴリズムをさらに複雑にする可能性がある。
【００９８】
本明細書で提示する１つの堅牢な復号化技術では、所定数のパケットに対する遅延履歴を保持する。例えば、履歴内に含まれるパケット数は５００、１０００または何らかの他の適切な数であることができる。それぞれの入力パケットに対して、最古パケットの遅延を最新パケットの遅延で置き換えるか、そうでなければ最古パケットを履歴内の最新パケットで置き換える。そのようにして、最古パケットのみを計算から除去する。図８を参照する。パケット遅延分布ヒストグラム（８１０）を、記録したすべてのパケット遅延履歴に基づく所望のビン幅に従って生成する。最適所望遅延（８２０）は、所望損失（８３０）に対応するビン遅延値であると判定される。本技術はエージング法に依存しない。したがって、クロックドリフトの状況から生ずる問題が軽減される。しかしながら、新しいヒストグラムをそれぞれの新しいパケットで再生成する上での計算要件は典型的に厳しい。例えば、１実装において、ヒストグラム計算は全体のデコーダ計算量の約１０％を消費する。前回のヒストグラムを最初から再構築するのではなく再利用することでこの計算量を減少させることは可能かもしれないが、クロックドリフトの状況が発生する場合、これにより遅延ヒストグラムが固定であるべきときでも遅延ヒストグラムが遅延時間軸に沿ってシフトしてしまう可能性がある。
【００９９】
別の堅牢な復号化技術では、データ構造を使用して、変動パケット遅延に適応させた最適バッファリング遅延を判定する。特定の実装においては、（例えば、配列で）メモリ内に線形に配置した遅延ノードの二重リンクリストを更新用、および所望遅延の判定用に使用する。ｎ番目の受信パケットにおける履歴はＨｉｓｔｏｒｙ［ｎ］＝｛Ｄｎ，Ｄｎ−１，Ｄｎ−２，．．．，Ｄｎ−Ｎ＋１｝で定義する。ここで、Ｎ個のパケットが履歴の大きさである。履歴内で表したパケットの遅延値を、二重リンクリスト型のデータ構造内に配置する。
【０１００】
配列内に４つのノード（９２０、９２２、９２４，９２６）を有する上記データ構造の例（９１０）を図９に示す。もちろん、データ構造は、５００から１０００ノードのようにより多くのノードを含むことができる。しかしながら、データ構造の説明を簡単にするため４つのノードを示してある。それぞれのノードには、受信パケットの遅延に対応する遅延値（９４０）が含まれる。ノード（９２０、９２２、９２４，９２６）をメモリ内に線形に配置することができ、指標Ｐ（９３０）をすべてのノード上で循環させることができる。したがって、指標Ｐ（９３０）は配列内で現在最古のパケットを追跡する。それぞれのノード（９２０、９２２、９２４，９２６）は次ポインタ（９５０）（ここでは、単純にノードのフィールド）と前ポインタ（９６０）（ここでは、単純にノードのフィールド）とを有する。それぞれの次ポインタ（９５０）は次に高い遅延値を有するノードを参照する。それぞれの前ポインタ（９６０）は次に低い遅延値を有するノードを参照する。したがって、図９に示したデータ構造（９１０）において、Ｄｎ−１（Ｐ３）＞Ｄｎ（Ｐ４）＞Ｄｎ−２（Ｐ２）＞Ｄｎ−３（Ｐ１）である。最古パケット（Ｐ１）は最初からリストの開始点にある。
【０１０１】
それぞれの新規パケットを受信すると、履歴が充填される（例えば、５００個のパケットが追跡される）点までパケットを追加する。その点で新規パケットを受信するとき、最古パケットに関する情報を含むノードを置き換える（例えば、パケット１をパケット５０１で置き換え、最古パケットがパケット２となり、パケット２をパケット５０２で置き換え、最古パケットが今度はパケット３となる）。古いノード情報を置き換えると、前ポインタおよび次ポインタが更新される。新しい遅延値に対して、次ポインタ上をループすることで遅延値の整列リストにおける正しい位置を発見し、次ポインタおよび前ポインタを更新することで遅延値を遅延値の順序内に「挿入」する。
【０１０２】
リンクリストは、リスト内の最高遅延に対する参照も保持する。対応する所望損失率に対する最適な所望遅延を発見することが望ましい場合、デコーダは最高遅延から始めて、所望損失率に対応するノードカウントが発見されるまで低い遅延に向かって前ポインタをたどる。新規パケットを受信する度にこれを行うか、または何らかの他のインターバル時に行うことができる。したがって、少数（例えば、１％から５％の所望損失値に対して１％から５％）のノードのみが訪問されるので、所望遅延を発見することは単純なプロセスである。また、実際のヒストグラムが形成されないので、これはクロックドリフト問題に対する自然な解を与えることができる。したがって、ヒストグラムのシフト現象に自動的に対処できる。さらに、計算はビン幅で指定される正確性に限定されない。したがって、計算は、典型的なヒストグラム技術を用いるよりも粒度が細かく、かつより正確であることができる。
【０１０３】
または、線形メモリ内の配列として実装する代わりに、何らかの他種の動的データ構造として二重リンクリストを実装する。
【０１０４】
Ｃ．信号依存隠蔽
１つまたは複数のパケットが紛失している場合、幾つかの異なるアプローチの１つを使用して、損失を隠蔽する信号を生成することができる。適切な隠蔽技術を、信号の性質および紛失パケットまたはフレームの数に依存して選択することができる。
【０１０５】
信号技術を判定する例の１つを図１０に示す。または、他の判定方法を使用する。図１０を参照する。１つまたは複数の紛失フレームに遭遇する（１０１０）。隠蔽技術を、１つまたは複数の隣接フレーム（複数）の性質および紛失フレーム数のような１つまたは複数の因子に基づいて選択する（１０２０）。または、その他および／または追加の因子を選択に使用する。選択した技術を用いて隠蔽信号を生成する（１０３０）。幾つかの信号依存隠蔽技術の例を以下に示す。第１の種類の信号依存隠蔽技術によると、過去の情報が紛失有声フレーム（複数）に対して利用可能なとき有音声の一方向隠蔽を用い、先行の利用可能なフレームを有声フレームとして分類する。将来の情報が利用可能であるとき、利用可能なオーディオ情報間のギャップが非常に長いため現実的に双方向隠蔽を利用できない場合、または低い計算量を維持できない場合、あるいは他の理由による場合、一方向隠蔽を使用することもできる。
【０１０６】
波形類似性をベースとした重複加算技術（「ＷＳＯＬＡ」）を一方向隠蔽に使用することができる。ＷＳＯＬＡは、２００３年１２月刊行のＹ．Ｊ．Ｌｉａｎｇ、Ｎ．Ｆａｒｂｅｒ、およびＢ．Ｇｉｒｏｄによる「ＩＰネットワーク上の音声通信に対する適応プレイアウトスケジューリングおよび損失隠蔽」，ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｍｕｌｔｉｍｅｄｉａ、ｖｏｌ．５、ｎｏ．４、５３２−５４３頁に説明されている。ＷＳＯＬＡ技術は、既存のピッチサイクルの加重平均を通して新しいピッチサイクルを生成することで、前回の信号を拡張する。任意の所望の長さを、次のパケットが受信されるまで本方法を用いて生成することができる。しかしながら、多数のパケットが損失される場合のようにピッチ拡張が過度になると、ＷＳＯＬＡ法は機械音を生み出す可能性がある。
【０１０７】
つまり、現在の堅牢な復号化技術において、ピッチ拡張が過度になる場合に雑音を追加することができる。例えば最新の受信音声信号に対して最適化した線形予測係数フィルタを通過させたランダム白色雑音を用いて、雑音を生成することができる。拡張が拡大すると、雑音エネルギーが増加する可能性がある。後述のように、ピッチ拡張のエネルギーも、残存するものすべてが生成背景雑音となるまで徐々に減少する可能性がある。
【０１０８】
拡張信号を、後の受信パケットから生成した、後の信号と合併する。これは、２つの信号間の相関を最大化する信号マッチングルーチンを含むことができる。その信号マッチングルーチンは、重複信号に対応するサンプルの振幅を乗じ、結果の積を足し合わせて相関値を生成する相関ルーチンのような、単純な相関ルーチンであることができる。後の信号のタイムラグを調整して、その相関値を最大化することができる。または、他の信号マッチングルーチンを使用することができる。合併領域に渡って信号エネルギーに一定の影響を及ぼすよう設計した重み付けウィンドウのような重み付けウィンドウを用いて、信号を合併することができる。
【０１０９】
第２の種類の信号依存隠蔽技術によると、拡張すべき信号が本質的に無声である（すなわち、信号内に明らかな有声またはピッチ情報を発見できない）場合、別のアルゴリズムを用いて信号を拡張する。上記の場合、拡張すべき信号を分析して線形予測係数を求め、これら係数を用いてランダム雑音に線形予測係数フィルタを通過させ、拡張すべき信号と合併される合成無声信号を生成する。合成信号のエネルギーは、拡張に用いる信号から導出する。一般に、本導出は、無音声のフレームを半分に分割すること、およびそれぞれの半分を拡張および合併することを含むことができる。上記導出の例を図１１に示す。示した例において、無音声信号（１１１０）は１つのフレームに対して利用可能であり、信号（１１２０）は後続フレームに対して紛失されている。無音声信号を、２つの重複する利用可能なサンプル信号またはセグメント（１１３０，１１４０）に分割する。左側の利用可能サンプル（１１３０）には、利用可能信号（１１１０）の左半分と、スムージングに用いる右半分からの少数の後続サンプルとが含まれる。例えば、４０または８０個の後続サンプルを使用することができる。同様に、右側の利用可能なサンプルには、利用可能信号（１１１０）の右半分と、スムージングに用いる少数の前回サンプルとが含まれる。
【０１１０】
左導出サンプル（１１５０）を左利用可能サンプル（１１３０）のエネルギーに基づいて生成する。詳細には、左利用可能サンプル（１１３０）を分析して、対応する線形予測係数を生成する。ランダム雑音を生成し、これら対応する係数を用いて線形予測係数フィルタを通過させる。結果の信号を、それが利用可能サンプル（１１３０）の信号エネルギーと等しい信号エネルギーを有するように調整し、それにより合成無声信号または左導出サンプル（１１５０）を生成する。
【０１１１】
同様に、右導出サンプル（１１６０）を右利用可能サンプル（１１４０）のエネルギーに基づいて生成する。詳細には、右利用可能サンプル（１１４０）を分析して、対応する線形予測係数を生成する。ランダム雑音を生成し、これら対応する係数を用いて線形予測係数フィルタを通過させる。結果の信号を、それが利用可能サンプル（１１４０）の信号エネルギーと等しい信号エネルギーを有するように調整し、それにより合成無声信号または右導出サンプル（１１６０）を生成する。
【０１１２】
図１１に示すように、４つのサンプル集合を以下のように左から右に順序付ける。すなわち、左利用可能サンプル（１１３０）、左導出サンプル（１１５０）、右導出サンプル（１１６０）、および右利用可能サンプル（１１４０）である。重み付けウィンドウ（１１７０）を用いて重複信号（１１３０、１１４０、１１５０、１１６０）を合併し、結果の信号（１１８０）を生成する。結果の信号（１１８０）の期間は、利用可能信号（１１１０）および紛失信号（１１２０）の再生時間をカバーするのに十分である。後続フレームも紛失している場合は、結果の信号（１１８０）を反復して信号をさらに拡張することができる。本技術は、利用可能な無声フレーム内部のエネルギーがフレーム内で大幅に上下するような多くの状況でも良く実施可能であると考えられる。
【０１１３】
または、デコーダは導出、合併、等のために利用可能情報を多数のセグメントに分割する。
【０１１４】
第３の種類の信号依存隠蔽技術によると、過去と将来の有声オーディオ情報が利用可能な場合は、双方向隠蔽を用いる。詳細には、利用可能オーディオ情報間のギャップが長すぎる（例えば、３つの紛失フレームまたはそれ未満）場合、両側からの情報を用いてギャップを埋めることができる。過去の情報を、過去と将来の利用可能フレームの中間より少々過去側に拡張し、将来の情報を中間点より少々過去側に拡張し戻す。例えば、有声オーディオに対して中間点から過去に約１ピッチ長だけ過去および将来の情報を拡張することができるか、あるいはそれぞれを何らかの所定の固定量、例えば中間点から４０または８０個のサンプルだけ過去に拡張することができる。信号の１つまたは両方をＷＳＯＬＡ法、上述の無声隠蔽技術、および／または何らかの他の方法を用いて拡張することができる。例えば、過去の情報が有声で将来の情報が無声の場合、上述の第１の技術を使用して過去の情報を拡張し、第２の技術を使用して将来の情報を拡張することができる。有声信号に対して、上述したものの１つのような信号マッチングルーチンを使用して、過去および将来の端ならびに中間点にある最良の位置で信号を確実に合併することができる。信号が有声、無声、または両方であることに関わらず、信号を、信号エネルギーを合併領域内でほぼ一定に保つよう設計した重み付けウィンドウのような重み付けウィンドウを用いて合併することができる。上記の双方向隠蔽を用いるときは、雑音を典型的に信号に追加しない。
【０１１５】
第１および第２の先行型の信号依存隠蔽技術において、受信パケットがない拡張期間があるとき、上述の技術の１つを用いて生成した拡張有声または無声信号のエネルギーは徐々に減少し、生成した背景雑音は結果の信号が予め判定した背景雑音のエネルギーレベルに達するまで徐々に増加する。これは、長期間拡張されている信号から生じうる共鳴音および機械音のような人工的な音の削減に役立つ。本技術は、快適雑音生成なしに音声―アクティビティ検出を用いるアプリケーションにおいて特に有用でありうる。上記アプリケーションにおいて、音声アクティビティが停止する（例えば、文章間の一時停止、または他者の話中）とき、送信側アプリケーションは単純に無音期間に対してパケットの送信を停止する。上記の場合、デコーダは上記期間に対して紛失フレームに遭遇する可能性があるが、デコーダは背景雑音に立ち返ることができる。これは無音期間において望ましい反応である。１実装において、信号を約２フレーム拡張した後に雑音が徐々に導入され始め、雑音は典型的に約４フレーム後に聞き手に認識可能となる。信号を約６または７フレーム拡張したときには、背景雑音のみが残る。これらの時点を、別の環境で聞き手が認識したオーディオ品質に基づいて調整することができる。
【０１１６】
Ｄ．ピッチジッタリング
ＷＳＯＬＡ技術または他の有音声拡張技術を用いると、前回フレーム（複数）のような前回の信号セグメントのピッチ特性を用いて信号を生成することができる。結果の信号セグメントを再利用して信号を拡張し、多数のパケット損失を隠蔽することがよくある。上記のように（例えばＷＳＯＬＡ技術を用いて）ピッチ反復を通して信号を繰り返し拡張すると、共鳴音または機械音が生じる可能性がある。ＷＳＯＬＡ技術で用いる重み付け自体は上記効果の軽減を支援することができる。上述したもののような雑音追加技術は上記効果をさらに軽減することができる。
【０１１７】
ランダム、擬似ランダム、または他の調整要素を信号拡張時に後続サンプルにおけるピッチの大きさ／オフセットに追加することにより、共鳴音または機械音を軽減することもできる。したがって、信号を正確な大きさのピッチサイクルで拡張する代わりに、因子をピッチの大きさに追加して、信号が自然音声により類似するようにする。自然音声が正確に一定のピッチレートを有することはまれである。拡張の長さが増すと、因子の大きさも増加する可能性がある。
【０１１８】
本技術を、因子範囲の大きさが徐々に増加するような一連の因子を含む因子テーブルまたは因子リストを用いて実装することもできる。例として、オフセット調整因子は第１のピッチサイクルに対してゼロサンプルであることができ、第２のサイクルに対して負の１、第３のピッチサイクルに対して正の１、第４のサイクルに対して正の２、第５のサイクルに対して負の１、等であることができる。または、調整因子を復号化中に適用可能範囲からランダム／擬似ランダムに選択することができる。１実装において、ランダム因子の最大範囲は負の３のサンプルから正の３のサンプルまでである。しかしながら、範囲の大きさをリスニングテストに基づいて調整することができる。または、他の技術を使用して調整因子を生成することおよび／または他の調整因子の範囲を使用することができる。
【０１１９】
反復ピッチサイクルからの望ましくない音響効果を軽減する上述の３つの技術（ＷＳＯＬＡ重み付け、雑音追加、およびピッチジッタリング）を独立に、または組み合わせて使用することができる。これら技術のパラメータを繰り返し調整して、特定の実装においてより望ましい結果を生み出すことができる。
【０１２０】
Ｅ．デコーダメモリ復帰
有限の内部メモリを有するデコーダまたは内部メモリを有さないデコーダでＶｏＩＰアプリケーションを使用することは十分に単純である。上記の場合、パケット損失によりエンコーダおよびデコーダの同期がずれるということはない。なぜならば、現在の情報を復号化するとき、前回の情報に対する大幅なメモリ（過去履歴）依存がないからである。しかしながら、上記有声コーデックはビットレートに関しては通常はあまり効率的でない。ビットレートが低いコーデックにおいては、その低いビットレートで品質を向上させるため典型的に強いメモリ依存性が導入される。これは、アーカイブ目的での圧縮のような幾つかのアプリケーションでは問題とならないかもしれない。しかしながら、上記コーデックをＶｏＩＰアプリケーションのような他のアプリケーションで使用するときは、パケットを損失することがよくある。励起信号を生成するための適応コードブックにおけるメモリ依存性のようなメモリ依存性により、損失パケットを超えた拡張歪みがデコーダ内で生ずる可能性がある。
【０１２１】
後続パケットが履歴信号として用いる置換情報の生成に使用可能な以下の技術を、図１２で一般的に示す。または、その他および／または追加の技術を使用する。
【０１２２】
最初に、デコーダは１つまたは複数の紛失フレームに対する隠蔽信号を生成する（１２１０）。このようにして紛失フレーム（複数）を、次の受信パケットから利用可能な信号の部分へ隠蔽する。上記の信号依存技術を例えば上記隠蔽に使用することができる。または、他の隠蔽技術を隠蔽に使用することができる。
【０１２３】
デコーダは次いで、隠蔽信号上で少なくとも部分的な符号化（および再構築）を実施する（１２２０）。例えば、デコーダは１つまたは複数の隠蔽技術で生成した隠蔽信号を（デコーダ内に存在する）簡単な架空エンコーダを通過させてデコーダの内部状態を再生成する。これは典型的に、後続の復号化において紛失フレーム（複数）からの復帰を早める。
【０１２４】
具体的な実装において、隠蔽信号を処理して、紛失励起信号履歴に置換可能な対応残差信号を生成する。これは、隠蔽信号に線形予測合成フィルタ（または換言すると線形予測分析フィルタ）の逆を通過させることで行うことができる。（上述のコンポーネント（５４０）のような）合成フィルタ技術において、フィルタは、再構築線形予測係数を用いて再構築残差信号を処理し、結合または合成信号を生成する。対照的に、本技術の線形予測分析フィルタは、既知の線形予測係数を用いてデコーダ生成信号（ここでは、隠蔽信号）を処理し、置換残差信号を生成する。
【０１２５】
前回フレームの線形予測係数を線形予測分析フィルタ内で使用することができる。または、新しい線形予測係数を、隠蔽信号を分析することで計算することができる。これは、線形予測分析コンポーネント（３３０）を参照して上述の技術を用いて行うことができる。隠蔽信号に対して新しい線形予測係数を計算することで、より良い結果が達成されると考えられる。しかしながら、線形予測係数を前回フレームから使用することがより単純である。または、デコーダは上記線形予測係数の何らかの組合せを使用するか、または帯域拡張のような何らかの他の方法を使用する。
【０１２６】
デコーダは、紛失フレーム（複数）の励起履歴を用いる代わりに、本技術から生ずる信号を後続の適応コードブック計算用のメモリとして用いることができる。
【０１２７】
隠蔽信号は通常は完全ではないので、デコーダが生成した置換残差信号は、紛失フレーム（複数）が復号化されたならば生成されたであろう実際のメモリ、または履歴をなお近似するに過ぎない。しかしながらそうであっても、デコーダは、紛失フレームに対する励起履歴が存在しない状況よりも非常に早く正常状態に戻ることができる。したがって、本技術は損失パケットに続く復号化信号の品質を大幅に改善できると考えられる。
【０１２８】
紛失フレーム（複数）に続く次フレームが大幅なメモリ依存性を有する場合、本技術を双方向隠蔽の目的で使用することもできる。その場合、双方向隠蔽を以下のように実現することができる。すなわち、先ず紛失フレーム（複数）に対して一方向隠蔽を実施する。２番目に、その隠蔽を使用して次フレームに対する大よそのメモリを再生成する。３番目に、再生成したメモリを用いて前述した次フレームを復号化する。４番目に、前述した次フレームと紛失フレーム（複数）に先行するフレームとを使用して紛失フレーム（複数）の双方向隠蔽を実施する。上記双方向隠蔽により、単純に次フレームに対するメモリを有さない一方向隠蔽または双方向隠蔽を使用するよりも、良い結果が得られると考えられる。
【０１２９】
記載の実施態様を参照して本発明の原理を説明および例示したが、記載の実施態様の配置および詳細を上記原理から逸脱することなく修正しうることは認識されるであろう。本明細書で説明したプログラム、プロセス、または方法は、特に指示のない限り、コンピューティング環境のいかなる特定の種類に関連または限定しないことは理解されるべきである。本明細書で説明した教示に従って、様々な種類の汎用目的または専用コンピューティング環境を動作と併用するか、またはその環境が動作を実施することができる。ソフトウェアで示した実施態様の要素をハードウェアで実装することができ、逆も真である。
【０１３０】
本発明の原理を適用できる可能性のある多数の実施態様を考慮して、添付請求項およびその等価物の範囲および精神に含まれうるすべての上記実施態様を我々の発明として主張する。
【図面の簡単な説明】
【０１３１】
【図１】記載した１つまたは複数の実施態様の実装に適したコンピューティング環境のブロック図である。
【図２】記載した１つまたは複数の実施態様とともに実装することができる、ネットワーク環境のブロック図である。
【図３】記載した１つまたは複数の実施態様とともに実装することができる、リアルタイム音声フレームエンコーダのブロック図である。
【図４】１実装においてコードブックパラメータの判定を示すフロー図である。
【図５】記載した１つまたは複数の実施態様とともに実装することができる、リアルタイム音声フレームデコーダのブロック図である。
【図６】デコーダ側ＶｏＩＰシステムの例におけるオーディオ情報の一般的フローを示すブロック図である。
【図７】デコーダ側バッファリング技術の例におけるサンプルのバッファリングを示すブロック図である。
【図８】パケット遅延分布の例を示すグラフである。
【図９】パケット遅延データ構造の例を示す図である。
【図１０】適切な隠蔽技術の判定例を示すフロー図である。
【図１１】紛失した無声オーディオ情報を隠蔽する技術を示す概念図である。
【図１２】デコーダメモリ復帰技術の例を示すフロー図である。
【図１】
2008542838.tif 000005
【図２】
2008542838.tif 000006
【図３】
2008542838.tif 000007
【図４】
2008542838.tif 000008
【図５】
2008542838.tif 000009
【図６】
2008542838.tif 000010
【図７】
2008542838.tif 000011
【図８】
2008542838.tif 000012
【図９】
2008542838.tif 000013
【図１０】
2008542838.tif 000014
【図１１】
2008542838.tif 000015
【図１２】
2008542838.tif 000016
【国際調査報告】
2008542838.tif 000017
2008542838.tif 000018