(58)【調査した分野】(Int.Cl.,DB名)
前記時間領域の励振寄与分は、(a)適応コードブック寄与分のみ、または(b)前記適応コードブック寄与分および固定コードブック寄与分を含む、請求項1に記載の時間領域/周波数領域混合型符号化装置。
前記現在のフレームの前記サブフレーム数の計算器は、利用可能なビット配分と、前記入力された音信号の高域周波数のスペクトル動特性との少なくとも1つに応答する、請求項4に記載の時間領域/周波数領域混合型符号化装置。
前記周波数領域の励振寄与分の計算器は、前記入力された音信号のLP分析から得られるLP残差の周波数変換を行って、前記LP残差の周波数表現を生成する、請求項1から6のいずれか一項に記載の時間領域/周波数領域混合型符号化装置。
前記カットオフ周波数の計算器は、前記LP残差の周波数表現と、前記時間領域の励振寄与分の周波数表現との間の相互相関を複数の周波数帯各々について算出する算出器を備え、前記符号化装置は、前記相互相関に応じて前記カットオフ周波数の推定値を見つける発見器を備える、請求項7に記載の時間領域/周波数領域混合型符号化装置。
前記周波数帯間の相互相関を平滑化して相互相関ベクトルを生成する平滑器と、前記周波数帯にわたる前記相互相関ベクトルの平均を計算する計算器と、前記相互相関ベクトルの平均を正規化する正規化器とを備え、前記カットオフ周波数の推定値の前記発見器は、前記周波数帯のうち1つの周波数帯の最後の周波数と、前記相互相関ベクトルの前記正規化された平均にスペクトル幅値を乗算した値との差分が最小になる最後の周波数を見つけることにより、前記カットオフ周波数の第1の推定値を求める、請求項8に記載の時間領域/周波数領域混合型符号化装置。
前記カットオフ周波数の計算器は、前記時間領域の励振寄与分から算出される高調波が位置する、前記周波数帯のうち1つを見つける発見器と、前記カットオフ周波数の前記第1の推定値と、前記高調波が位置する前記周波数帯の最後の周波数とのうち高い方の周波数を前記カットオフ周波数として選択する選択器とを備える、請求項9に記載の時間領域/周波数領域混合型符号化装置。
前記フィルタは、前記カットオフ周波数より上の複数の周波数帯の周波数ビンを強制的にゼロにする、周波数ビンのゼロ化器を備える、請求項1から10のいずれか一項に記載の時間領域/周波数領域混合型符号化装置。
前記フィルタは、前記カットオフ周波数が所与の値より低い場合に複数の周波数帯のすべての周波数ビンを強制的にゼロにする周波数ビンのゼロ化器を備える、請求項1から11のいずれか一項に記載の時間領域/周波数領域混合型符号化装置。
前記周波数領域の励振寄与分の計算器は、前記入力された音信号のLP残差の周波数表現と、前記時間領域の励振寄与分のフィルタリング後周波数表現との差分を計算する計算器を備える、請求項1から12のいずれか一項に記載の時間領域/周波数領域混合型符号化装置。
前記周波数領域の励振寄与分の計算器は、前記LP残差の周波数表現と、前記カットオフ周波数までの前記時間領域の励振寄与分の周波数表現との差分を計算して、差分ベクトルの第1の部分を形成する計算器を備える、請求項7に記載の時間領域/周波数領域混合型符号化装置。
前記カットオフ周波数に続く所定の周波数範囲内の前記時間領域の励振寄与分の前記周波数表現に適用されて、前記差分ベクトルの第2の部分を形成するための縮小係数を備える、請求項14に記載の時間領域/周波数領域混合型符号化装置。
前記差分ベクトルは、前記所定の周波数範囲より上の残りの第3の部分については前記LP残差の周波数表現で形成される、請求項15に記載の時間領域/周波数領域混合型符号化装置。
前記加算器は、前記時間領域の励振寄与分と前記周波数領域の励振寄与分とを前記周波数領域で加算する、請求項1から18のいずれか一項に記載の時間領域/周波数領域混合型符号化装置。
前記時間領域の励振寄与分と前記周波数領域の励振寄与分間でビット配分を動的に割り当てる手段を備える、請求項1から19のいずれか一項に記載の時間領域/周波数領域混合型符号化装置。
前記分類器が前記入力された音信号を非音声に分類し前記入力された音信号中に一時的アタックを検出すると、前記時間領域専用符号器で前記入力された音信号を符号化する際にメモリレス時間領域符号化モードを強制的に使用させるメモリレス時間領域符号化モードの選択器を備える、請求項21または22に記載のエンコーダ。
前記現在のフレームの前記サブフレーム数の計算器は、利用可能なビット配分と、前記入力された音信号の高域周波数のスペクトル動特性との少なくとも1つに応答する、請求項25に記載の時間領域/周波数領域混合型符号化装置。
前記時間領域の励振寄与分は、(a)適応コードブック寄与分のみ、または(b)前記適応コードブック寄与分および固定コードブック寄与分を含む、請求項31に記載の時間領域/周波数領域混合型符号化方法。
前記時間領域の励振寄与分を計算するステップは、前記入力された音信号の符号励振線形予測符号化を使用するステップを含む、請求項31または32に記載の時間領域/周波数領域混合型符号化方法。
現在のフレームで使用するサブフレーム数を計算するステップを含み、前記時間領域の励振寄与分を計算するステップは、前記現在のフレームについて決定されたサブフレーム数を前記現在のフレームで使用するステップを含む、請求項31から32のいずれか一項に記載の時間領域/周波数領域混合型符号化方法。
前記現在のフレームの前記サブフレーム数を計算するステップは、利用可能なビット配分と、前記入力された音信号の高域周波数のスペクトル動特性との少なくとも1つに応答する請求項34に記載の時間領域/周波数領域混合型符号化方法。
前記周波数領域の励振寄与分を計算するステップは、前記入力された音信号のLP分析から得られるLP残差の周波数変換を行って、前記LP残差の周波数表現を生成するステップを含む、請求項31から36のいずれか一項に記載の時間領域/周波数領域混合型符号化方法。
前記カットオフ周波数を計算するステップは、前記LP残差の周波数表現と、前記時間領域の励振寄与分の周波数表現との間の相互相関を複数の周波数帯各々について算出するステップを含み、前記符号化方法は、前記相互相関に応じて前記カットオフ周波数の推定値を見つけるステップを含む、請求項37に記載の時間領域/周波数領域混合型符号化方法。
前記周波数帯間の相互相関を平滑化して相互相関ベクトルを生成し、前記周波数帯にわたる前記相互相関ベクトルの平均を計算し、前記相互相関ベクトルの平均を正規化するステップを含み、前記カットオフ周波数の推定値を見つけるステップは、前記周波数帯のうち1つの周波数帯の最後の周波数と、前記相互相関ベクトルの前記正規化された平均にスペクトル幅値を乗算した値との差分が最小になる最後の周波数を見つけることにより、前記カットオフ周波数の第1の推定値を求めるステップを含む、請求項38に記載の時間領域/周波数領域混合型符号化方法。
前記カットオフ周波数を計算するステップは、前記時間領域の励振寄与分から算出される高調波が位置する、前記周波数帯のうち1つを見つけ、前記カットオフ周波数の前記第1の推定値と、前記高調波が位置する前記周波数帯の最後の周波数とのうち高い方の周波数を前記カットオフ周波数として選択するステップを含む、請求項39に記載の時間領域/周波数領域混合型符号化方法。
前記時間領域の励振寄与分の周波数範囲を調整するステップは、前記カットオフ周波数より上の複数の周波数帯の周波数ビンを強制的にゼロにする周波数ビンのゼロ化ステップを含む、請求項31から40のいずれか一項に記載の時間領域/周波数領域混合型符号化方法。
前記時間領域の励振寄与分の周波数範囲を調整するステップは、前記カットオフ周波数が所与の値より低い場合に、複数の周波数帯のすべての周波数ビンをゼロにする周波数ビンのゼロ化ステップを含む、請求項31から41のいずれか一項に記載の時間領域/周波数領域混合型符号化方法。
前記周波数領域の励振寄与分を計算するステップは、前記入力された音信号のLP残差の周波数表現と、前記時間領域の励振寄与分のフィルタリング後周波数表現との差分を計算するステップを含む、請求項31から42のいずれか一項に記載の時間領域/周波数領域混合型符号化方法。
前記周波数領域の励振寄与分を計算するステップは、前記LP残差の周波数表現と、前記カットオフ周波数までの前記時間領域の励振寄与分の周波数表現との差分を計算して、差分ベクトルの第1の部分を形成するステップを含む、請求項37から40のいずれか一項に記載の時間領域/周波数領域混合型符号化方法。
前記カットオフ周波数に続く所定の周波数範囲内の前記時間領域の励振寄与分の前記周波数表現に縮小係数を適用して、前記差分ベクトルの第2の部分を形成するステップを含む、請求項44に記載の時間領域/周波数領域混合型符号化方法。
前記所定の周波数範囲より上の残りの第3の部分については前記LP残差の周波数表現で前記差分ベクトルを形成するステップを含む、請求項45に記載の時間領域/周波数領域混合型符号化方法。
調整された時間領域の励振寄与分と前記周波数領域の励振寄与分とを加算して前記時間領域/周波数領域混合型励振を形成するステップは、前記時間領域の励振寄与分と前記周波数領域の励振寄与分とを前記周波数領域で加算するステップを含む、請求項31から48のいずれか一項に記載の時間領域/周波数領域混合型符号化方法。
前記時間領域の励振寄与分と前記周波数領域の励振寄与分間でビット配分を動的に割り当てるステップを含む、請求項31から49のいずれか一項に記載の時間領域/周波数領域混合型符号化方法。
前記入力された音信号が非音声に分類され前記入力された音信号中に一時的アタックが検出されると、前記時間領域のみの符号化方法を使用して前記入力された音信号を符号化する際にメモリレス時間領域符号化モードを強制的に使用させる、メモリレス時間領域符号化モードを選択するステップを含む、請求項51または52に記載の符号化の方法。
前記時間領域/周波数領域混合型符号化方法は、時間領域寄与分の計算で可変長のサブフレームを使用するステップを含む、請求項51から53のいずれか一項に記載の符号化の方法。
前記現在のフレームの前記サブフレーム数を計算するステップは、利用可能なビット配分と、前記入力された音信号の高域周波数のスペクトル動特性との少なくとも1つに応答する、請求項55に記載の時間領域/周波数領域混合型符号化方法。
【発明を実施するための形態】
【0015】
ここに提案される時間領域と周波数領域がより統合されたモデルは、処理遅延とビットレートを増大させることなく、例えば音楽や残響音声などの一般的なオーディオ信号の合成品質を向上させることができる。このモデルは、例えば、利用可能なビットが、入力信号の特性に応じて、適応コードブック、1つまたは複数の固定コードブック(例えば代数コードブック、ガウスコードブック等)、および周波数領域符号化モードの間で動的に割り当てられる線形予測(LP)の残差領域で動作する。
【0016】
音楽や残響音声などの一般的なオーディオ信号の合成品質を向上させる低処理遅延、低ビットレートの会話コーデックを実現するために、周波数領域符号化モードを、CELP(符号励振線形予測)による時間領域符号化モードと可能な限り統合することができる。その目的のために、周波数領域符号化モードでは、例えば、LP残差領域で行われる周波数変換を使用する。それにより、1つのフレーム、例えば20msのフレームのフレームから別のフレームへの切り替えをほぼアーチファクトを生じずに行うことが可能となる。また、2つの符号化モードの統合は十分に緊密であるため、現在の符号化モードが十分に効率的でないと判断される場合に、ビット配分を別の符号化モードに動的に再割り当てすることができる。
【0017】
提案される時間領域と周波数領域がより統合されたモデルの特徴の1つは、時間領域構成要素の可変の時間サポートであり、時間領域構成要素はフレームごとに4分の1フレームから1フレーム全体まで変動し、この構成要素をサブフレームと呼ぶ。説明のための例として、1フレームが20msの入力信号に相当するとする。これは、コーデックの内部サンプリング周波数が16kHzの場合は1フレーム当たり320サンプルに相当し、コーデックの内部サンプリング周波数が12.8kHzの場合は1フレーム当たり256サンプルに相当する。すると、4分の1フレーム(サブフレーム)は、コーデックの内部サンプリング周波数によって64または80サンプルに相当する。以下の例示的実施形態では、コーデックの内部サンプリング周波数は12.8kHzであり、256サンプルのフレーム長になるものとする。可変の時間サポートにより、最小のビットレートで主要な時間的事象を捉えて、基本の時間領域励振寄与分を生成することが可能となる。非常に低いビットレートでは、時間サポートは通常1フレーム全体である。その場合、励振信号への時間領域寄与分は適応コードブックのみからなり、対応する利得を含むそれに対応するピッチ情報は1フレームにつき1回送信される。より高いビットレートが利用可能な場合は、時間サポートを短くする(そして時間領域符号化モードに割り当てられるビットレートを増大する)ことにより、より多くの時間的事象を捉えることができる。最後に、時間サポートが十分に短く(4分の1フレーム)、利用可能なビットレートが十分に高い時には、時間領域寄与分は、対応する利得と共に、適応コードブック寄与分、固定コードブック寄与分、またはその両方を含むことができる。そして、コードブックのインデックスおよび利得を記述するパラメータがサブフレームごとに送信される。
【0018】
低いビットレートでは、会話コーデックは、高域周波数を適切に符号化することができない。その結果、入力信号が音楽および/または残響音声を含む場合には合成品質の重大な劣化が生じる。この問題を解決するために、時間領域の励振寄与分の効率性を計算する機能が追加される。場合によっては、入力ビットレートと時間フレームサポートに関係なく、時間領域の励振寄与分が有益でないことがある。そのような場合は、すべてのビットを周波数領域符号化の次の段階に再割り当てする。しかし、大半の時間には、時間領域の励振寄与分は、特定の周波数(カットオフ周波数)までしか有益でない。そのような場合には、カットオフ周波数より上で時間領域の励振寄与分をフィルタリングで除去する。このフィルタリング動作により、有益な情報が時間領域の励振寄与分で符号化された状態を保つことができ、カットオフ周波数より上の有益でない情報を除去することができる。例示的実施形態では、このフィルタリングは、周波数領域で特定周波数より上の周波数ビンをゼロに設定することにより行われる。
【0019】
可変の時間サポートを可変のカットオフ周波数と組み合わせると、時間領域と周波数領域が統合されたモデル内のビット割り当てが非常に動的になる。LPフィルタの量子化後のビットレートは、すべて時間領域に割り当てるか、またはすべて周波数領域に割り当てるか、またはその中間とすることができる。時間領域と周波数領域間のビットレートの割り当ては、時間領域寄与分に使用されるサブフレームの数、利用可能なビット配分、および算出されたカットオフ周波数に応じて行うことができる。
【0020】
より効率的に入力残差に合致する合計励振を生成するために、周波数領域符号化モードを適用する。本開示の特徴は、入力LP残差の周波数表現(周波数変換)とカットオフ周波数までにフィルタリングされた時間領域の励振寄与分の周波数表現(周波数変換)との差を含んでいるベクトルであって、そのカットオフ周波数より上の入力LP残差自体の周波数表現(周波数変換)を含んでいるベクトルに周波数領域の符号化が行われることである。カットオフ周波数のすぐ上の両セグメントの間に滑らかなスペクトル遷移が挿入される。換言すると、まず時間領域の励振寄与分の周波数表現の高域周波数部分をゼロにする。スペクトルの変化していない部分とスペクトルのゼロにした部分との間の遷移領域をカットオフ周波数のすぐ上に挿入して、スペクトルの両部分間が確実に滑らかに遷移するようにする。次いで、この時間領域の励振寄与分の変更を加えたスペクトルを入力LP残差の周波数表現から引く。したがって、その結果得られるスペクトルは、カットオフ周波数より下の両スペクトルの差と、カットオフ周波数より上のLP残差の周波数表現とに対応し、いくらかの遷移領域を含んでいる。上述のように、カットオフ周波数はフレームごとに変化する可能性がある。
【0021】
選択される周波数量子化方法(周波数領域符号化モード)に関係なく、特に非常に長い窓の場合は常にプリエコー(pre-echo)の可能性がある。本技術では、使用する窓は矩形窓であり、符号化信号と比較した余分な窓長がゼロになる、すなわち重畳加算を使用しない。これは、発生する可能性のあるプリエコーを低減するための最適な窓に相当するが、一時的アタック(temporal attacks)ではいくらかのプリエコーがなお聞こえる可能性がある。そのようなプリエコーの問題を解決する技術は多数存在するが、本開示はこのプリエコーの問題を解消するための単純な機能を提案する。この機能は、ITU-T勧告G.718の「遷移モード(Transition Mode)」(参考文献[ITU-T Recommendation G.718 "Frame error robust narrow-band and wideband embedded variable bit-rate coding of speech and audio from 8-32 kbit/s", June 2008、section 6.8.1.4 and section 6.8.4.2])から導き出されたメモリレス(memory-less)時間領域符号化モードに基づく。この機能の背後にある発想は、提案される時間領域と周波数領域がより統合されたモデルがLP残差領域に組み込まれ、それによりほぼ常にアーチファクトのない切替えが可能になることを利用するというものである。信号が一般的なオーディオ(音楽や残響音声)と考えられ、フレーム内で一時的アタックが検出された場合は、そのフレームだけがこの特別なメモリレス時間領域符号化モードで符号化される。このモードは一時的アタックに対処して、そのフレームの周波数領域符号化によって生じる可能性のあるプリエコーを回避する。
【0022】
例示的実施形態
提案される時間領域と周波数領域がより統合されたモデルでは、上記の適応コードブック、1つまたは複数の固定コードブック(例えば代数コードブック、ガウスコードブック等)、すなわちいわゆる時間領域コードブック、および周波数領域量子化(周波数領域符号化モード)をコードブックライブラリと見なすことができ、すべての利用可能なコードブックまたはその部分集合にビットを分配することができる。これは、例えば入力された音信号がクリーンな音声である場合は、すべてのビットが時間領域符号化モードに割り当てられ、基本的に符号化を旧来のCELP方式にすることを意味する。一方、何らかの音楽セグメントの場合は、入力LP残差を符号化するために割り当てられるすべてのビットを、周波数領域、例えば変換領域で消費するのが最適である場合がある。
【0023】
上記説明で指摘したように、時間領域符号化モードと周波数領域符号化モードの時間サポートは、同じである必要はない。異なる時間領域量子化方法(適応コードブックおよび代数コードブックの検索)に消費されるビットは、通常はサブフレーム単位(典型的には4分の1フレーム、すなわち5msの時間サポート)で分配され、周波数領域符号化モードに割り当てられるビットは、フレーム単位(通例は20msの時間サポート)で分配して周波数分解能を改善する。
【0024】
時間領域CELP符号化モードに割り当てられるビット配分は、入力された音信号に応じて動的に制御することもできる。場合によっては、時間領域のCELP符号化モードに割り当てられるビット配分をゼロにすることができ、これは実質的に全ビット配分が周波数領域符号化モードに当てられることを意味する。時間領域の手法と周波数領域の手法の両方についてLP残差領域で動作することを選択すると、2つの主な利点がある。第1に、これはCELP符号化モードと両立することができ、音声信号の符号化で効率的であることが分かっている。その結果、2種類の符号化モードの切替えによるアーチファクトが生じない。第2に、元の入力された音信号に対するLP残差の動特性の低さとその相対的な平坦性のために、周波数変換に矩形窓を使用することが容易になり、したがって重なりのない窓を使用することが可能となる。
【0025】
コーデックの内部サンプリング周波数が12.8kHz(すなわち1フレーム当たり256サンプル)である非制限的な例では、ITU-T勧告G.718と同様に、時間領域のCELP符号化モードで使用するサブフレームの長さは、典型的な4分の1フレーム長(5ms)から2分の1フレーム(10ms)または全フレーム長(20ms)まで異なる可能性がある。サブフレーム長の決定は、利用可能なビットレート、および入力された音信号の分析、特にその入力された音信号のスペクトル動特性の分析に基づく。サブフレーム長の決定は閉ループ方式で行うことができる。複雑性を軽減するために、サブフレーム長の決定を開ループ方式で行うこともできる。サブフレーム長はフレームごとに変えることができる。
【0026】
特定のフレームでサブフレーム長が選択されると、標準的な閉ループのピッチ分析を行い、励振信号への第1の寄与分を適応コードブックから選択する。そして、利用可能なビット配分と入力された音信号の特性(例えば入力音声信号の場合)に応じて、1つまたは数個の固定コードブックから得た第2の寄与分を変換領域符号化を行う前に追加することができる。その結果得られる励振を時間領域の励振寄与分と呼ぶ。一方、非常に低いビットレートで一般的なオーディオの場合は、固定コードブック段階を省き、残りのすべてのビットを変換領域符号化モードに使用する方がよい場合がしばしばある。変換領域符号化モードは例えば周波数領域符号化モードである。上記のように、サブフレーム長は4分の1フレーム、2分の1フレーム、または1フレームの長さである。固定コードブックの寄与分は、サブフレーム長が4分の1フレーム長に等しい場合にのみ使用する。サブフレーム長を2分の1フレームまたは1フレーム長に決定した場合は、適応コードブックの寄与分のみを使用して時間領域励振を表し、残りのすべてのビットは周波数領域符号化モードに割り当てる。
【0027】
時間領域の励振寄与分の算出が完了すると、その効率を評価し、量子化する必要がある。時間領域における符号化の利得が非常に低い場合は、時間領域の励振寄与分を完全になくし、代わりにすべてのビットを周波数領域符号化モードに使用する方が効率的である。対して、例えばクリーンな入力音声の場合は、周波数領域符号化モードは必要でなく、すべてのビットを時間領域符号化モードに割り当てる。しかし、しばしば、時間領域における符号化は特定の周波数までしか効率的でない。その周波数を時間領域の励振寄与分のカットオフ周波数と呼ぶ。そのようなカットオフ周波数を判定することにより、全時間領域符号化が、周波数領域符号化に逆らって作用せずに、より良好な最終的合成を得る助けとなることが保証される。
【0028】
カットオフ周波数は周波数領域で推定する。カットオフ周波数を算出するために、まずLP残差と時間領域の符号化寄与分両方のスペクトルを所定数の周波数帯に分割する。周波数帯の数と、各周波数帯に含まれる周波数ビンの数は、実装ごとに異なってよい。周波数帯ごとに、時間領域の励振寄与分の周波数表現とLP残差の周波数表現との間の正規化相関を算出し、隣接する周波数帯間で相関を平滑化する。周波数帯単位の相関は、0.5を下限とし、0〜1の間に正規化される。次いで、平均相関を、すべての周波数帯の相関の平均として算出する。次いで、カットオフ周波数の第1の推定のために、平均相関を0から2分の1サンプリングレート(2分の1サンプリングレートは「1」の正規化相関値に相当する)の間に調節する。そして、カットオフ周波数の第1の推定値を、その値に最も近い周波数帯の上限として求める。実装の一例では、12.8kHzの16個の周波数帯を相関の算出のために定義する。
【0029】
人間の耳の音響心理学的性質を利用して、ピッチの第8高調波周波数の推定位置を、相関の算出で推定されたカットオフ周波数と比較することにより、カットオフ周波数推定の信頼性を向上させる。その位置が相関の算出で推定されたカットオフ周波数より高い場合は、ピッチの第8高調波周波数の位置に対応するようにカットオフ周波数を変更する。そして、カットオフ周波数の最終値を量子化し、送信する。実装の一例では、ビットレートに応じて、そのような量子化に3ビットまたは4ビットを使用して、8個または16個の可能なカットオフ周波数を得る。
【0030】
カットオフ周波数が分かると、周波数領域の励振寄与分の周波数量子化を行う。まず、入力LP残差の周波数表現(周波数変換)と、時間領域の励振寄与分の周波数表現(周波数変換)との差分を求める。次いで、その差分からカットオフ周波数までと、残りのスペクトルの入力LP残差の周波数表現への滑らかな推移とから構成される新しいベクトルを作成する。そして、新しいベクトル全体に周波数量子化を適用する。実装の一例では、この量子化では、支配的な(最もエネルギーが高い)スペクトルパルスの正負符号および位置を符号化する。1つの周波数帯につき量子化するパルスの数は、周波数領域符号化モードに利用可能なビットレートに関係する。利用可能なビットがすべての周波数帯をカバーするのに十分でない場合は、残りの周波数帯はノイズのみで埋める。
【0031】
前の段落で説明した量子化方法を使用した周波数帯の周波数量子化では、その周波数帯にあるすべての周波数ビンが量子化されることは保証されない。これは特に、1周波数帯当たりの量子化されるパルスの数が比較的少ない低ビットレートの場合にそうである。そのような量子化されていないビンに起因する可聴アーチファクトの出現を防ぐために、何らかのノイズを付加してそれらの空白を埋める。低いビットレートでは、挿入されたノイズではなく量子化されたパルスがスペクトルの大半を占めるので、ノイズスペクトルの振幅は、パルスの振幅の何分の1かにしか相当しない。スペクトル中の付加ノイズの振幅は、利用可能なビット配分が低い(より多くのノイズを許す)時に大きくなり、利用可能なビット配分が大きい時には小さくなる。
【0032】
周波数領域符号化モードでは、周波数帯ごとに利得を算出して、非量子化信号のエネルギーと量子化信号のエネルギーを一致させる。利得はベクトル量子化され、周波数帯ごとに量子化信号に適用される。エンコーダが時間領域のみの符号化モードから時間領域/周波数領域混合型符号化モードにビット割り当てを変更すると、時間領域のみの符号化モードの周波数帯ごとの励振スペクトルエネルギーは、時間領域/周波数領域混合型符号化モードの周波数帯ごとの励振スペクトルエネルギーと一致しない。このエネルギーの不一致は、特に低ビットレートで、切替えによるアーチファクトを生じさせる可能性がある。このビットの再割り当てによって生じる可聴の劣化を軽減するために、周波数帯ごとに長期間の利得を算出し、時間領域符号化モードから時間領域/周波数領域混合型符号化モードに切り替わった後に適用して、数フレームにわたり各周波数帯のエネルギーを補正することができる。
【0033】
周波数領域符号化モードが完了すると、周波数領域励振寄与分を時間領域の励振寄与分の周波数表現(周波数変換)に加算することによって合計励振を求め、その後励振寄与分の合計を変換して時間領域に戻すことにより合計励振を形成する。最後に、LP合成フィルタで合計励振をフィルタリングすることにより、合成信号を算出する。一実施形態では、時間領域の励振寄与分のみを使用してサブフレーム単位でCELP符号化メモリを更新する一方で、合計励振を使用してそれらのメモリをフレーム境界で更新する。別の可能な実装では、時間領域の励振寄与分のみを使用して、サブフレーム単位とフレーム境界の両方でCELP符号化メモリを更新する。その結果、周波数領域の量子化信号がコアCELP層と別個に上層の量子化層を構成する埋め込み構造が得られる。この特定の事例では、適応コードブックの内容を更新するために、常に固定コードブックを使用する。ただし、周波数領域符号化モードは1フレーム全体に適用することができる。この埋め込み方式は、12kbps前後からそれ以上のビットレートに有効である。
【0034】
1)音種類の分類
図1は、拡張CELPエンコーダ100、例えばACELPエンコーダの概略を示す概略ブロック図である。言うまでもなく、同じ概念を使用して他の種類の拡張CELPエンコーダを実装することができる。
図2は、拡張CELPエンコーダ100のより詳細な構造の概略ブロック図である。
【0035】
CELPエンコーダ100は、入力された音信号101(
図1および
図2)のパラメータを分析するプリプロセッサ102(
図1)を備える。
図2を参照すると、プリプロセッサ102は、入力された音信号101のLP分析器201、スペクトル分析器202、開ループピッチ分析器203、および信号分類器204を備える。分析器201および202は、CELP符号化で通常行われるLPおよびスペクトル分析を行う。これについては、例えばITU-T勧告G.718の項6.4および6.1.4に記載されており、したがって本開示ではこれ以上説明しない。
【0036】
プリプロセッサ102は、例えば参考文献[T.Vaillancourt et al., "Inter-tone noise reduction in a low bit rate CELP decoder," Proc. IEEE ICASSP, Taipei, Taiwan, Apr. 2009, pp. 41 13-16]に記載されるのと同様にして、または他の信頼できる音声/非音声の判別方法により、第1レベルの分析を行って、入力された音信号101を音声と非音声(一般的なオーディオ(音楽や残響音声))に分類する。上記参考文献は、参照により全内容が本明細書に組み込まれる。
【0037】
この第1レベルの分析の後、プリプロセッサ102は入力信号パラメータの第2レベルの分析を行って、強い非音声特性を持つが時間領域の手法で符号化した方がよい音信号に時間領域のCELP符号化(周波数領域の符号化を用いない)を使用できるようにする。エネルギーの重大な変動が発生すると、この第2レベルの分析において、CELPエンコーダ100はメモリレス時間領域符号化モードに切り替わることができる。このモードは、参考文献[Eksler, V., and Jelinek, M.(2008), "Transition mode coding for source controlled CELP codecs", IEEE Proceedings of International Conference on Acoustics, Speech and Signal Processing, March-April, pp. 4001-40043]では一般に「遷移モード(Transition Mode)」と呼ばれている。参考文献の全内容は参照により本明細書に組み込まれる。
【0038】
この第2レベルの分析時に、信号分類器204は、開ループのピッチ分析器203から得られる開ループのピッチ相関の平滑化されたバージョンc
stの変動σc、現在の合計フレームエネルギーE
tot、および現在の合計フレームエネルギーと直前の合計フレームエネルギーとの差分E
diffを計算し、使用する。初めに、平滑化された開ループピッチ相関の変動を以下のように算出し、
【0040】
c
stは、
c
st=0.9・c
ol+0.1・c
st
と定義される平滑化された開ループのピッチ相関である。
c
olは、例えばITU-T勧告G.718、項6.6に記載される、CELP符号化技術の当業者に知られる方法を使用して分析器203で計算された開ループのピッチ相関であり、
【0042】
は、平滑化された開ループのピッチ相関c
stの直近の10フレームにわたる平均であり、
σcは、平滑化された開ループのピッチ相関の変動である。
【0043】
第1レベルの分析の際に、信号分類器204がフレームを非音声に分類すると、信号分類器204が下記の検証を第2レベルの分析で行って、時間領域/周波数領域混合型符号化モードを使用することが本当に安全であるかどうかを判断する。ただし、時間領域符号化モードの前処理機能で推定された時間領域手法の1つを使用して、現在のフレームを時間領域符号化モードのみで符号化する方がよい場合がある。特に、メモリレス時間領域符号化モードを使用して、時間領域/周波数領域混合型符号化モードによって生じる可能性のあるプリエコーを最小に低減する方がよい場合もある。
【0044】
時間領域/周波数領域混合型符号化を使用すべきかどうかについての第1の検証として、信号分類器204は、現在の合計フレームエネルギーと直前のフレームの合計エネルギーとの差分を計算する。現在の合計フレームエネルギーE
totと直前のフレーム合計エネルギーとの差E
diffが6dBより高い場合は、入力された音信号中にいわゆる「一時的アタック」があることに相当する。そのような状況では、音声/非音声の決定および選択された符号化モードを上書きし、メモリレス時間領域符号化モードを強制する。より具体的には、拡張CELPエンコーダ100は、時間のみ/時間-周波数符号化選択器103(
図1)を備え、選択器103自体は、音声/一般オーディオ選択器205(
図2)、一時的アタック検出器208(
図2)、およびメモリレス時間領域符号化モードの選択器206を備える。すなわち、選択器205で非音声信号(一般オーディオ)と判定され、検出器208で入力された音信号中の一時的アタックが検出されると、選択器206は閉ループCELP符号器207(
図2)に強制的にメモリレス時間領域符号化モードを使用させる。閉ループCELP符号器207は、
図1の時間領域専用符号器104の一部を形成する。
【0045】
第2の検証として、現在の合計フレームエネルギーE
totと直前のフレームの合計エネルギーの差E
diffが6dB以下であるが、
-平滑化された開ループのピッチ相関C
stが0.96より高いか、または
-平滑化された開ループのピッチ相関C
stが0.85より高く、かつ現在の合計フレームエネルギーE
totと直前のフレームの合計エネルギーとの差E
diffが0.3dB未満であるか、または
-平滑化された開ループのピッチ相関σcの変動が0.1未満であり、かつ現在の合計フレームエネルギーE
totと直前のフレーム合計エネルギーの差E
diffが0.6dB未満であるか、または
-現在の合計フレームエネルギーE
totが20dB未満であり、
それが、第1レベルの分析の決定を変更しようとする少なくとも2番目の連続したフレーム(cnt≧2)である場合は、音声/一般オーディオ選択器205は、現在のフレームは、閉ループの汎用CELP符号器207(
図2)を使用して、時間領域のみのモードを使用して符号化することを決定する。
【0046】
そうでない場合、時間/時間-周波数符号化選択器103は、以下の説明で開示される時間領域/周波数領域混合型符号化装置によって行われる時間領域/周波数領域混合型符号化モードを選択する。
【0047】
これは、例えば非音声の音信号が音楽である場合には、以下の擬似コードで要約することができる。
【0051】
として表される現在のフレームエネルギーであり、(x(i)は、フレーム中の入力された音信号のサンプルを表し)、E
diffは、現在の合計フレームエネルギーE
totと直前のフレームの合計エネルギーの差である。
【0052】
2)サブフレーム長の決定
典型的なCELPでは、入力された音信号サンプルは10〜30msのフレーム単位で処理され、それらのフレームを、適応コードブックおよび固定コードブックの分析のために数個のサブフレームに分割する。例えば、20msのフレーム(内部サンプリング周波数が12.8kHzの場合は256サンプル)を使用することができ、4つの5msサブフレームに分割することができる。可変のサブフレーム長は、1つの符号化モードへの時間領域と周波数領域の完全な統合を実現するために使用される機能である。サブフレーム長は、典型的な4分の1フレーム長から、2分の1フレーム、または1フレーム長全体まで変化させることができる。言うまでもなく、別の数のサブフレーム(サブフレーム長)の使用を実装することができる。
【0053】
サブフレームの長さ(サブフレーム数)、すなわち時間サポートの決定は、利用可能なビットレートおよびプリプロセッサ102における入力信号の分析、特に分析器209による入力された音信号101の高域周波数のスペクトル動特性、および分析器203から得られる平滑化された開ループのピッチ相関を含む開ループのピッチ分析に基づいて、サブフレーム数の計算器210によって決定される。分析器209は、スペクトル分析器202からの情報に応答して、入力信号101の高域周波数のスペクトル動特性を求める。スペクトル動特性は、そのノイズフロアが入力スペクトル動特性の表現を持たない入力スペクトルとして、ITU-T勧告G.718、項6.7.2.2に記載される機能で算出される。4.4kHz〜6.4kHzの周波数帯における入力された音信号101の分析器209で判定された平均スペクトル動特性が9.6dB未満であり、最後のフレームが高いスペクトル動特性を有すると見なされた場合、入力信号101は、高域周波数に高いスペクトル動特性成分を有するとは見なされなくなる。その場合は、時間領域符号化モードにより多くのサブフレームを追加するか、または周波数領域寄与分の低域周波数部分のパルスを強制的に増やすことにより、例えば4kHz未満の周波数により多くのビットを割り当てることができる。
【0054】
一方、分析器209による判定で高いスペクトル動特性を有すると見なされなかった最後のフレームの平均スペクトル動特性と比べた、入力信号101の高域周波数成分の平均動特性の増加が、例えば4.5dBより大きい場合は、入力された音信号101は、例えば4kHzを超える高いスペクトル動的成分を有すると見なされる。その場合は、利用可能なビットレートに応じて、入力された音信号101の高域周波数を符号化するためにいくらかの追加的なビットを使用して、1つまたは複数の周波数パルスの符号化を可能にする。
【0055】
計算器210(
図2)で決定されるサブフレーム長は、利用可能なビット配分にも依存する。非常に低いビットレート、例えば9kbps未満のビットレートでは、時間領域符号化には1つのサブフレームしか利用することができず、そうでないと、周波数領域符号化に利用可能なビット数が不十分になる。中間ビットレート、例えば9kbps〜16kbpsのビットレートでは、高域周波数が高い動的スペクトル成分を含んでいる場合には1サブフレームが使用され、そうでない場合には2サブフレームが使用される。中間から高いビットレート、例えば16kbps前後からそれ以上のビットレートでは、「音種類の分類」の項の段落[0031]で定義した平滑化された開ループのピッチ相関C
stが0.8より高ければ、4サブフレームの事例も利用可能になる。
【0056】
1つまたは2つのサブフレームの場合は、時間領域符号化が適応コードブックの寄与分(符号化ピッチ遅延およびピッチ利得を含む)のみに制限される。すなわちその場合は固定コードブックは使用されないのに対して、4サブフレームの場合は、利用可能なビット配分が十分であれば、適応型および固定コードブックの寄与分が可能となる。4サブフレームの事例は、16kbps前後から可能になる。ビット配分の制約のために、時間領域励振は、低ビットレートでは適応コードブックの寄与分のみからなる。高いビットレート、例えば24kbps以上のビットレートでは、単純な固定コードブックの寄与分を追加することができる。すべての事例で、事後に時間領域符号化の効率性を評価して、どの周波数までそのような時間領域符号化が有用であるかを判断する。
【0057】
3)閉ループのピッチ分析
時間領域/周波数領域混合型符号化モードを使用する場合は、必要であれば固定型代数コードブックの検索を伴う閉ループのピッチ分析を行う。そのために、CELPエンコーダ100(
図1)は、時間領域励振寄与分の計算器(
図1および
図2)105を備える。この計算器はさらに分析器211(
図2)を備え、分析器211は、開ループピッチ分析器203で行われる開ループのピッチ分析と、計算器210で行われるサブフレーム長(すなわち1フレーム中のサブフレーム数)の決定に応じて、閉ループのピッチ分析を行う。閉ループのピッチ分析は当業者にはよく知られており、実装の一例が例えば参考文献[ITU-T G.718 Recommendation; Section 6.8.4.1.4.1]に記載される。上記参考文献は、参照により全内容が本明細書に組み込まれる。閉ループのピッチ分析の結果、適応コードブックパラメータとも呼ばれるピッチパラメータが算出され、このパラメータは主としてピッチ遅延(適応コードブックインデックスT)およびピッチ利得(または適応コードブック利得b)からなる。適応コードブックの寄与分は通常は、遅延Tにおける過去の励振か、またはそれを補間したバージョンである。適応コードブックインデックスTを符号化し、遠隔のデコーダに送信する。ピッチ利得bも量子化し、遠隔のデコーダに送信する。
【0058】
閉ループのピッチ分析が完了すると、CELPエンコーダ100は、通常は固定コードブックインデックスおよび固定コードブック利得からなる最良の固定コードブックパラメータを見つけるために検索される固定コードブック212を備える。固定コードブックのインデックスおよび利得が固定コードブックの寄与分を形成する。固定コードブックインデックスを符号化し、遠隔のデコーダに送信する。固定コードブック利得も量子化し、遠隔のデコーダに送信する。固定代数コードブックとその検索はCELP符号化技術の当業者によく知られているものと思われ、そのため本開示ではこれ以上説明しない。
【0059】
適応コードブックのインデックスおよび利得ならびに固定コードブックのインデックスおよび利得が、時間領域のCELP励振寄与分を形成する。
【0060】
4)対象信号の周波数変換
時間領域/周波数領域混合型符号化モードの周波数領域符号化の際には、変換領域、例えば周波数領域で2つの信号を表す必要がある。一実施形態では、時間から周波数への変換は、256点タイプII(またはタイプIV)のDCT(離散コサイン変換)を使用して実現することができ、12.8kHzの内部サンプリング周波数で25Hzの分解能を得ることができるが、他の変換を使用することもできる。別の変換を使用する場合は、周波数の分解能(上記で定義した)、周波数帯の数および1band当たりの周波数ビンの数(さらに下記で定義する)をそれに応じて変更する必要がある可能性もある。この点に関して、CELPエンコーダ100は、分析器201による入力された音信号のLP分析で得られた入力LP残差r
es(n)に応じて周波数領域励振寄与分を計算する計算器107(
図1)を備える。
図2に示すように、計算器107は、DCT213、例えば入力LP残差r
es(n)のタイプIIのDCTを計算することができる。CELPエンコーダ100は、時間領域の励振寄与分の周波数変換の計算器106(
図1)も備える。
図2に示すように、計算器106は、時間領域の励振寄与分のDCT214、例えばタイプIIのDCTを計算することができる。入力LP残差f
resおよび時間領域のCELP励振寄与分f
excの周波数変換は、以下の式を使用して計算することができる。
【0064】
式中、r
es(n)は入力LP残差であり、e
td(n)は時間領域の励振寄与分であり、Nはフレーム長である。可能な実装では、対応する12.8kHzの内部サンプリング周波数の場合、フレーム長は256サンプルである。時間領域の励振寄与分は以下の関係により与えられる。
e
td(n)=bv(n)+gc(n)
【0065】
式中、v(n)は適応コードブックの寄与分であり、bは適応コードブック利得であり、c(n)は固定コードブックの寄与分であり、gは固定コードブック利得である。時間領域の励振寄与分は、前述で説明したように、適応コードブックの寄与分のみからなる場合があることに留意されたい。
【0066】
5)時間領域寄与分のカットオフ周波数
一般的なオーディオサンプルでは、時間領域の励振寄与分(適応型および/または固定型代数コードブックの組み合わせ)は、周波数領域の符号化と比べると、符号化の向上に常に大きく貢献するという訳ではない。しばしば、スペクトルの低い部分の符号化は改善するが、スペクトルの高い部分の改善は最小にとどまる。CELPエンコーダ100は、時間領域の励振寄与分で得られる符号化の向上が低くて有用性を失う周波数であるカットオフ周波数の発見器およびフィルタ108(
図1)を備える。発見器およびフィルタ108は、
図2のカットオフ周波数の計算器215とフィルタ216を備える。初めに、各周波数帯の計算器107で得られる周波数変換された入力LP残差と、計算器106で得られる周波数変換された時間領域の励振寄与分(上記の項4で定義したようにそれぞれf
resおよびf
excと表記する)との正規化相互相関の算出器303(
図3および
図4)を使用して、時間領域の励振寄与分のカットオフ周波数を計算器215(
図2)で推定する。例えば16個の周波数帯それぞれに含まれる最後の周波数L
fをHz単位で以下のように定義する。
【0068】
説明のための本例では、12.8kHzのサンプリング周波数で20msフレームの場合に、1周波数帯当たりの周波数ビンの数B
b、1周波数帯当たりの累積周波数ビンC
Bb、および1周波数帯ごとの正規化相互相関C
C(i)を以下のように定義する。
【0075】
B
bは、1周波数帯B
b当たりの周波数ビンの数であり、C
Bbは、1周波数帯当たりの累積周波数ビンであり、
【0077】
は周波数帯ごとの正規化された相互相関であり、
【0079】
は周波数帯の励振エネルギーであり、同様に
【0081】
は1周波数帯当たりの残余エネルギーである。
【0082】
カットオフ周波数の計算器215は、異なる周波数帯間の相互相関ベクトルを平滑化するためにいくつかの動作を行う、周波数帯間の相互相関の平滑器304(
図3および
図4)を備える。より具体的には、周波数帯間の相互相関の平滑器304は、下記の関係を使用して新しい相互相関ベクトル
【0086】
ここで、α=0.95、δ=(1-α)、N
b=13、β=δ/2である
【0087】
カットオフ周波数の計算器215はさらに、最初のN
b個の周波数帯(Nb=13であり、5575Hzに相当する)にわたる新しい相互相関ベクトル
【0089】
の平均を計算する計算器305(
図3および
図4)を備える。
【0090】
カットオフ周波数の計算器215はカットオフ周波数モジュール306(
図3)も備え、モジュール306は、相互相関の制限器406(
図4)、相互相関の正規化器407、および相互相関が最も低い周波数を見つける発見器408を含む。より具体的には、制限器406は、相互相関ベクトルの平均を0.5の最小値に制限し、正規化器408は、制限された相互相関ベクトルの平均を0〜1の間に正規化する。発見器408は、1つの周波数帯L
fの最後の周波数と、相互相関ベクトル
【0094】
に入力された音信号のスペクトルの幅F/2を乗算した値との差を最小にする周波数帯L
fの最後の周波数を見つけることにより、カットオフ周波数の第1の推定値を得る。
【0099】
は、カットオフ周波数の第1の推定値である。
【0102】
が非常に高くなることが全くない場合、または
【0104】
の値を人為的に増大して時間領域の寄与分に多少多くの重みを与えたい場合には、
【0106】
の値を固定の倍率、例えば8kbps未満のビットレートで増すことが可能であり、例示的実装では
【0109】
カットオフ周波数の精度は、下記の構成要素を算出に追加することによって上げることができる。そのために、カットオフ周波数の計算器215は、下記の関係を使用してすべてのサブフレームの時間領域の励振寄与分の最小または最低のピッチ遅延値から算出される第8高調波の外挿器410(
図4)を備える。
【0111】
F
s=12800Hzであり、N
subはサブフレームの数であり、T(i)はサブフレームiの適応コードブックインデックスまたはピッチ遅延である。
【0112】
カットオフ周波数の計算器215は、第8高調波
【0114】
が位置する周波数帯を見つける発見器409(
図4)も備える。より具体的には、すべてのi<N
bについて、発見器409は、以下の不等式がなお成立する最も高い周波数帯を探す。
【0118】
と呼び、これは、第8高調波が位置する可能性が高い周波数帯を示す。
【0119】
カットオフ周波数の計算器215は、最後に、最終的なカットオフ周波数f
tcの選択器411(
図4)を備える。より具体的には、選択器411は、下記の関係を使用して、発見器408から得られるカットオフ周波数の第1の推定値f
tc1と、第8高調波が位置する周波数帯の最後の周波数
【0123】
図3および
図4に示すように、
- カットオフ周波数の計算器215はさらに、ゼロにする周波数ビンの数の決定器307(
図3)を備え、決定器307自体は、パラメータの分析器415(
図4)、およびゼロにする周波数ビンの選択器416(
図4)を含む。
- 周波数領域で動作するフィルタ216(
図2)は、ゼロにすることが決定された周波数ビンをゼロにするゼロ化器308(
図3)を備える。ゼロ化器は、すべての周波数ビンをゼロにする(
図4のゼロ化器417)か、または(
図4のフィルタ418)滑らかな遷移領域が補われたカットオフ周波数f
tcより上に位置する高域周波数ビンの一部のみをゼロにすることができる。遷移領域は、カットオフ周波数f
tcより上で、かつゼロにされるビンより下に位置し、f
tcより下の無変更のスペクトルと、高域周波数のゼロにされたビンとの間が滑らかにスペクトル遷移するようにする。
【0124】
説明のための本例では、選択器411で選択されたカットオフ周波数f
tcが775Hz以下の場合、分析器415は、時間領域の励振寄与分のコストが高すぎると見なす。選択器416は、時間領域の励振寄与分の周波数表現のすべての周波数ビンをゼロにするために選択し、ゼロ化器417ですべての周波数ビンを強制的にゼロにすると共に、カットオフ周波数f
tcも強制的にゼロにする。そして、時間領域の励振寄与分に割り当てられたすべてのビットを周波数領域符号化モードに割り当て直す。そうでない場合は、分析器415は、ゼロ化器418でゼロにするために、カットオフ周波数f
tcより高い高域周波数ビンを強制的に選択器416に選択させる。
【0125】
最後に、カットオフ周波数の計算器215は、カットオフ周波数f
tcをそのカットオフ周波数の量子化されたバージョンf
tcQに変換するカットオフ周波数の量子化器309(
図3および
図4)を備える。カットオフ周波数パラメータに3ビットが関連付けられている場合、出力値の可能な集合は以下のように定義することができる(単位:Hz)。
f
tcQ-{0,1175,1575,1975,2375,2775,3175,3575}
【0126】
最終的なカットオフ周波数f
tcの選択を安定させて、量子化されたバージョンf
tcQが不適当な信号セグメント内で0と1175の間で切り替わることを防ぐために多くの機構を使用することができる。これを実現するために、本例示的実装における分析器415は、閉ループのピッチ分析器211(
図2)から得られる長期の平均ピッチ利得G
lt412、開ループのピッチ分析器203から得られる開ループの相関C
ol413、および平滑化された開ループの相関C
stに応答することができる。完全に周波数のみの符号化に切り替わるのを防ぐために、下記の条件が満たされる時には、分析器415は周波数のみの符号化を許可しない。すなわちf
tcQは0に設定することができない。
f
tc>2375Hz
または
f
tc>1175HzかつC
ol>0.7かつG
lt≧0.6
または
f
tc≧1175HzかつC
st>0.8かつG
lt≧0.4
または
f
tcQ(t-1)!=0かつC
ol>0.5かつC
st>0.5かつG
lt≧0.6
【0127】
C
olは開ループのピッチ相関413であり、C
stは、C
st=0.9・C
ol+0.1・C
stと定義される開ループのピッチ相関414の平滑化されたバージョンに相当する。さらに、G
lt(
図4の項目412)は、時間領域の励振寄与分内で閉ループのピッチ分析器211で取得されたピッチ利得の長期平均に相当する。ピッチ利得の長期平均412は、
【0131】
は現在のフレームにわたる平均ピッチ利得である。周波数領域のみの符号化と時間領域/周波数領域混合型符号化の間で切り替わる率をさらに下げるために、ハングオーバーを追加することができる。
【0132】
6)周波数領域の符号化
差分ベクトルの生成
時間領域の励振寄与分のカットオフ周波数を定義すると、周波数領域符号化が行われる。CELPエンコーダ100は減算器または計算器109(
図1、
図2、
図5、および
図6)を備え、計算器109は、DCT213(
図2)で得られる入力LP残差の周波数変換f
res502(
図5および
図6)(または他の周波数表現)と、DCT214(
図2)で得られる、ゼロから時間領域の励振寄与分のカットオフ周波数f
tcまでの時間領域の励振寄与分の周波数変換f
exc501(
図5および
図6)(または他の周波数表現)との差で、差分ベクトルf
dの第1の部分を形成する。縮小係数603(
図6)を次の遷移領域f
trans=2kHz(この実装例では80個の周波数ビン)のために周波数変換f
exc501に適用してから、周波数変換f
resのそれぞれのスペクトル部分から減算する。減算の結果が、カットオフ周波数f
tcからf
tc+f
transまでの周波数範囲に相当する差分ベクトルf
dの第2の部分を構成する。ベクトルf
dの残りの第3の部分には、入力LP残差の周波数変換f
res502を使用する。縮小係数603の適用で得られるベクトルf
dの縮小された部分は、任意種のフェードアウト機能で行うことができ、数個のみの周波数ビンに短縮することができるが、カットオフ周波数f
tcが変化している時に利用可能なビット配分がエネルギー振動アーチファクトを防止するのに十分であると判断される場合は省略することも可能である。例えば、12.8kHzの場合に256点DCTで1周波数ビンf
bin=25Hzに相当する25Hzの分解能では、差分ベクトルは
【0135】
f
res、f
exc、およびf
tcは、上記項4および5で定義している。
【0136】
周波数パルスの検索
CELPエンコーダ100は、差分ベクトルf
dの周波数量子化器110(
図1および
図2)を備える。差分ベクトルf
dは、いくつかの方法を使用して量子化することができる。いずれの場合も、周波数パルスを探し、量子化しなければならない。可能な単純な方法の1つでは、周波数領域符号化は、スペクトル全体で差分ベクトルf
dの最もエネルギーが高いパルスの検索を含む。パルス検索の方法は、スペクトルを複数の周波数帯に分割し、周波数帯ごとに一定数のパルスを許可するという単純なものとすることができる。周波数帯ごとのパルスの数は、利用可能なビット配分と、スペクトル内での周波数帯の位置に応じて決まる。通例は、低域周波数により多くのパルスが割り当てられる。
【0137】
量子化された差分ベクトル
利用可能なビットレートに応じて、種々の技術を使用して周波数パルスの量子化を行うことができる。一実施形態では、12kbps未満のビットレートでは、単純な検索および量子化方式を使用してパルスの位置および正負符号を符号化することができる。この方式について以下で説明する。
【0138】
例えば3175Hzより低い周波数では、この単純な検索および量子化方式では、階乗パルス符号化(FPC)に基づく手法を使用する。FPCについては文献、例えば参考文献[Mittal, U., Ashley, J.P., and Cruz-Zeno, E.M.(2007), "Low Complexity Factorial Pulse Coding of MDCT Coefficients using Approximation of Combinatorial Functions", IEEE Proceedings on Acoustic, Speech and Signals Processing, Vol. 1, April, pp. 289-292]に記載される。上記参考文献は、参照により全内容が本明細書に組み込まれる。
【0139】
より具体的には、選択器504(
図5および
図6)が、全スペクトルをFPCを使用して量子化しないことを決定する。
図5に示すように、FPC符号化とパルス位置および正負符号の符号化が符号器506で行われる。
図6に示すように、符号器506は周波数パルスの検索器609を備える。検索は、3175Hzより低い周波数を求めてすべての周波数帯に行われる。次いでFPC符号器610が周波数パルスを処理する。符号器506は、3175Hz以上の周波数について最もエネルギーの高いパルスを見つける発見器611、および、見つかった最もエネルギーが高いパルスの位置と正負符号を量子化する量子化器612も備える。1つの周波数帯で1つ以上のパルスが許される場合は、先に見つかったパルスの振幅を2で割り、その周波数帯全体に再度検索を行う。パルスが見つかるたびに、その位置および正負符号が量子化とビットパッキング段階のために記憶される。以下の擬似コードは、この単純な検索および量子化方式を説明するものである。
【0141】
N
BDは周波数帯の数(本例ではN
BD=16)、N
pは周波数帯kで符号化されるパルスの数であり、B
bは1周波数帯B
b当たりの周波数ビンの数であり、C
Bbは上記項5で定義した1周波数帯当たりの累積周波数ビンであり、
【0143】
は見つかったパルス位置を含むベクトルを表し、
【0145】
は、見つかったパルスの正負符号を含むベクトルを表し、Pmaxπp
maxは見つかったパルスのエネルギーを表す。
【0146】
12kbpsより高いビットレートでは、選択器504は、FPCを使用してすべてのスペクトルを量子化すると決定する。
図5に示すように、FPC符号化は符号器505で行われる。
図6に示すように、符号器505は周波数パルスの検索器607を備える。検索は全周波数帯に行われる。そして、FPC処理器610が見つかった周波数パルスをFPC符号化する。
【0147】
次いで、見つかった各位置p
pに、パルス正負符号p
sを有するパルスの数nb_pulsesを足すことにより、量子化された差分ベクトルf
dQを得る。周波数帯ごとに、以下の擬似コードで量子化差分ベクトルf
dQを表すことができる。
for j=0,..., j<nb_pulses
f
dQ(p
p(j))+=p
s(j)
【0148】
ノイズの埋め込み
精度の差はあるもののすべての周波数帯が量子化される。前項で説明した量子化方法では、周波数帯内にあるすべての周波数ビンが量子化されることは保証されない。これは特に1周波数帯当たりの量子化されるパルスの数が比較的少ない低ビットレートの場合にそうである。そのような量子化されていないビンに起因する可聴アーチファクトの出現を防止するために、ノイズ付加器507(
図5)でそのような空白に何らかのノイズを付加する。このノイズの付加は、例えば12kbps未満のビットレートではすべてのスペクトルに行われるが、高ビットレートの場合は時間領域の励振寄与分のカットオフ周波数f
tcより上だけに適用することができる。単純化のために、ノイズの強度は利用可能なビットレートのみに応じて変動するとする。高いビットレートでは、ノイズレベルは低いが、低ビットレートではノイズレベルは高くなる。
【0149】
ノイズ付加器504は、付加ノイズの強度またはエネルギーレベルが推定器614で決定された後、かつ周波数ごとの利得が算出器615で決定される前に量子化差分ベクトルf
dQにノイズを付加する加算器613(
図6)を備える。この例示的実施形態では、ノイズレベルは符号化ビットレートに直接関係する。例えば、6.60kbpsでは、ノイズレベルN
Lは、特定の周波数帯内で符号化されたスペクトルパルスの振幅の0.4倍であり、そこから漸減して、24kbpsでは周波数帯内で符号化されたスペクトルパルスの振幅0.2倍の値になる。ノイズは、一定数の連続した周波数ビンのエネルギーが非常に低いスペクトル区間のみに付加され、例えば、エネルギーが非常に低い連続したビンの数N
zがその周波数帯に含まれるビンの数の半分である時に付加される。特定の周波数帯iについて、ノイズは以下のように注入される。
【0151】
周波数帯iについて、C
Bbは1周波数帯当たりのビンの累積数であり、B
bは特定の周波数帯iにあるビンの数であり、N
Lはノイズレベルであり、r
andは-1から1の間に制限された乱数生成器である。
【0152】
7)周波数帯ごとの利得の量子化
周波数量子化器110は、周波数帯ごとの利得の計算器615(
図6)および計算された周波数帯ごとの利得の量子化器616(
図6)を含む周波数帯ごとの利得計算器/量子化器508(
図5)を備える。必要な場合はノイズの埋め込みを含んでいる量子化された差分ベクトルf
dQが見つかると、計算器615は各周波数帯の周波数帯ごとの利得を算出する。特定周波数帯の周波数帯ごとの利得G
b(i)は、対数領域における量子化されていない差分ベクトルf
d信号のエネルギーと、量子化された差分ベクトルf
dQのエネルギーとの対数領域として次のように定義される。
【0154】
C
BbおよびB
bは上記項5で定義している。
【0155】
図5および
図6の実施形態では、周波数帯ごとの利得量子化器616は、周波数帯ごとの周波数利得をベクトル量子化する。ベクトル量子化の前に、低ビットレートでは、最後の利得(最後の周波数帯に対応する)を別に量子化し、残りのすべての15個の利得を量子化された最後の利得で割る。次いで、正規化された残りの15個の利得がベクトル量子化される。高いビットレートでは、周波数帯ごとの利得の平均値が初めに量子化され、次いで、例えば16個の周波数帯のすべての周波数帯ごとの利得から、それらの周波数帯ごとの利得がベクトル量子化される前にその平均値が除去される。使用するベクトル量子化は、周波数帯ごとの利得を含んでいるベクトルと、特定のコードブックの項目との間の距離の対数領域における標準的な最小化とすることができる。
【0156】
周波数領域符号化モードでは、利得は、量子化されていないベクトルf
dのエネルギーを量子化されたベクトルf
dQに一致させるように、周波数帯ごとに計算器615で算出される。利得は量子化器616でベクトル量子化され、周波数帯ごとに乗算器509(
図5および
図6)を通じて量子化ベクトルf
dQに適用される。
【0157】
あるいは、周波数帯の一部のみを量子化のために選択することにより、スペクトル全体について12kbps未満のビットレートでFPC符号化方式を使用することも可能である。周波数帯の選択を行う前に、量子化されていない差分ベクトルf
dの周波数帯のエネルギーE
dを量子化する。このエネルギーは次のように算出される。
【0159】
C
BbおよびB
bは上記の項5で定義している。
【0160】
周波数帯エネルギーE
dの量子化を行うために、まず、使用する16個の周波数帯のうち最初の12個の周波数帯の平均エネルギーを量子化し、16個すべての周波数帯のエネルギーから減算する。そして、すべての周波数帯を、3つまたは4つの周波数帯からなるグループごとにベクトル量子化する。使用するベクトル量子化は、周波数帯ごとの利得を含んでいるベクトルと、特定のコードブックの項目との間の距離の対数領域における標準的な最小化とすることができる。十分なビットが利用可できない場合は、最初の12個の周波数帯のみを量子化し、先行する3つの周波数帯の平均を使用するか、または他の方法により最後の4周波数帯を外挿することが可能である。
【0161】
量子化されていない差分ベクトルの周波数帯のエネルギーが量子化されると、デコーダ側で複製できるようにエネルギーを降順に並べ替えることが可能になる。この並べ替えの時に、2kHz未満のすべてのエネルギー帯を常に維持し、最もエネルギーが高い周波数帯のみをパルス振幅および正負符号の符号化のためにFPCに渡す。この手法では、FPC方式で符号化されるベクトルは小さくなるが、より広い周波数範囲が対象となる。すなわち、全スペクトルにわたって重要なエネルギー事象をカバーするのに必要なビットが少なくて済む。
【0162】
パルス量子化の工程後、上記と同様のノイズの埋め込みが必要となる。そして、量子化された差分ベクトルf
dQのエネルギーE
dQを量子化されていない差分ベクトルf
dの量子化されたエネルギーE'
dに一致させるように、周波数帯ごとに利得調整係数G
aを算出する。そして、その周波数帯ごとの利得調整係数を量子化された差分ベクトルf
dQに適用する。
G
a(i)=10
E'd(i)-EdQ(i)
ここで
【0164】
E'
dは、上記で定義したように、量子化されていない差分ベクトルf
dの周波数帯ごとの量子化されたエネルギーである。
【0165】
周波数領域符号化段階が完了すると、加算器111(
図1、
図2、
図5および
図6)で、フィルタリング後の周波数変換された時間領域の励振寄与分f
excFに、周波数量子化された差分ベクトルf
dQを合計することにより、合計の時間領域/周波数領域励振を求める。拡張CELPエンコーダ100がビット割り当てを時間領域のみの符号化モードから時間領域/周波数領域混合型符号化モードに変更すると、時間領域のみの符号化モードの周波数帯当たりの励振スペクトルエネルギーは、時間領域/周波数領域混合型符号化モードの1周波数帯当たりの励振スペクトルエネルギーと一致しない。このエネルギーの不一致により、低ビットレートでより聞こえやすい切替えアーチファクトが生じる可能性がある。このビットの再割り当てで生じる可聴の劣化を低減するために、周波数帯ごとに長期の利得を算出し、再割り当て後に合計励振に適用して、数フレームにわたって各周波数帯のエネルギーを補正することができる。そして、周波数量子化された差分ベクトルf
dQと、周波数変換され、フィルタリングされた時間領域の励振寄与分f
excFとの和を、例えばIDCT(逆DCT)220からなる変換器112(
図1、
図5、および
図6)で変換して時間領域に戻す。
【0166】
最後に、IDCT220で得られる合計励振信号をLP合成フィルタ113(
図1および
図2)でフィルタリングすることにより、合成信号を算出する。
【0167】
周波数量子化された差分ベクトルf
dQと、周波数変換され、フィルタリングされた時間領域の励振寄与分f
excFとの和は、遠隔のデコーダ(図示せず)に送信される時間領域/周波数領域混合型励振を形成する。遠隔のデコーダも、例えばIDCT(逆DCT)220を使用して時間領域/周波数領域混合型励振を変換して時間領域に戻す変換器112を備える。最後に、IDCT220で得られる合計励振信号をフィルタリングすることにより、すなわち時間領域/周波数領域混合型励振をLP合成フィルタ113(
図1および
図2)でフィルタリングすることにより、デコーダで合成信号が算出される。
【0168】
一実施形態では、時間領域の励振寄与分のみを使用してサブフレーム単位でCELP符号化メモリを更新する一方で、合計励振を使用してそれらのメモリをフレーム境界で更新する。別の可能な実装では、時間領域の励振寄与分のみを使用して、サブフレーム単位でCELP符号化メモリを更新すると共にフレーム境界でも更新する。その結果、周波数領域の量子化された信号がコアCELP層と別に上層の量子化層を構成する埋め込み構造が得られる。これは、特定の応用例で利点がある。この特定の事例では、固定コードブックを常に使用して良好な知覚的品質を維持し、同じ理由からサブフレーム数は常に4とする。ただし、周波数領域分析をフレーム全体に適用することができる。この埋め込み型の手法は、12kbps前後からそれ以上のビットレートに有効である。
【0169】
上述の開示は、非制限的な例示的実施形態に関し、それらの実施形態は、付記の特許請求の範囲内で任意に変更を加えることができる。