(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-06
(45)【発行日】2023-03-14
(54)【発明の名称】CELPコーデックにおいてビット配分を効率的に分配するための方法およびデバイス
(51)【国際特許分類】
G10L 19/16 20130101AFI20230307BHJP
G10L 19/035 20130101ALI20230307BHJP
G10L 19/008 20130101ALI20230307BHJP
G10L 21/038 20130101ALI20230307BHJP
【FI】
G10L19/16 100Z
G10L19/035 B
G10L19/008
G10L21/038
(21)【出願番号】P 2020516513
(86)(22)【出願日】2018-09-20
(86)【国際出願番号】 CA2018051176
(87)【国際公開番号】W WO2019056108
(87)【国際公開日】2019-03-28
【審査請求日】2021-09-17
(32)【優先日】2017-09-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504226412
【氏名又は名称】ヴォイスエイジ・コーポレーション
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ヴァーツラフ・エクスレル
【審査官】大石 剛
(56)【参考文献】
【文献】特開平10-207496(JP,A)
【文献】特表2006-502426(JP,A)
【文献】特表2009-524099(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G10L 19/16
G10L 19/035
G10L 19/008
G10L 21/038
(57)【特許請求の範囲】
【請求項1】
音響信号をエンコードするためのエンコーダまたは音響信号をデコードするためのデコーダのCELPコアモジュールの複数の第1の
CELPコアモジュール部分にビット配分を割り振る
ためのビット配分割振方法であって、
前記第1のCELPコアモジュール部分に個々のビット配分を、複数の中間ビットレートのそれぞれに対して割り当てるビット配分割振テーブルを格納するステップと、
CELPコアモジュールのビットレートを決定するステップと、
前記決定したCELPコアモジュールのビットレートに基づいて前記中間ビットレートのうちの1つを選択するステップと、
前記選択した中間ビットレートについての前記ビット配分割振テーブルによって割り当てられた前記個々のビット配分を、前記第1のCELPコアモジュール部分に割り振るステップと
を含む、ビット配
分割振方法。
【請求項2】
前記CELPコアモジュールが、第2の
CELPコアモジュール部分を含み、前記ビット配分割振方法が、前記選択した中間ビットレートについての前記ビット配分割振テーブルによって割り当てられた前記個々のビット配分を前記第1のCELPコアモジュール部分に割り振った後に残ったビット配分を、前記第2のCELPコアモジュール部分に割り振るステップを含む、請求項1に記載のビット配分割振方法。
【請求項3】
前記第1のCELPコアモジュール部分が、LPフィルタ係数、CELP適応コードブック、CELP適応コードブック利得、およびCELPイノベーションコードブック利得のうちの少なくとも1つを含む、請求項1または2に記載のビット配分割振方法。
【請求項4】
前記第2のCELPコアモジュール部分が、CELPイノベーションコードブックを含む、請求項2に記載のビット配分割振方法。
【請求項5】
前記中間ビットレートのうちの1つを選択するステップが、前記中間ビットレートの、前記CELPコアモジュールのビットレートに最も近い高い方の1つを選択するステップを含む、請求項1から4のいずれか一項に記載のビット配分割振方法。
【請求項6】
前記中間ビットレートのうちの1つを選択するステップが、前記中間ビットレートの、前記CELPコアモジュールのビットレートに最も近い低い方の1つを選択するステップを含む、請求項1から4のいずれか一項に記載のビット配分割振方法。
【請求項7】
前記音響信号の連続フレームの全てのサブフレームの間に前記第2のCELPコアモジュール部分のビット配分を分配するステップを含む、請求項
2又は4に記載のビット配分割振方法。
【請求項8】
CELPコアモジュールおよび補足コーデックモジュールを使用して音響信号をエンコードまたはデコードするための方法であって、
前記補足コーデックモジュールにビット配分を割り振るステップと、
CELPコアモジュールのビット配分を決定するために前記補足コーデックモジュールのビット配分をトータルコーデックのビット配分から減算するステップと、
前記第1のCELPコアモジュール部分に前記CELPコアモジュールのビット配分を割り振るために、請求項1から7のいずれか一項に記載の
ビット配分割振方法を使用するステップであって、前記CELPコアモジュールのビットレートが、前記CELPコアモジュールのビット配分に基づいて決定される、ステップと
を含む、音響信号をエンコードまたはデコードするための方法。
【請求項9】
CELPコアモジュールおよび補足コーデックモジュールを使用して音響信号をエンコードまたはデコードするための方法であって、
コーデックシグナリングに第1のビット配分を割り振るステップと、
前記補足コーデックモジュールに第2のビット配分を割り振るステップと、
CELPコアモジュールのビット配分を決定するために前記第1および第2のビット配分をトータルコーデックのビット配分から減算するステップと、
前記第1のCELPコアモジュール部分に前記CELPコアモジュールのビット配分を割り振るために、請求項1から7のいずれか一項に記載の
ビット配分割振方法を使用するステップであって、前記CELPコアモジュールのビットレートが、前記CELPコアモジュールのビット配分に基づいて決定される、ステップと
を含む、音響信号をエンコードまたはデコードするための方法。
【請求項10】
前記CELPコアモジュールのビットレートを決定するステップが、
CELPコアモジュールシグナリングにビット配分を割り振るステップと、
前記CELPコアモジュールのビットレートを決定する際に使用されるCELPコアモジュール部分のためのビット配分を決定するために、CELPコアモジュールシグナリングビット配分を前記CELPコアモジュールのビット配分から減算するステップと
を含む、請求項8または9に記載の音響信号をエンコードまたはデコードするための方法。
【請求項11】
前記補足コーデックモジュールが、ステレオモジュールおよび帯域幅拡張モジュールのうちの少なくとも1つを備える、請求項8から10のいずれか一項に記載の音響信号をエンコードまたはデコードするための方法。
【請求項12】
(a)前記補足コーデックモジュールに割り振られた前記ビット配分、
及び(b)前記第1のCELPコアモジュール部分に割り振られた前記ビット配分
、を、前記トータルコーデックのビット配分から減算するステップを含む、使われないビット配分を決定するステップを含む、請求項8から11のいずれか一項に記載の音響信号をエンコードまたはデコードするための方法。
【請求項13】
前記第1のCELPコアモジュール部分のうちの少なくとも1つのエンコードに、前記使われないビット配分を割り振るステップを含む、請求項12に記載の音響信号をエンコードまたはデコードするための方法。
【請求項14】
変換ドメインコードブックのエンコードに、前記使われないビット配分を割り振るステップを含む、請求項12に記載の音響信号をエンコードまたはデコードするための方法。
【請求項15】
前記変換ドメインコードブックのエンコードに、前記使われないビット配分を割り振るステップが、前記使われないビット配分の第1の部分を変換ドメインパラメータに割り振るステップ、および前記変換ドメインコードブック内のベクトル量子化器に、前記使われないビット配分の第2の部分を割り振るステップを含む、請求項14に記載の音響信号をエンコードまたはデコードするための方法。
【請求項16】
前記音響信号のフレームのサブフレーム全ての中に、前記使われないビット配分の前記第2の部分を分配するステップを含む、請求項15に記載の音響信号をエンコードまたはデコードするための方法。
【請求項17】
最高のビット配分が、前記フレームの第1のサブフレームに割り振られる、請求項16に記載の音響信号をエンコードまたはデコードするための方法。
【請求項18】
CELPコアモジュールおよび少なくとも1つの補足コーデックモジュールを使用して音響信号をエンコードまたはデコードするための方法であって、前記CELPコアモジュールが、複数のCELPコアモジュール部分を備え、可変のビット配分が、前記CELPコアモジュールに割り振られ、
請求項1から7のいずれか一項に記載の
ビット配分割振方法を使用して、前記可変のCELPコアモジュールのビット配分を前記CELPコアモジュール部分に割り振るステップ
を含む、音響信号をエンコードまたはデコードするための方法。
【請求項19】
音響信号をエンコードするためのエンコーダまたは音響信号をデコードするためのデコーダのCELPコアモジュールの複数の第1の
CELPコアモジュール部分にビット配分を割り振るための
ビット配分割振デバイスであって、
前記第1のCELPコアモジュール部分に個々のビット配分を、複数の中間ビットレートのそれぞれに対して割り当てるビット配分割振テーブルを格納するためのメモリと、
CELPコアモジュールのビットレートの計算器と、
前記CELPコアモジュールのビットレートに基づく前記中間ビットレートのうちの1つの選択器と、
選択した中間ビットレートについての前記ビット配分割振テーブルによって割り当てられた前記個々のビット配分の、前記第1のCELPコアモジュール部分へのアロケータと
を備える、ビット配分を割り振るための
ビット配分割振デバイス。
【請求項20】
前記CELPコアモジュールが、第2の
CELPコアモジュール部分を含み、前記ビット配分割振デバイスが、前記選択した中間ビットレートについての前記ビット配分割振テーブルによって割り当てられた前記個々のビット配分を前記第1のCELPコアモジュール部分に割り振った後に残ったビット配分の、前記第2のCELPコアモジュール部分へのアロケータを備える、請求項19に記載のビット配分割振デバイス。
【請求項21】
前記第1のCELPコアモジュール部分が、LPフィルタ係数、CELP適応コードブック、CELP適応コードブック利得、およびCELPイノベーションコードブック利得のうちの少なくとも1つを含む、請求項19または20に記載のビット配分割振デバイス。
【請求項22】
前記第2のCELPコアモジュール部分が、CELPイノベーションコードブックを含む、請求項20に記載のビット配分割振デバイス。
【請求項23】
前記選択器が、前記中間ビットレートの、前記CELPコアモジュールのビットレートに最も近い高い方の1つを選択する、請求項19から22のいずれか一項に記載のビット配分割振デバイス。
【請求項24】
前記選択器が、前記中間ビットレートの、前記CELPコアモジュールのビットレートに最も近い低い方の1つを選択する、請求項19から22のいずれか一項に記載のビット配分割振デバイス。
【請求項25】
前記第2のCELPコアモジュール部分のビット配分アロケータが、前記音響信号の連続フレームの全てのサブフレームの間に前記第2のCELPコアモジュール部分のビット配分を分配する、請求項
20又は22に記載のビット配分割振デバイス。
【請求項26】
CELPコアモジュールおよび補足コーデックモジュールを使用して音響信号をエンコードまたはデコードするためのデバイスであって、
前記補足コーデックモジュールによって使用されるビット配分の少なくとも1つのカウンタと、
CELPコアモジュールのビット配分を決定するための、前記補足コーデックモジュールのビット配分の、トータルコーデックのビット配分からの減算器と、
前記第1のCELPコアモジュール部分に前記CELPコアモジュールのビット配分を割り振るための、請求項19から25のいずれか一項に記載の
ビット配分割振デバイスであって、前記計算器が、前記CELPコアモジュールのビット配分を使用して、前記CELPコアモジュールのビットレートを決定する、デバイスと
を備える、音響信号をエンコードまたはデコードするためのデバイス。
【請求項27】
CELPコアモジュールおよび補足コーデックモジュールを使用して音響信号をエンコードまたはデコードするためのデバイスであって、
コーデックシグナリングのために使用される第1のビット配分のカウンタと、
前記補足コーデックモジュールによって使用される第2のビット配分の少なくとも1つのカウンタと、
CELPコアモジュールのビット配分を決定するための、前記第1および第2のビット配分の、トータルコーデックのビット配分からの減算器と、
前記第1のCELPコアモジュール部分に前記CELPコアモジュールのビット配分を割り振るための、請求項19から25のいずれか一項に記載の
ビット配分割振デバイスであって、前記計算器が、前記CELPコアモジュールのビット配分を使用して、前記CELPコアモジュールのビットレートを決定する、デバイスと
を備える、音響信号をエンコードまたはデコードするためのデバイス。
【請求項28】
前記CELPコアモジュールのビットレートの前記計算器が、
CELPコアモジュールシグナリングのために使用されるビット配分のカウンタと、
前記CELPコアモジュールのビットレートを決定する際に使用されるCELPコアモジュール部分のためのビット配分を決定するための、CELPコアモジュールシグナリングビット配分の、前記CELPコアモジュールのビット配分からの減算器と
を備える、請求項26または27に記載の音響信号をエンコードまたはデコードするためのデバイス。
【請求項29】
前記補足コーデックモジュールが、ステレオモジュールおよび帯域幅拡張モジュールのうちの少なくとも1つを備える、請求項26から28のいずれか一項に記載の音響信号をエンコードまたはデコードするためのデバイス。
【請求項30】
使われないビット配分を決定するための、(a)前記補足コーデックモジュールに割り振られた前記ビット配分、
及び(b)前記CELPコアモジュール部分に割り振られた前記ビット配
分、の、前記トータルコーデックのビット配分からの減算器を備える、請求項26から29のいずれか一項に記載の音響信号をエンコードまたはデコードするためのデバイス。
【請求項31】
前記第1のCELPコアモジュール部分のうちの少なくとも1つのエンコードへの前記使われないビット配分のアロケータを備える、請求項30に記載の音響信号をエンコードまたはデコードするためのデバイス。
【請求項32】
変換ドメインコードブックのエンコードへの前記使われないビット配分のアロケータを備える、請求項30に記載の音響信号をエンコードまたはデコードするためのデバイス。
【請求項33】
前記変換ドメインコードブックのエンコードへの前記使われないビット配分の前記アロケータが、前記使われないビット配分の第1の部分を変換ドメインパラメータに割り振ること、および前記変換ドメインコードブック内のベクトル量子化器に、前記使われないビット配分の第2の部分を割り振ること、を行う、請求項32に記載の音響信号をエンコードまたはデコードするためのデバイス。
【請求項34】
前記変換ドメインコードブックのエンコードへの前記使われないビット配分の前記アロケータが、前記音響信号のフレームの全てのサブフレームの中に、前記使われないビット配分の前記第2の部分を分配する、請求項33に記載の音響信号をエンコードまたはデコードするためのデバイス。
【請求項35】
前記変換ドメインコードブックのエンコードへの前記使われないビット配分の前記アロケータが、前記フレームの第1のサブフレームに最高のビット配分を割り振る、請求項34に記載の音響信号をエンコードまたはデコードするためのデバイス。
【請求項36】
CELPコアモジュールおよび少なくとも1つの補足コーデックモジュールを使用して音響信号をエンコードまたはデコードするためのデバイスであって、前記CELPコアモジュールが、複数のCELPコアモジュール部分を備え、可変のビット配分が、前記CELPコアモジュールに割り振られ、
請求項19から25のいずれか一項に記載の
ビット配分割振デバイスを使用して、前記可変のCELPコアモジュールのビット配分を前記CELPコアモジュール部分に割り振るためのデバイス
を備える、音響信号をエンコードまたはデコードするためのデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、例えばスピーチ信号またはオーディオ信号といった音響信号を伝送または格納、および合成することを考慮して、この音響信号をデジタル的にエンコードするための技法に関する。エンコーダは、ビット配分を使用して音響信号をデジタルビットストリームにコンバートする。デコーダまたはシンセサイザは、次に、伝送または格納されたビットストリームに対して動作し、ビットストリームを音響信号にコンバートして戻す。エンコーダおよびデコーダ/シンセサイザは、一般に、コーデックとして知られる。
【0002】
より詳細には、本開示は、コーデックにおいてビット配分を効率的に分配するための方法およびデバイスに関するが、これらに限定されない。
【背景技術】
【0003】
低ビットレートで音をエンコードするための最善の技法のうちの1つは、符号励振線形予測(CELP:Code-Excited Linear Prediction)コーディングである。CELPコーディングにおいて、音響信号はサンプリングされ、サンプリングされた音響信号は、フレームと通常呼ばれるL個のサンプルの連続ブロックにおいて処理され、ここで、Lは、20msに典型的に対応する所定の数である。CELPの背景にある主な原理は、「合成による分析」と呼ばれ、ここで、可能なデコーダ出力はエンコード処理中に合成され、次に、元の音響信号と比較される。このサーチは、知覚的に重み付けされたドメインにおける入力音響信号と合成音響信号との間の平均2乗誤差を最小化する。
【0004】
CELPベースコーディングにおいて、音響信号は、典型的には、しばしば合成フィルタと呼ばれる全極デジタルフィルタ1/A(z)を通じて励振をフィルタリングすることによって合成される。フィルタA(z)は線形予測(LP:Linear Prediction)を用いて推定され、音響信号サンプル間の短期間の相関関係を表現する。LPフィルタ係数は、通常、フレームあたり1回、計算される。CELPコーデックにおいて、フレームは、順次サーチされる2つの部分から典型的に構成される励振をエンコードするために、いくつか(通常、2(2)から5(5))のサブフレームにさらに分割される。これらの個々の利得は、次に、共に量子化されることが可能である。以下の説明において、サブフレームの数はNと表され、特定のサブフレームのインデックスはnと表され、ここで、n=0,..., N-1である。
【0005】
励振の第1の部分は、通常、適応コードブックから選択される。適応コードブック励振部は、現在エンコードされているセグメントに最も似ているセグメントを過去の励振の中でサーチすることによって、音声スピーチ信号の準周期性(または長期相関)を活用する。適応コードブック励振部は、適応コードブックインデックス、すなわち、ピッチ周期に対応する遅延パラメータ、および妥当な適応コードブック利得によって説明され、エンコーダにおけるものと同じ励振を再構築するために、両方がデコーダに送られるか格納される。
【0006】
励振の第2の部分は、通常、イノベーションコードブックから選択されたイノベーション信号である。イノベーション信号は、前のスピーチセグメントと、現在エンコードされているセグメントとの間の進展(相違)をモデル化する。励振の第2の部分は、イノベーションコードブックから選択されたコードベクトルのインデックスによって、ならびにイノベーションコードブック利得(これは、固定コードブックインデックスおよび固定コードブック利得とも呼ばれる)によって、説明される。
【0007】
コーディング効率を改善するために、例えば、参考文献[1]において説明されるようなG.718、および参考文献[2]において説明されるようなEVSなどの最近のコーデックは、入力音響信号の分類に基づく。信号特性に基づいて、基本的なCELPコーディングは、いくつかの異なるコーディングモードに拡張される。必然的に、分類は、シグナリング情報としてデコーダに伝送されるか格納される必要がある。通常、伝送するのに効率的な別のシグナリング情報は、例えばオーディオ帯域幅情報である。
【0008】
このようにして、CELPコーデックにおいて、いわゆるCELP「コアモジュール」部分は、以下を含むことができる。
- LPフィルタ係数、
- 適応コードブック、
- イノベーション(固定)コードブック、ならびに
- 適応およびイノベーションコードブック利得
【0009】
最も新しいCELPコーデックは、固定ビットレート(CBR:constant bit rate)原理に基づく。CBRコーデックにおいて、所与のフレームをエンコードするためのビット配分は、音響信号内容またはネットワーク特性とは関係なく、エンコード中、不変である。所与の固定ビットレートで可能な限り最良の品質を取得するために、ビット配分は、異なるコーディング部分の中に慎重に分配される。実際には、所与のビットレートでのコーディング部分毎のビット配分は、通常、固定され、コーデックROMテーブルに格納される。しかし、コーデックによってサポートされるビットレートの数が増加すると、ROMテーブルの長さは比例して増加し、これらのテーブル内のサーチは効率的ではなくなる。
【0010】
CELPコアモジュールに割り振られるビット配分が、コーデック固定ビットレートにおいてさえ変動することがある複雑なコーデックにおいて、大きいROMテーブルの問題はさらにいっそう重大である。例えば、例えば入力オーディオチャネルの数、ネットワークフィードバック、オーディオ帯域幅、入力信号特性、等に基づいて、固定ビットレートでのビット配分が、異なるモジュール間で割り振られる複雑なマルチモジュールコーデックにおいて、コーデックトータルビット配分は、CELPコアモジュールおよび他の異なるモジュールの中に分配される。このような他の異なるモジュールの例は、帯域幅拡張(BWE:bandwidth extension)、ステレオモジュール、フレームエラー隠蔽(FEC:frame error concealment)モジュール、等を含むことができるがこれらに限定されず、本説明において「補足コーデックモジュール(supplementary codec module)」と一括して呼ばれる。信号特性またはネットワークフィードバックに基づいて変化し得る補足モジュール毎に割り振られたビット配分を保つことが通常、有利である。また、補足コーデックモジュールは、適応的にスイッチをオン、オフされることが可能である。この可変性は、これらのモジュールにおけるパラメータの数が通常小さいとき、補足モジュールをエンコードすることに関する問題を通常引き起こさない。しかし、補足コーデックモジュールに割り振られるビット配分を変動させることは、比較的複雑なCELPコアモジュールに割り振られるビット配分を変動させるという結果を生じる。
【0011】
実際には、所与のビットレートでCELPコアモジュールに割り振られるビット配分は、コーデックシグナリングビット配分を含むことができる全てのアクティブな補足コーデックモジュールに割り振られるビット配分でコーデックトータルビット配分を低減させることによって通常取得される。必然的に、CELPコアモジュールに割り振られるビット配分は、1ビット(すなわち、20msのフレーム長で0.05kbps)の小さい粒度で、比較的大きい最小ビットレートと最大ビットレートとの間でスパンを変動させることができる。
【発明の概要】
【発明が解決しようとする課題】
【0012】
できる限り全てのCELPコアモジュールのビットレートにROMテーブルエントリを充てることは、明らかに非効率である。したがって、限られた数の中間ビットレートに基づく細かいビットレート粒度で、異なるモジュール間のビット配分のより効率的かつ柔軟な分配が必要である。
【課題を解決するための手段】
【0013】
第1の態様によれば、本開示は、(a)音響信号をエンコードするためのエンコーダ、または(b)音響信号をデコードするためのデコーダの、CELPコアモジュールの複数の第1の部分にビット配分を割り振る方法に関し、方法は、第1のCELPコアモジュール部分に個々のビット配分を、複数の中間ビットレートのそれぞれに対して割り当てるビット配分割振テーブルを格納することと、CELPコアモジュールのビットレートを決定することと、決定したCELPコアモジュールのビットレートに基づいて中間ビットレートのうちの1つを選択することと、選択した中間ビットレートについてのビット配分割振テーブルによって割り当てられた個々のビット配分を、第1のCELPコアモジュール部分に割り振ることと、を含む。
【0014】
第2の態様によれば、(a)音響信号をエンコードするためのエンコーダ、または(b)音響信号をデコードするためのデコーダの、CELPコアモジュールの複数の第1の部分にビット配分を割り振るためのデバイスが提供され、デバイスは、第1のCELPコアモジュール部分に個々のビット配分を、複数の中間ビットレートのそれぞれに対して割り当てるビット配分割振テーブルを格納するためのメモリと、CELPコアモジュールのビットレートの計算器と、CELPコアモジュールのビットレートに基づく中間ビットレートのうちの1つの選択器と、選択した中間ビットレートについてのビット配分割振テーブルによって割り当てられた個々のビット配分の、第1のCELPコアモジュール部分へのアロケータと、を備える。
【0015】
第3の態様によれば、(a)音響信号をエンコードするためのエンコーダ、または(b)音響信号をデコードするためのデコーダの、CELPコアモジュールの複数の第1の部分にビット配分を割り振るためのデバイスが提供され、デバイスは、少なくとも1つのプロセッサと、プロセッサに連結され、実行されると、第1のCELPコアモジュール部分に個々のビット配分を、複数の中間ビットレートのそれぞれに対して割り当てるビット配分割振テーブルを格納すること、CELPコアモジュールのビットレートを決定すること、決定したCELPコアモジュールのビットレートに基づいて中間ビットレートのうちの1つを選択すること、および選択した中間ビットレートについてのビット配分割振テーブルによって割り当てられた個々のビット配分を、第1のCELPコアモジュール部分に割り振ること、をプロセッサに行わせる非一時的命令を含むメモリと、を備える。
【0016】
さらなる態様は、(a)音響信号をエンコードするためのエンコーダ、または(b)音響信号をデコードするためのデコーダの、CELPコアモジュールの複数の第1の部分にビット配分を割り振るためのデバイスに関し、デバイスは、少なくとも1つのプロセッサと、プロセッサに連結され、実行されると、第1のCELPコアモジュール部分に個々のビット配分を、複数の中間ビットレートのそれぞれに対して割り当てるビット配分割振テーブル、CELPコアモジュールのビットレートの計算器、CELPコアモジュールのビットレートに基づく中間ビットレートのうちの1つの選択器、および選択した中間ビットレートについてのビット配分割振テーブルによって割り当てられた個々のビット配分の、第1のCELPコアモジュール部分へのアロケータ、をプロセッサに実行させる非一時的命令を含むメモリと、を備える。
【0017】
ビット配分割振方法およびデバイスの前述および他の目的、利点、および特徴は、添付の図面を参照しながらほんの一例として示される例証的な実施形態の以下の非限定的な説明を読むと、より明らかになるであろう。
【図面の簡単な説明】
【0018】
【
図1】以下の説明において開示されるようなビット配分割振方法およびデバイスの実装形態の考え得る背景を描写する、ステレオ音響処理および通信システムの概略ブロック図である。
【
図2】本開示のビット配分割振方法およびデバイスを同時に示すブロック図である。
【
図3】本開示のビット配分割振方法およびデバイスを形成するハードウェア構成要素の構成例の簡素化したブロック図である。
【発明を実施するための形態】
【0019】
図1は、以下の説明において開示されるようなビット配分割振方法およびデバイスの実装形態の考え得る背景を描写する、ステレオ音響処理および通信システム100の概略ブロック図である。本ビット配分割振方法およびデバイスはステレオに限定されるものではなく、マルチチャネルコーディングまたはモノコーディングにおいて使用されることも可能であるということに留意されたい。
【0020】
図1のステレオ音響処理および通信システム100は、通信リンク101をはさむステレオ音響信号の伝送をサポートする。通信リンク101は、例えば有線リンクまたは光ファイバリンクを含むことができる。代替として、通信リンク101は、無線周波数リンクを少なくとも部分的に含むことができる。無線周波数リンクは、セルラー電話通信などで見られることがある、共有帯域幅リソースを必要とする複数の同時通信をサポートすることが多い。図示されていないが、通信リンク101は、後で再生するためにエンコードされたステレオ音響信号を記録および格納する、処理および通信システム100の単一デバイス実装形態におけるストレージデバイスによって置き替えられることが可能である。
【0021】
図1をさらに参照すると、例えば、マイクロフォン102と122のペアは、検出された元のアナログステレオ音響信号の左103および右123のチャネルを生み出す。前述の説明において示されたように、音響信号は、特にスピーチおよび/またはオーディオを含むことができるが、これらに限らない。
【0022】
元のアナログ音響信号の左103および右123のチャネルは、アナログ/デジタル(A/D)コンバータ104に供給され、元のアナログ音響信号を、元のデジタルステレオ音響信号の左105および右125のチャネルにコンバートする。元のデジタルステレオ音響信号の左105および右125のチャネルは記録され、ストレージデバイス(図示せず)から供給されることも可能である。
【0023】
ステレオ音響エンコーダ106は、デジタルステレオ音響信号の左105および右125のチャネルをエンコードし、このことにより、ビットストリーム107の形式で多重化されたエンコードパラメータのセットを生み出し、任意選択のエラー訂正エンコーダ108に配信される。任意選択のエラー訂正エンコーダ108は、存在するとき、ビットストリーム107におけるバイナリ表現のエンコードパラメータに冗長性を追加し、その後、結果として生じるビットストリーム111を通信リンク101で伝送する。
【0024】
レシーバ側において、任意選択のエラー訂正デコーダ109は、受信したデジタルビットストリーム111における上述の冗長情報を利用して、通信リンク101での伝送中に発生した可能性のあるエラーを検出して訂正し、受信したエンコードパラメータでビットストリーム112を生み出す。ステレオ音響デコーダ110は、ビットストリーム112における受信したエンコードパラメータをコンバートし、デジタルステレオ音響信号の合成された左113および右133のチャネルを作り出す。ステレオ音響デコーダ110において再構築されたデジタルステレオ音響信号の左113および右133のチャネルは、デジタル/アナログ(D/A)コンバータ115において、アナログステレオ音響信号の合成された左114および右134のチャネルにコンバートされる。
【0025】
アナログステレオ音響信号の合成された左114および右134のチャネルは、ラウドスピーカーユニット116と136のペアにおいてそれぞれ再生される(ラウドスピーカーユニット116と136のペアは、明らかにヘッドホンによって置き替えられることが可能である)。代替として、ステレオ音響デコーダ110からのデジタルステレオ音響信号の左113および右133のチャネルは、ストレージデバイス(図示せず)に供給および記録されることも可能である。
【0026】
非限定的な例として、本開示によるビット配分割振方法およびデバイスは、
図1の音響エンコーダ106および音響デコーダ110において実行されることが可能である。
図1は、マルチチャネル、ならびに/またはシーンベースのオーディオ、ならびに/または独立のストリームエンコーディングおよびデコーディング(例えば、サラウンド、および高度のアンビソニックス)のケースを含むように拡張されることが可能であるということに留意されたい。
【0027】
図2は、本開示による、ビット配分割振方法200およびビット配分割振デバイス250を同時に示すブロック図である。
【0028】
ここで、ビット配分割振方法200およびビット配分割振デバイス250はフレーム毎に動作し、以下の説明は、特に明記しない限り、エンコードされる音響信号の連続フレームのうちの1つに関するものであるということに留意されたい。
【0029】
図2において、補足コーデックモジュールをエンコードするために使用されるビット数を変動させた結果として、ビット配分がフレームによって変動するCELPコアモジュールエンコーディングが検討される。また、異なるCELPコアモジュール部分の中のビット配分の分配は、エンコーダ106およびデコーダ110において対称的に行われ、CELPコアモジュールのエンコードに割り振られたビット配分に基づく。
【0030】
以下の説明は、汎用コーディングモードを使用するEVSベースコーデックにおける実装形態の非限定的な例を示す。EVSベースコーデックは、他のCELPコアビットレートまたはコーデックの改善を可能にするための修正を伴う、参考文献[2]において説明されるようなEVS標準に基づくコーデックである。本開示におけるEVSベースコーデックは、メタデータ、ステレオ、またはマルチチャネルコーディングなどの、補足コーディングモジュールを使用してコーディングフレームワークの中で使用される(これは、以下において、拡張EVSコーデックと呼ばれる)。本開示において説明されるようなものに類似の原理は、EVSベースコーデックにおける他のコーディングモード(例えば、音声コーディング、遷移コーディング、非アクティブコーディング、...)に適用されることが可能である。その上、EVSとは異なり、CELP以外のコード体系を使用する他の任意のコーデックにおいて類似の原理が実行されることが可能である。
【0031】
動作201
図2を参照すると、トータルビット配分b
totalが、音響信号の各連続フレームに対するコーデックに割り振られる。CBRのケースにおいて、このコーデックトータルビット配分b
totalは不変である。可変ビットレートコーデックにおいてビット配分割振方法200およびビット配分割振デバイス250を使用することもでき、コーデックトータルビット配分b
totalは、(拡張EVSコーデックを伴うケースにおけるように)フレームによって変化させることが可能である。
【0032】
動作202
動作202において、カウンタ252は、補足コーデックモジュールをエンコードするために使用されるビット数(ビット配分)bsupplementary、およびコーデックシグナリングをデコーダに伝送するためのビット数(ビット配分)bcodec_signaling(図示せず)、を決定する(数える)。
【0033】
補足コーデックモジュールは、ステレオモジュール、フレーム消去隠蔽(FEC)モジュール、帯域幅拡張(BWE)モジュール、メタデータコーディングモジュール、等を備えることができる。以下の例証的な実施形態において、補足モジュールは、ステレオモジュールおよびBWEモジュールを備える。当然、異なるまたは追加の補足コーデックモジュールが使用されることが可能である。
【0034】
ステレオモジュール
コーデックは、2つ以上の入力オーディオチャネルのエンコードをサポートするように設計されることが可能である。2つのオーディオチャネルのケースにおいて、モノ(単一チャネル)コーデックは、ステレオコーデックを形成するためにステレオモジュールによって拡張されることが可能である。ステレオモジュールは、次に、補足コーデックモジュールのうちの1つを形成する。ステレオコーデックは、いくつかの異なるステレオエンコーディング技法を使用して実行されることが可能である。非限定的な例として、低ビットレートで効率的に使用されることが可能な2つのステレオエンコーディング技法の使用が、以下において論じられる。明らかに、他のステレオエンコーディング技法が実行されることが可能である。
【0035】
第1のステレオエンコーディング技法は、パラメトリックステレオと呼ばれる。パラメトリックステレオは、ステレオイメージを表現する(ステレオパラメータに対応する)一定量のステレオ側情報を加えた共通モノコーデックを使用して、モノ信号として2つのオーディオチャネルをエンコードする。2つの入力オーディオチャネルは、モノ信号にダウンミックスされ、ステレオパラメータは、次に、例えば離散フーリエ変換(DFT)ドメインといった変換ドメインにおいて通常、計算され、いわゆるバイノーラルキューまたはインターチャネルキューに関するものである。バイノーラルキュー(参考文献[5]を参照)は、両耳間レベル差(ILD)、両耳間時間差(ITD)、および両耳間相関(IC)を含む。信号特性、ステレオシーン構成、等に応じて、いくつかまたは全てのバイノーラルキューはエンコードされ、デコーダに伝送される。どのキューがエンコードされるかについての情報は、シグナリング情報として送信され、通常、ステレオ側情報の一部である。変化し得るビット数が使用されるという結果を生じる異なるエンコーディング技法を使用して、特定のバイノーラルキューが量子化されることも可能である。次に、量子化されたバイノーラルキューに加えて、ステレオ側情報は、ダウンミキシングから生じる量子化された残留信号を、通常、中間およびより高いビットレートで、収めることができる。残留信号は、例えば算術エンコーダといったエントロピーエンコーディング技法を使用してエンコードされることが可能である。必然的に、残留信号をエンコードするために使用されるビット数は、フレームによってかなり変動する可能性がある。
【0036】
別のステレオエンコーディング技法は、時間ドメインにおいて動作する技法である。このステレオエンコーディング技法は、2つの入力オーディオチャネルを、いわゆる1次チャネルおよび2次チャネルにミックスする。例えば、参考文献[6]において記述される方法に従って、時間ドメインミキシングは、ミキシングファクタに基づくことが可能であり、1次チャネルおよび2次チャネルを生み出す際に、2つの入力オーディオチャネルの個々の分担を決定する。ミキシングファクタは、例えば、モノ信号についての入力チャネルの正規化相関、または2つの入力チャネル間の長期相関の差といった、いくつかの測定規準から導出される。1次チャネルは、共通モノコーデックによってエンコードされることが可能である一方で、2次チャネルは、より低いビットレートコーデックによってエンコードされることが可能である。2次チャネルエンコーディングは、1次チャネルと2次チャネルとの間のコヒーレンスを活用することができ、1次チャネルからのいくつかのパラメータを再使用することが可能である。必然的に、1次チャネルおよび2次チャネルをエンコードするために使用されるビット数は、個々のチャネルのチャネル類似性およびエンコードモードに基づいて、フレームによってかなり変動する可能性がある。
【0037】
ステレオエンコーディング技法は当業者に別途知られており、したがって、本明細書においてさらに説明されない。補足コーディングモジュールの例としてステレオが説明されたが、開示の方法は、アンビソニックス(シーンベースオーディオ)、マルチチャネル(チャネルベースオーディオ)、またはメタデータを加えたオブジェクト(オブジェクトベースオーディオ)、を含む3Dオーディオコーディングフレームワークにおいて使用されることが可能である。補足モジュールは、これらの技法のいずれかを含むこともできる。
【0038】
BWEモジュール
広帯域(WB:wideband)または超広帯域(SWB:super wideband)コーデックを含む最近のスピーチコーデックの大部分において、入力信号は、周波数帯域分割処理を用いながらブロック(フレーム)において処理される。より低い周波数帯域は、通常、CELPモデルを使用してエンコードされ、遮断周波数までの周波数を含む。次に、より高い周波数帯域は、残りのエンコードされるスペクトルを含めるためにBWE技法によって別々に効率的にエンコードされるか推定される。2つの帯域間の遮断周波数は、各コーデックの設計パラメータである。例えば、参考文献[2]において説明されるようなEVSコーデックにおいて、遮断周波数は、コーデックの動作モードおよびビットレートに依存する。特に、より低い周波数帯域は、7.2kbps~13.2kbpsのビットレートで6.4kHzまで、または16.4kbps~64kbpsのビットレートで8kHzまで、拡張する。BWEは、次に、WB(8kHzまで)、SWB(14.4kHzもしくは16kHzまで)、または全帯域(FB、20kHzまで)のエンコーディングのためにオーディオ帯域幅をさらに拡張する。
【0039】
BWEの背景にあるアイデアは、より低い周波数帯域とより高い周波数帯域との間の固有の相関性を活用することであり、より低い周波数と比較して、より高い周波数におけるエンコード歪みに対する知覚耐性が高くなるという利益を得る。必然的に、より高い帯域のBWEエンコーディングのために使用されるビット数は、より低い帯域のCELPエンコーディングと比較して、通常、非常に低いか、またはゼロにさえなる。例えば、参考文献[2]において説明されるようなEVSコーデックにおいて、ビット配分が伝送されないBWE(いわゆる、ブラインドBWE)は、7.2kbps~8.0kbpsのビットレートで使用される一方、いくつかのビット配分を伴うBWE(いわゆる、誘導型BWE(guided BWE))は、9.6kbps~64kbpsのビットレートで使用される。誘導型BWEの正確なビット配分は、実際のコーデックビットレート次第である。
【0040】
以下の説明において、誘導型BWEが検討され、補足コーデックモジュールのうちの1つを形成する。より高い帯域のBWEエンコーディングのために使用されるビット数は、フレームによって変動する可能性があり、より低い帯域のCELPエンコーディングのために使用されるビット数よりずっと少ない(典型的には1kbps~3kbps)。
【0041】
やはりBWEは当業者に別途知られており、したがって、本明細書においてさらに説明されない。
【0042】
コーデックシグナリング
ビットストリームは、通常、その初めに、コーデックシグナリングビットを収める。これらのビット(コーデックシグナリングビット配分)は、通常、例えば、コーデック構成、または、エンコードされる補足コーデックモジュールの性質についての情報といった、非常に高レベルのコーデックパラメータを表現する。マルチチャネルコーデックのケースにおいて、これらのビットは、例えば、エンコードされる(輸送する)チャネルの数、および/またはコーデックフォーマット(シーンベースまたはオブジェクトベース、等)を表現することができる。ステレオエンコーディングのケースにおいて、これらのビットは、例えば、使用されるステレオエンコーディング技法を表現することができる。コーデックシグナリングビットを使用して送信されることが可能なコーデックパラメータの別の例は、オーディオ信号帯域幅である。
【0043】
やはりコーデックシグナリングは当業者に別途知られており、したがって、本明細書においてさらに説明されない。また、カウンタ(図示せず)は、コーデックシグナリングのために使用されるビット数(ビット配分)を数えるために使用されることが可能である。
【0044】
動作204
図2を再び参照すると、動作204において、減算器254は、以下の関係を使用して、補足コーデックモジュールのエンコードのためのビット配分b
supplementary、およびコーデックシグナリングを伝送するためのビット配分b
codec_signalingを、コーデックトータルビット配分b
totalから減算して、CELPコアモジュールのビット配分b
coreを取得する。
b
core=b
total-b
supplementary-b
codec_signaling (1)
【0045】
上述のように、補足コーデックモジュールをエンコードするためのビット数bsupplementary、およびコーデックシグナリングをデコーダに伝送するためのビット配分bcodec_signalingはフレームによって変動し、したがって、CELPコアモジュールのビット配分bcoreもフレームによって変動する。
【0046】
動作205
動作205において、カウンタ255は、CELPコアモジュールシグナリングをデコーダに伝送するためのビット数(ビット配分)bsignalingを数える。CELPコアモジュールシグナリングは、例えば、オーディオ帯域幅、CELPエンコーダタイプ、鮮明化フラグ(sharpening flag)、等を含むことができる。
【0047】
動作206
動作206において、減算器256は、以下の関係を使用して、CELPコアモジュールシグナリングを伝送するためのビット配分bsignalingをCELPコアモジュールのビット配分bcoreから減算して、CELPコアモジュール部分をエンコードするためのビット配分b2を知る。
b2=bcore-bsignaling (2)
【0048】
動作207
動作207において、中間ビットレート選択器257は、フレームの持続期間でビット数b2を割ることによって、ビット配分b2をCELPコアモジュールのビットレートにコンバートする計算器を備える。選択器257は、CELPコアモジュールのビットレートに基づいて中間ビットレートを見つける。
【0049】
少数の候補中間ビットレートが使用される。EVSベースコーデックにおける実装形態の例において、5.00kbps、6.15kbps、7.20kbps、8.00kbps、9.60kbps、11.60kbps、13.20kbps、14.80kbps、16.40kbps、19.40kbps、22.60kbps、24.40kbps、32.00kbps、48.00kbps、および64.00kbpsという15個(15)のビットレートは、候補中間ビットレートとみなされてよい。当然、15個(15)とは異なるいくつかの候補中間ビットレートを使用することが可能であり、異なる値の候補中間ビットレートを使用することも可能である。
【0050】
実装形態の同じ例において、EVSベースコーデックにおいて、見つかった中間ビットレートは、CELPコアモジュールのビットレートに最も近い高い方の候補中間ビットレートである。例えば、9.00kbpsのCELPコアモジュールのビットレートについて、見つかった中間ビットレートは、前段落において挙げられた候補中間ビットレートを使用すると、9.60kbpsになる。
【0051】
実装形態の別の例において、見つかった中間ビットレートは、CELPコアモジュールのビットレートに最も近い低い方の候補中間ビットレートである。同じ例を使用すると、9.00kbpsのCELPコアモジュールのビットレートについて、見つかった中間ビットレートは、前段落において挙げられた候補中間ビットレートを使用すると、8.00kbpsになる。
【0052】
動作208
動作208において、ROMテーブル258は、CELPコアモジュールの第1の部分をエンコードするための個々の所定のビット配分を、各候補中間ビットレートについて格納する。非限定的な例として、ROMテーブル258にビット配分が格納されるCELPコアモジュールの第1の部分は、LPフィルタ係数、適応コードブック、適応コードブック利得、およびイノベーションコードブック利得を含むことができる。この実装形態において、イノベーションコードブックをエンコードするためのビット配分は、ROMテーブル258に格納されない。
【0053】
言い換えれば、候補中間ビットレートのうちの1つが選択器257によって選択されるとき、ROMテーブル258に格納された関連付けられたビット配分は、上記において識別されたCELPコアモジュールの第1の部分(LPフィルタ係数、適応コードブック、適応コードブック利得、およびイノベーションコードブック利得)のエンコーディングに割り振られる。しかし、説明された実装形態において、イノベーションコードブックをエンコードするためのビット配分は、ROMテーブル258に格納されない。
【0054】
以下のTable 1(表1)は、LPフィルタ係数をエンコードするための個々のビット配分(ビット数)bLPCを、各候補中間ビットレートについて格納するROMテーブル258の例である。右列が候補中間ビットレートを識別する一方で、左列は、個々のビット配分(ビット数)bLPCを示す。簡略化するために、LPフィルタ係数をエンコードするためのビット配分はフレーム毎の単一の値であるが、現在のフレームにおいて2つ以上のLP分析が行われるとき(例えば中間フレームおよびエンドフレームのLP分析)、いくつかのビット配分値の合計であることが可能である。
【0055】
【0056】
以下のTable 2(表2)は、適応コードブックをエンコードするための個々のビット配分(ビット数)bACBnを、各候補中間ビットレートについて格納するROMテーブル258の例である。右列が候補中間ビットレートを識別する一方で、左列は、個々のビット配分(ビット数)bACBnを示す。適応コードブックは、あらゆるサブフレームnにおいてサーチされるので、N個のビット配分bACBn(サブフレーム毎に1つ)が、あらゆる候補中間ビットレートに対して取得され、Nは、フレーム内のサブフレームの数を表現する。ビット配分bACBnは、異なるサブフレームにおいて異なってよいということに留意されたい。具体的には、Table 2(表2)は、上記において定義された15個(15)の候補中間ビットレートを使用してEVSベースコーデックにビット配分bACBnを格納するROMテーブル258の例である。
【0057】
【0058】
EVSベースコーデックを使用する例において、中間ビットレートあたり4つ(4)のビット配分bACBnは、20msのフレームが4つ(4)のサブフレーム(N=4)から成る、より低いビットレートで格納され、中間ビットレートあたり5つ(5)のビット配分bACBnは、20msのフレームが5つ(5)のサブフレーム(N=5)から成る、より高いビットレートで格納される、ということに留意されたい。Table 2(表2)を参照すると、9.60kbpsの中間ビットレートに対応する9.00kbpsのCELPコアモジュールのビットレートについて、個々のサブフレームにおけるビット配分bACBnは、それぞれ、9、6、9、および6ビットである。
【0059】
以下のTable 3(表3)は、適応コードブック利得およびイノベーションコードブック利得をエンコードするための個々のビット配分(ビット数)bGnを、各候補中間ビットレートについて格納するROMテーブル258の例である。下記の例において、適応コードブック利得およびイノベーションコードブック利得は、ベクトル量子化器を使用して量子化され、このようにして、ただ1つの量子化インデックスとして表現される。右列が候補中間ビットレートを識別する一方で、左列は、個々のビット配分(ビット数)bGnを示す。Table 3(表3)から分かるように、フレームのあらゆるサブフレームnに対して1つのビット配分bGnがある。したがって、N個のビット配分bGnは、あらゆる候補中間ビットレートについて格納され、Nは、フレーム内のサブフレームの数を表現する。利得量子化器、および使用される量子化テーブルのサイズに応じて、ビット配分bGnは、異なるサブフレームにおいて異なってよいということに留意されたい。
【0060】
【0061】
同じ手法で、他のCELPコアモジュールの第1の部分(これらが存在する場合)を量子化するためのビット配分は、各候補中間ビットレートについてROMテーブル258に格納されることが可能である。例は、適応コードブックローパスフィルタリングのフラグ(サブフレーム毎に1ビット)であることが可能である。したがって、イノベーションコードブックを除く全てのCELPコアモジュール部分(第1の部分)に関連付けられたビット配分は、各候補中間ビットレートについてROMテーブル258に格納されることが可能である一方で、一定のビット配分b4は、依然として利用可能なままである。
【0062】
動作209
動作209において、ビット配分アロケータ259は、ROMテーブル258に格納され、選択器257によって選択した中間ビットレートに関連付けられたビット配分を、上述のCELPコアモジュールの第1の部分(LPフィルタ係数、適応コードブック、適応およびイノベーションコードブック利得、等)をエンコードするために割り振る。
【0063】
動作210
動作210において、減算器260は、(a)選択器257によって選択された候補中間ビットレートに関連付けられたLPフィルタ係数をエンコードするためのビット配分bLPC、(b)選択された候補中間ビットレートに関連付けられたN個のサブフレームのビット配分bACBnの合計、(c)選択された候補中間ビットレートに関連付けられたN個のサブフレームの適応およびイノベーションコードブック利得を量子化するためのビット配分bGnの合計、ならびに(d)他のCELPコアモジュールの第1の部分(これらが存在する場合)をエンコードするための、選択された中間ビットレートに関連付けられたビット配分、をビット配分b2から減算し、イノベーションコードブック(第2のCELPコアモジュール部分)をエンコードするために、依然として利用可能な残ったビット配分(ビット数)b4を見つける。この目的のために、以下の関係が、減算器260によって使用されることが可能である。
【0064】
【0065】
動作211
動作211において、FCBビットアロケータ261は、現在のフレームのN個のサブフレームの間に、イノベーションコードブック(固定コードブック(FCB:Fixed CodeBook)、第2のCELPコアモジュール部分)をエンコードするために、残ったビット配分b4を分配する。具体的には、ビット配分b4は、様々なサブフレームnに割り振られるビット配分bFCBnに分割される。例えば、これは、N個のサブフレームの間にビット配分b4をできるだけ等しく分割する反復手順によって行われることが可能である。
【0066】
他の非限定的な実装形態において、FCBビットアロケータ261は、以下の要件のうちの少なくとも1つを仮定することによって設計されることが可能である。
I.ビット配分b4がサブフレーム全ての間に等しく分配されることが不可能なケースにおいて、可能な限り最高の(すなわち、より大きい)ビット配分が、第1のサブフレームに割り振られる。例として、b4=106ビットの場合、4つのサブフレームあたりのFCBビット配分は、28-26-26-26ビットとして割り振られる。
II.他のサブフレームのFCBコードブックを潜在的に増加させるのに利用可能なビットが多く存在する場合、第1のサブフレームの後の少なくとも1つの次のサブフレーム(または第1のサブフレームに続く少なくとも1つのサブフレーム)に割り振られるFCBビット配分(ビット数)は増加される。例として、b4=108ビットの場合、4つのサブフレームあたりのFCBビット配分は、28-28-26-26ビットとして割り振られる。追加の例において、b4=110ビットの場合、4つのサブフレームあたりのFCBビット配分は、28-28-28-26ビットとして割り振られる。
III.ビット配分b4は、必ずしも、サブフレーム全ての間にできるだけ等しく分配される必要はなく、むしろ、できる限りビット配分b4を使用する必要がある。例として、b4=87ビットの場合、4つのサブフレームあたりのFCBビット配分は、要件IIIが考慮されないとき、例えば24-20-20-20ビットまたは20-20-20-24ビットではなく、26-20-20-20ビットとして割り振られる。別の例において、b4=91ビットの場合、4つのサブフレームあたりのFCBビット配分が、26-24-20-20ビットとして割り振られる一方で、例えば、20-24-24-20ビットは、要件IIIが考慮されない場合、割り振られる。必然的に、両方の例において、要件IIIが考慮されるとき、ただ1つのビットが未使用のままである一方で、そうでなければ、3ビットが未使用のままである。
要件IIIは、例えば、下記の本明細書におけるTable 4(表4)といった、FCB構成テーブルからの2つの非連続のラインをFCBビットアロケータ261が選択することを可能にする。非限定的な例として、b4=87ビットを検討する。FCBビットアロケータ261は、FCBサーチを構成するために用いられることになる全てのサブフレームについてTable 4(表4)からライン6を最初に選ぶ(これは、20-20-20-20ビット配分割振を生じる)。次に、要件Iは、ライン6およびライン7(24-20-20-20ビット)が用いられるように割振りを変更し、要件IIIは、FCB構成テーブル(Table 4(表4))からライン6およびライン8(26-20-20-20)を使用することによって割振りを選択する。
下記は、(EVS(参考文献[2])から複写された)FCB構成テーブルの例としてのTable 4(表4)である。
【0067】
【0068】
ここで、第1の列は、FCBコードブックビットの数に対応し、第4の列は、サブフレームあたりのFCBパルスの数に対応する。b4=87ビットについての上記の例において、22ビットコードブックは存在せず、FCBアロケータは、このようにして、FCB構成テーブルから2つの非連続のラインを選択し、26-20-20-20のFCBビット配分割振を生じるということに留意されたい。
IV.遷移コーディング(TC:Transition Coding)モード(参考文献[2]を参照)を使用してエンコードするときに、サブフレーム全ての間にビット配分が等しく分配されることが不可能なケースにおいて、可能な限り最大の(より大きい)ビット配分が、声門インパルス形状コードブックを使用するサブフレームに割り振られる。例として、b4=122ビットであり、声門インパルス形状コードブックが、第3のサブフレームにおいて使用される場合、4つのサブフレームあたりのFCBビット配分は、30-30-32-30ビットとして割り振られる。
V.要件IVを適用した後、TCモードフレームにおいて別のFCBコードブックを潜在的に増加させるのに利用可能なビットが多く存在する場合、最後のサブフレームに割り振られるFCBビット配分(ビット数)は増加される。例として、b4=116ビットであり、声門インパルス形状コードブックが、第2のサブフレームにおいて使用される場合、4つのサブフレームあたりのFCBビット配分は、28-30-28-30ビットとして割り振られる。この要件の背景にあるアイデアは、開始/遷移イベントの前の励振の部分よりも知覚的に重要な開始/遷移イベントの後の励振の部分をより良く構築することである。
【0069】
声門インパルス形状コードブックは、参考文献[2]のセクション5.2.3.2.1(Glottal pulse codebook search)において説明されるような、特定の位置に置かれた、先端を切られた声門インパルス(truncated glottal impulse)の量子化された正規化形状からなることが可能である。コードブックサーチは、次に、最善の形状および最善の位置の選択を含む。例えば、声門インパルス形状は、候補インパルス位置に対応するただ1つの非ゼロの要素を収めるコードベクトルによって表現されることが可能である。選択されると、位置コードベクトルは、形状フィルタのインパルスレスポンスで、畳み込まれる。
【0070】
上記の要件を使用すると、FCBビットアロケータ261は、以下のように設計されることが可能である(C-codeで表現される)。
【0071】
【0072】
ここで、関数SWAP()は、2つの入力値を取り替える/入れ替える。関数fcb_table()は、次に、(上記において定義されたような)FCB(固定またはイノベーションコードブック)構成テーブルの対応するラインを選択し、選択したFCB(固定またはイノベーションコードブック)をエンコードするために必要なビット数を返す。
【0073】
動作212
カウンタ262は、イノベーションコードブック(固定コードブック(FCB)、第2のCELPコアモジュール部分)をエンコードするための、N個の様々なサブフレームに割り振られるビット配分(ビット数)bFCBnの合計を決定する。
【0074】
【0075】
動作213
動作213において、減算器263は、以下の関係を使用して、イノベーションコードブックのエンコード後に残ったビット数b5を決定する。
【0076】
【0077】
理想的には、イノベーションコードブックのエンコード後、残ったビットの数b5はゼロに等しい。しかし、イノベーションコードブックインデックスの粒度は1より大きい(通常2~3ビット)ので、この結果を実現するのは不可能である可能性がある。必然的に、少ないビット数は、イノベーションコードブックのエンコード後に使われないままであることが多い。
【0078】
動作214
動作214において、ビットアロケータ264は、イノベーションコードブックを除くCELPコアモジュール部分(CELPコアモジュールの第1の部分)のうちの1つのビット配分を増加させるために、使われないビット配分(ビット数)b5を割り当てる。例えば、使われないビット配分b5は、以下の関係を使用して、ROMテーブル258から取得されたビット配分bLPCを増加させるために使用されることが可能である。
b'LPC=bLPC+b5 (6)
【0079】
使われないビット配分b5は、例えば、ビット配分bACBnまたはbGnといった、他のCELPコアモジュールの第1の部分のビット配分を増加させるために使用されることも可能である。また、使われないビット配分b5は、1ビットより大きいとき、2つまたはさらに多くのCELPコアモジュールの第1の部分の間に再分配されることが可能である。代替として、使われないビット配分b5は、例えば信号クラス(参考文献[2]を参照)といった(補足コーデックモジュールにおいてすでに数えられていない場合)FEC情報を伝送するために使用されることが可能である。
【0080】
高ビットレートCELP
従来のCELPには、高ビットレートで使用されるときに、スケーラビリティおよび複雑性の限界がある。これらの限界を克服するために、CELPモデルは、参考文献[3]および参考文献[4]において説明されるような、特殊な変換ドメインコードブックによって拡張されることが可能である。適応およびイノベーション励振分担のみから励振が構成される従来のCELPとは対照的に、拡張モデルは、励振の第3の部分、すなわち変換ドメイン励振分担を導入する。追加の変換ドメインコードブックは、プリエンファシスフィルタ、時間ドメインから周波数ドメインへの変換、ベクトル量子化器、および変換ドメイン利得を通常含む。拡張モデルにおいて、かなりの数(少なくとも10)のビットが、あらゆるサブフレームにおけるベクトル量子化器に割り当てられる。
【0081】
高ビットレートCELPにおいて、ビット配分は、上述のような手順を使用してCELPコアモジュール部分に割り振られる。この手順に従って、N個のサブフレームにおけるイノベーションコードブックをエンコードするためのビット配分bFCBnの合計は、ビット配分b4に等しいか、近づくはずである。高ビットレートCELPにおいて、ビット配分bFCBnは通常、大きくなく、使われないビットの数b5は比較的大きく、変換ドメインコードブックパラメータをエンコードするために使用される。
【0082】
第1に、N個のサブフレームにおける変換ドメイン利得をエンコードするためのビット配分bTDGnの合計、および最後に、ベクトル量子化器のためのビット配分を除く他の変換ドメインコードブックパラメータのビット配分は、以下の関係を使用して、使われないビット配分b5から減算される。
【0083】
【0084】
次に、残ったビット配分(ビット数)b7は、変換ドメインコードブック内のベクトル量子化器に割り振られ、全てのサブフレームの間に分配される。ベクトル量子化器のサブフレームによるビット配分(ビット数)は、bVQnと表される。使用されるベクトル量子化器(例えば、EVSにおいて使用されるようなAVQ量子化器)に応じて、量子化器は、割り振られたビット配分bVQnの全てを消費せず、各サブフレームにおいて利用可能な少ない可変のビット数を残す。これらのビットは、同じフレーム内の後続のサブフレームにおいて用いられるフローティングビットである。変換ドメインコードブックの効果をより良くするために、わずかに高い(大きい)ビット配分(ビット数)が、第1のサブフレームにおけるベクトル量子化器に割り振られる。実装形態の例が、以下の擬似コードにおいて示される。
【0085】
【0086】
ここで、
【数6】
は、xより小さいか等しい最大の整数を表し、Nは、1つのフレーム内のサブフレームの数である。ビット配分(ビット数)b
7がサブフレーム全ての間に等しく分配される一方で、第1のサブフレームのためのビット配分は、最終的にN-1ビットまでわずかに増加される。必然的に、高ビットレートCELPにおいて、この動作の後に残るビットはない。
【0087】
拡張EVSコーデックに関する他の態様
多くのインスタンスにおいて、所与のCELPコアモジュール部分をエンコードするための2つ以上の選択肢がある。EVSのような複雑なコーデックにおいて、所与のCELPコアモジュール部分をエンコードするために、いくつかの異なる技法が利用可能であり、1つの技法の選択は、CELPコアモジュールのビットレート(コアモジュールのビットレートは、秒あたりのフレーム数を乗じたCELPコアモジュールのビット配分bcoreに対応する)に基づいて、通常、行われる。例は、参考文献[2]において説明されるようなEVSコーデックにおいて利用可能な3つ(3)の異なる技法が存在する利得量子化であり、以下の汎用コーディング(GC)モードである。
- サブフレーム予測に基づくベクトル量子化器(GQ1、8.0kbpsに等しいか低いコアビットレートで使用される)、
- 適応およびイノベーション利得のメモリのないベクトル量子化器(GQ2、8kbpsより高く、32kbpsより低いか等しいコアビットレートで使用される)、ならびに
- 2つのスカラ量子化器(GQ3、32kbpsより高いコアビットレートで使用される)。
【0088】
また、定数コーデックトータルビットレートbtotalにおいて、所与のCELPコアモジュール部分をエンコードおよび量子化するための種々の技法は、CELPコアモジュールのビットレートに応じて、フレーム毎にスイッチされることが可能である。例は、48kbpsでのパラメトリックステレオコーディングモードであり、この中で、下記のTable 5(表6)において示されるように、種々の利得量子化器(参考文献[2]を参照)が種々のフレームにおいて使用される。
【0089】
【0090】
コーデック構成に応じて、所与のCELPコアモジュールのビットレートに対して異なるビット配分割振があり得るということに留意することも興味深い。例として、EVSベースTDステレオコーディングモードにおける1次チャネルのエンコーディングは、第1のシナリオにおいて、16.4kbpsのトータルコーデックビットレートで機能し、第2のシナリオにおいて、24.4kbpsのトータルコーデックビットレートで機能する。両方のシナリオにおいて、トータルコーデックビットレートが異なっていても、CELPコアモジュールのビットレートが同じとなることが起こる可能性がある。しかし、異なるコーデック構成は、異なるビット配分の分配をもたらす可能性がある。
【0091】
EVSベースステレオフレームワークにおいて、16.4kbpsと24.4kbpsとの間の異なるコーデック構成は、それぞれ、16.4kbpsにおける12.8kHz、24.4kbpsにおける16kHzの、異なるCELPコア内部サンプリングレートに関するものである。このようにして、4つのサブフレーム、または5つのサブフレーム、を有するCELPコアモジュールコーディングが用いられ、対応するビット配分の分配が使用される。下記において、2つの言及されたトータルコーデックビットレートの間のこれらの相違が示される(テーブルセル毎の1つの値が、フレーム毎の1つのパラメータに対応する一方で、より多くの値が、サブフレーム毎のパラメータに対応する)。
【0092】
【0093】
したがって、上記のテーブルは、異なるコーデックトータルビットレートにおける同じコアビットレートに対して異なるビット配分の分配がある可能性があるということを示す。
【0094】
エンコーダ処理フロー
補足コーデックモジュールが、ステレオモジュールおよびBWEモジュールを備えるとき、エンコーダ処理のフローは、以下のようなものであることが可能である。
- ステレオ側(または2次チャネル)情報がエンコードされ、ステレオ側情報に割り振られたビット配分が、コーデックトータルビット配分から減算される。コーデックシグナリングビットも、トータルビット配分から減算される。
- BWE補足モジュールをエンコードするためのビット配分が、次に、ステレオモジュールおよびコーデックシグナリングビット配分を引いたコーデックトータルビット配分に基づいてセットされる。
- 「ステレオ補足モジュール」および「コーデックシグナリング」ビット配分を引いたコーデックトータルビット配分からBWEビット配分が減算される。
- コアモジュールのビット配分を割り振るための上述の手順が行われる。
- CELPコアモジュールが、エンコードされる。
- BWE補足モジュールが、エンコードされる。
【0095】
デコーダ
CELPコアモジュールのビットレートは、ビットストリームの中で直接的に信号を送られないが、補足コーデックモジュールのビット配分に基づいてデコーダにおいて計算される。ステレオおよびBWE補足モジュールを備える実装形態の例において、以下の手順が続くことが可能である。
- コーデックシグナリングは、ビットストリームに対して読書きされる。
- ステレオ側(または2次チャネル)情報は、ビットストリームに対して読書きされる。ステレオ側情報をコーディングするためのビット配分は変動し、ステレオ側シグナリング、および、コーディングのために使用される技法に依存する。基本的に、(a)パラメトリックステレオにおいて、算術コーダおよびステレオ側シグナリングは、ステレオ側情報の読書きをいつ停止するべきかを決定する一方で、(b)時間ドメインステレオコーディングにおいて、ミキシングファクタおよびコーディングモードは、ステレオ側情報のビット配分を決定する。
- コーデックシグナリングおよびステレオ側情報のためのビット配分は、コーデックトータルビット配分から減算される。
- 次に、BWE補足モジュールのためのビット配分も、コーデックトータルビット配分から減算される。BWEビット配分の粒度は通常小さく、すなわち、a)オーディオ帯域幅(WB/SWB/FB)毎に1つのビットレートが存在するだけであり、帯域幅情報は、ビットストリームの中でコーデックシグナリングの一部として伝送される、または、b)特定の帯域幅のためのビット配分は、一定の粒度を有することができ、BWEビット配分は、ステレオモジュールビット配分を引いたコーデックトータルビット配分から決定される。例証的な実施形態において、例えば、SWB時間ドメインBWEは、ステレオモジュールのビットレートを引いたコーデックトータルビットレートに応じて、0.95kbps、1.6kbps、または2.8kbpsのビットレートを有することができる。
【0096】
残るものはCELPコアビット配分bcoreであり、前述の説明において説明されたビット配分割振手順への入力パラメータである。CELPエンコーダ(事前処理の直後)において、およびCELPデコーダ(CELPフレームデコーディングの始め)において同じ割振りが要求される。
【0097】
以下は、ほんの一例として示される、汎用コーディングビット配分割振のための拡張EVSベースコーデックからのC-codeの抜粋である。
【0098】
【表8A】
【表8B】
【表8C】
【表8D】
【表8E】
【0099】
図3は、ビット配分割振デバイスを形成し、ビット配分割振方法を実行するハードウェア構成要素の構成例の簡素化したブロック図である。
【0100】
ビット配分割振デバイスは、モバイル端末の一部として、携帯型メディアプレーヤの一部として、または任意の類似デバイスの中に実装されることが可能である。(
図3において300として識別された)ビット配分割振デバイスは、入力302、出力304、プロセッサ306、およびメモリ308を備える。
【0101】
入力302は、例えばコーデックトータルビット配分b
total(
図2)を受信するように構成される。出力304は、様々な割り振られたビット配分を供給するように構成される。入力302および出力304は、例えばシリアル入出力デバイスといった、共通モジュールの中に実装されることが可能である。
【0102】
プロセッサ306は、入力302に、出力304に、およびメモリ308に、動作可能なように接続される。プロセッサ306は、
図2のビット配分割振デバイスの様々なモジュールの機能のサポートにおいてコード命令を実行するための1つまたは複数のプロセッサとして実現される。
【0103】
メモリ308は、プロセッサ306によって実行可能なコード命令を格納するための非一時的メモリ、具体的には、実行されると、
図2のビット配分割振方法およびデバイスの動作およびモジュールをプロセッサに実行させる非一時的命令を含むプロセッサ可読メモリを含むことができる。メモリ308は、プロセッサ306によって行われる様々な関数からの中間処理データを格納するためのランダムアクセスメモリまたはバッファを含むこともできる。
【0104】
当業者は、ビット配分割振方法およびデバイスの説明は例証的なものにすぎず、何らかの限定を意図するものではないということが分かるであろう。他の実施形態は、本開示の利益にあずかるこのような当業者に、他の実施形態自体を容易に思い起こさせるであろう。さらに、開示のビット配分割振方法およびデバイスは、ビット配分の割振りまたは分配に関する既存のニーズおよび問題に対する価値ある解決策を提供するようにカスタマイズされることが可能である。
【0105】
明瞭さのために、ビット配分割振方法およびデバイスの実装形態のありふれた特徴の全てが示され、説明されるわけではない。ビット配分割振方法およびデバイスの任意のこのような実際の実装形態の開発において、非常に多くの実装形態固有の判定が、アプリケーション関連の制約、システム関連の制約、ネットワーク関連の制約、およびビジネス関連の制約を伴うコンプライアンスなど、開発者の固有のゴールを実現するために行われる必要がある可能性があるということ、ならびに、これらの固有のゴールが、1つの実装形態から別の実装形態によって、および1人の開発者から別の開発者によって変化することになるということ、が当然、正しく認識されるであろう。その上、開発努力は、複雑かつ時間のかかるものである可能性があるが、それでも、本開示の利益にあずかる音響処理分野における当業者にとっては、エンジニアリングのありふれた仕事であろう、ということが理解されよう。
【0106】
本開示によれば、本明細書において説明されるモジュール、処理動作、および/またはデータ構造は、様々なタイプのオペレーティングシステム、コンピューティングプラットフォーム、ネットワークデバイス、コンピュータプログラム、および/または汎用マシンを使用して実行されることが可能である。さらに、配線接続デバイス、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または同様のものなどの汎用性の小さいデバイスが使用されることも可能であるということを当業者は認識するであろう。一連の動作およびサブ動作を含む方法が、プロセッサ、コンピュータまたはマシンによって実行され、これらの動作およびサブ動作が、プロセッサ、コンピュータ、またはマシンによって読むことができる一連の非一時的コード命令として格納されることが可能である場合、これらは、有形媒体および/または非一時媒体に格納されることが可能である。
【0107】
本明細書において説明されるようなビット配分割振方法およびデバイスのモジュールは、本明細書において説明される目的に適した、ソフトウェア、ファームウェア、ハードウェア、またはソフトウェア、ファームウェア、もしくはハードウェアの任意の組合せを含むことができる。
【0108】
本明細書において説明されるようなビット配分割振方法において、様々な動作およびサブ動作は、様々な順序で行われることが可能であり、動作およびサブ動作のうちのいくつかは任意選択であってよい。
【0109】
非限定的な例証的実施形態のために前述の本開示が行われるが、これらの実施形態は、本開示の精神および性質から逸脱することなく、添付の特許請求の範囲の範囲内で随意に修正されることが可能である。
【0110】
参考文献
以下の参考文献は、本明細書において参照され、その完全な内容が参照により本明細書に組み込まれる。
[1] ITU-T Recommendation G.718: "Frame error robust narrowband and wideband embedded variable bit-rate coding of speech and audio from 8-32 kbps," 2008.
[2] 3GPP Spec. TS 26.445: "Codec for Enhanced Voice Services (EVS). Detailed Algorithmic Description," v.12.0.0, Sep. 2014.
[3] B. Bessette, "Flexible and scalable combined innovation codebook for use in CELP coder and decoder," US Patent 9,053,705, June 2015.
[4] V. Eksler, "Transform-Domain Codebook in a CELP Coder and Decoder," US Patent Publication 2012/0290295, November 2012, and US Patent 8,825,475, September 2014.
[5] F. Baumgarte, C. Faller, "Binaural cue coding - Part I: Psychoacoustic fundamentals and design principles," IEEE Trans. Speech Audio Processing, vol. 11, pp. 509-519, Nov. 2003.
[6] Tommy Vaillancourt, "Method and system using a long-term correlation difference between left and right channels for time domain down mixing a stereo sound signal into primary and secondary channels," PCT Application WO2017/049397A1.
【符号の説明】
【0111】
100 ステレオ音響処理および通信システム、処理および通信システム
101 通信リンク
102 マイクロフォン
103 元のアナログステレオ音響信号の左チャネル
104 A/Dコンバータ、アナログ/デジタル(A/D)コンバータ
105 元のデジタルステレオ音響信号の左チャネル
106 ステレオ音響エンコーダ、音響エンコーダ、エンコーダ
107 ビットストリーム
108 エラー訂正エンコーダ
109 エラー訂正デコーダ
110 ステレオ音響デコーダ、音響デコーダ、デコーダ
111 ビットストリーム、デジタルビットストリーム
112 ビットストリーム
113 デジタルステレオ音響信号の合成された左チャネル
114 アナログステレオ音響信号の合成された左チャネル
115 D/Aコンバータ、デジタル/アナログ(D/A)コンバータ
116 ラウドスピーカーユニット
122 マイクロフォン
123 元のアナログステレオ音響信号の右チャネル
125 元のデジタルステレオ音響信号の右チャネル
133 デジタルステレオ音響信号の合成された右チャネル
134 アナログステレオ音響信号の合成された右チャネル
136 ラウドスピーカーユニット
200 ビット配分割振方法
201,202,204,205,206,207,208,209,210,211,212,213,214 動作
250 ビット配分割振デバイス
252 補足モジュールのビット配分のカウンタ、カウンタ
254 減算器
255 シグナリングビット配分のカウンタ、カウンタ
256 減算器
257 中間ビットレート選択器、選択器
258 コアモジュール部分のROMテーブル、ROMテーブル
259 CELPコアモジュールの第1の部分のビット配分のアロケータ、ビット配分アロケータ
260 減算器
261 FCBビットアロケータ
262 FCBビット配分のカウンタ、カウンタ
263 減算器
264 使われないビット配分のアロケータ、ビットアロケータ
300 ビット配分割振デバイス
302 入力
304 出力
306 プロセッサ
308 メモリ