(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【0012】
文中で使用する記号「^」「~」は、本来直後の文字の真上に記載されるべきものであるが、テキスト記法の制限により、当該文字の直前に記載する。数式中においてはこれらの記号は本来の位置、すなわち文字の真上に記述している。
【0013】
この発明では、符号化装置において、各サンプルが整数値である量子化スペクトル系列について、複数の量子化スペクトルを1つの整数値に統合し、統合後の整数値に対してビット割り当てを行うことで、統合前の量子化スペクトル系列に含まれる各サンプルに対する細かく効率のよいビット数の割り当てを実質的に実現する。
【0014】
量子化スペクトルの統合には、複数の整数値を1つの整数値に可逆に変換する全単射な変換を用い、復号装置においては1つの整数値を複数の整数値に変換する逆変換によって整数値を分離することで量子化スペクトル系列を得る。
【0015】
<第一実施形態>
この発明の第一実施形態のシステムは、符号化装置および復号装置を含む。符号化装置は、所定の時間長のフレーム単位で入力された時間領域の音信号を符号化して符号を得て出力する。符号化装置が出力する符号は復号装置へ入力される。復号装置は入力された符号を復号してフレーム単位の時間領域の音信号を出力する。符号化装置に入力される音信号は、例えば、音声や音楽などの音をマイクロホンで収音し、AD変換して得られた音声信号又は音響信号である。また、復号装置が出力した音信号は、例えば、DA変換され、スピーカで再生されることで、受聴可能とされる。
【0016】
≪符号化装置≫
図3及び
図4を参照して、第一実施形態の符号化装置の処理手続きを説明する。
図3に例示するように、第一実施形態の符号化装置100は、周波数領域変換部10、量子化幅取得部11、量子化部12、整数変換部13、ビット割当部14、整数符号化部15、及び多重化部16を含む。第一実施形態の符号化装置100が
図4に示す各ステップの処理を実行することにより第一実施形態の符号化方法が実現される。符号化装置100に入力された時間領域の音信号は周波数領域変換部10へ入力される。符号化装置100は、各部で所定の時間長のフレーム単位での処理を行う。
【0017】
なお、時間領域の音信号ではなく周波数領域の音信号を符号化装置100に入力する構成としてもよい。この構成とする場合には、符号化装置100には周波数領域変換部10を含まないでよく、所定の時間長のフレーム単位の周波数領域の音信号を量子化部12と量子化幅取得部11に入力すればよい。
【0018】
[周波数領域変換部10]
周波数領域変換部10には、符号化装置100に入力された時間領域の音信号が入力される。周波数領域変換部10は、所定の時間長のフレーム単位で、入力された時間領域の音信号を例えば修正離散コサイン変換(MDCT)などで周波数領域のN点の周波数スペクトル系列X
0,X
1,…,X
N-1に変換して出力する(ステップS10)。Nは正の整数であり、例えば予め定めた値でありN=32などである。また、Xに下付きで付してある添え字は周波数の低いスペクトルから順に振られている番号である。周波数領域への変換方法として、MDCTではない様々な公知の変換方法等(例えば、離散フーリエ変換、短時間フーリエ変換等)を用いてもよい。
【0019】
周波数領域変換部10は、変換により得た周波数スペクトル系列X
0,X
1,…,X
N-1を量子化部12と量子化幅取得部11に出力する。なお、周波数領域変換部10は、変換により得た周波数スペクトル系列に対して聴覚的な重み付けのためにフィルタ処理や圧伸処理を施し、フィルタ処理後や圧伸処理後の系列を周波数スペクトル系列X
0,X
1,…,X
N-1として出力してもよい。
【0020】
[量子化幅取得部11]
量子化幅取得部11には、周波数領域変換部10が出力した周波数スペクトル系列X
0,X
1,…,X
N-1が入力される。量子化幅取得部11は、入力された周波数スペクトル系列X
0,X
1,…,X
N-1を割り算するための値である量子化幅sと当該量子化幅sに対応する量子化幅符号CQとを出力する(ステップS11)。量子化幅取得部11は、従来的な方法で、例えば、予め用意してある量子化幅の候補の中で、入力された周波数スペクトル系列X
0,X
1,…,X
N-1のエネルギーや振幅の最大値に比例するような値に最も近い量子化幅をそのフレームでの量子化幅sとして決定することなどで量子化幅sを得て、得られた量子化幅sを量子化部12へ出力する。
【0021】
量子化幅取得部11は、決定した量子化幅sに対応する符号を得て、得た符号を量子化幅符号CQとして多重化部16に出力する。
【0022】
[量子化部12]
量子化部12には、周波数領域変換部10が出力した周波数スペクトル系列X
0,X
1,…,X
N-1、及び量子化幅取得部11が出力した量子化幅sが入力される。量子化部12は、入力された周波数スペクトル系列X
0,X
1,…,X
N-1の各周波数スペクトル値を量子化幅sで割り算した結果の整数部分の値による系列である量子化スペクトル系列^X
0,^X
1,…,^X
N-1を得て整数変換部13へ出力する(ステップS12)。
【0023】
[整数変換部13]
整数変換部13には、量子化部12が出力した量子化スペクトル系列^X
0,^X
1,…,^X
N-1が入力される。整数変換部13は、pを2以上の整数とし、また、N'をpとN'の積がNとなる正の整数として、入力された量子化スペクトル系列^X
0,^X
1,…,^X
N-1から所定の規則に従ってp個の整数値による整数組をN'組得て、それぞれの整数組について全単射な変換により1つの整数値である統合量子化スペクトルを得て、得たN'個の整数値(すなわち、統合量子化スペクトル)による系列である統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1をビット割当部14、及び整数符号化部15に出力する(ステップS13)。
【0024】
それぞれの整数組について全単射な変換により1つの整数値を得る方法としては、それぞれの整数組について代数的に表現可能な全単射な変換により1つの整数値を得る方法、それぞれの整数組についてマッピングテーブルを参照して1つの整数値を得る方法、それぞれの整数組について予め定めた規則により1つの整数値を得る方法、などを用いることができる。また、1つの整数値として1つの非負整数値を得るようにしてもよい。なお、後述するビット割当部14や整数符号化部15や復号装置200のビット割当復号部21や整数復号部22などの説明は、整数変換部13が1つの整数値として1つの非負整数値を得る構成に対応させたものとしてある。
【0025】
それぞれの整数組について代数的に表現可能な全単射な変換により1つの非負整数値を得る方法としては、例えば、整数組を構成する整数値がx
1, x
2の2つ(すなわち、p=2)である場合には、式(1)によって1つの非負整数値yを得る方法を用いる。
【0027】
ただし、整数i=1、2について、x'
iは、整数値x
iについての以下の式(2)を満たす非負整数値とする。
【0029】
なお、整数組を構成する各整数値x
1, x
2のそれぞれについて式(2)により非負整数値x'
1, x'
2を得て、得た非負整数値x'
1, x'
2による組から式(1)によって非負整数値yを得る方法としてもよいし、式(1)と式(2)を合せた変換式などにより整数組から非負整数値yを直接得る方法としてもよい。
【0030】
また、例えば整数組を構成する整数値がx
1,x
2,…,x
MのM個(すなわちp=M、ただしMは2以上の整数)であった場合、式(3)によって1つの非負整数値yを得る方法を用いる。
【0032】
ただし、整数i=1,2,…,Mについて、x'
iは、整数値x
iについての上記の式(2)を満たす非負整数値とし、f
M'(x'
1,x'
2,…,x'
M')はM'個の変数による系列(変数系列)x'
1,x'
2,…,x'
M'を入力とし、1変数を出力とする再帰的な関数であり、M'個の変数x'
1,x'
2,…,x'
M'の最大値をx'
max、最大値をとる変数の個数をK、最大値をとるK個の変数それぞれの変数系列内での番号をそれぞれm
1,m
2,…,m
K、変数系列x'
1,x'
2,…,x'
M'から最大値をとる変数を除いたM'-K個の変数による系列を~x'
1,~x'
2,…,~x'
M'-K、f
0を0、
M'C
KをM'個からK個を選択する組み合わせの数とすると、式(4)のように表せる。
【0034】
N'組の整数組を得る所定の規則は、例えば、入力された量子化スペクトル系列^X
0,^X
1,…,^X
N-1内の隣接するp個の整数値同士を整数組とする規則、すなわち、^X
0から^X
p-1まで、^X
pから^X
2p-1まで、・・・、^X
N-pから^X
N-1までをそれぞれ整数組とする規則などの、予め定めて符号化装置100と復号装置200に予め記憶しておける規則であればどのような規則であってもよい。
【0035】
隣接するp個の整数値同士を整数組とする規則であれば、整数変換部13は、入力された量子化スペクトル系列^X
0,^X
1,…,^X
N-1のうちの^X
0から^X
p-1までによる整数組から1つの整数値である統合量子化スペクトル^Y
0を得て、^X
pから^X
2p-1までによる整数組から1つの整数値である統合量子化スペクトル^Y
1を得て、・・・、^X
N-pから^X
N-1までによる整数組から1つの整数値である統合量子化スペクトル^Y
N'-1を得て、得た整数値(すなわち、統合量子化スペクトル)による系列である統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1を出力する。
【0036】
上記の整数組を1つの整数にする変換は、量子化スペクトル系列に含まれる複数のサンプルを1つのサンプルにすることにより、後段で行う統合量子化スペクトル系列の符号化において量子化スペクトル系列の各値に実質的に割り当てる平均ビット数をより細かく調節することを目的としている。例えば、2個の量子化スペクトル値を変換して得た1個の統合量子化スペクトル値を1ビットで符号化できたとすると、2個の量子化スペクトルそれぞれは平均で1/2ビット(2分の1ビット)で符号化できたこととなる。また例えば、3個の量子化スペクトル値を変換して得た1個の統合量子化スペクトル値を5ビットで符号化できたとすると、3個の量子化スペクトルそれぞれは平均で5/3ビット(3分の5ビット)で符号化できたこととなる。すなわち、p個の量子化スペクトル値を変換して得た統合量子化スペクトルを符号化すれば、その符号化処理においては統合量子化スペクトルそれぞれには1ビット単位での割り当てビット数の調整を行うことになるものの、量子化スペクトルそれぞれに割り当てる平均ビット数は実質的には1/pビット単位(p分の1ビット単位)で調節することができ、p個の量子化スペクトルそれぞれにビット数を割り当てるのと比べ、より細かなビット割り当てが可能となる。なお、上記の整数組を1つの整数にする変換のことを、以降では整数変換と呼び、変換により得た整数のことを変換後整数と呼ぶことがある。
【0037】
上記整数組を構成する整数値の個数は多ければ多いほど、量子化スペクトルに実質的に割り当てる平均ビット数は細かく調節することが可能となるが、同時に整数変換に必要な演算量も増えてしまう。従って、上記の整数組を構成する整数値の個数pは、これらのことを考慮して、事前の実験等により予め定めて符号化装置100と復号装置200に記憶しておけばよい。また、上述した通りN'は、pとN'の積がNとなる数であるので、pと同様に符号化装置100と復号装置200に予め記憶しておけばよい。
【0038】
[ビット割当部14]
ビット割当部14には、整数変換部13が出力した統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1が入力される。ビット割当部14は、例えば、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各統合量子化スペクトルに対応するビット割当値B
0,B
1,…,B
N'-1によるビット割当系列B
0,B
1,…,B
N'-1と当該ビット割当系列に対応するビット割当符号Cbとを得て、得られたビット割当系列B
0,B
1,…,B
N'-1を整数符号化部15へ、ビット割当符号Cbを多重化部16へ、それぞれ出力する(ステップS14)。
【0039】
ビット割当部14の一例として、後述する整数符号化部15を統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各統合量子化スペクトルの2底対数値による系列である統合量子化対数スペクトル系列L
0,L
1,…,L
N'-1を表す
信号符号CXを得る構成とする場合の例を説明する。ビット割当部14内の図示しない記憶部に、予め、N'個の整数で構成される対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の複数個の候補についての、各候補の対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1と、各候補の各対数スペクトル包絡値を指数とした2のべき乗の系列であるスペクトル包絡系列HC
0,HC
1,…,HC
N'-1と、各候補に対応する符号と、による組を記憶しておく。すなわち、ビット割当部14内の図示しない記憶部には、対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補と、当該対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補に対応するスペクトル包絡系列HC
0,HC
1,…,HC
N'-1の候補と、当該対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補を特定可能な符号と、による組が複数組予め記憶されている。ビット割当部14は、当該記憶部に予め記憶された複数個の組のうち、スペクトル包絡系列HC
0,HC
1,…,HC
N'-1の候補が入力された統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1に対応する組を選択して、当該選択した組の対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補をビット割当系列B
0,B
1,…,B
N'-1として出力し、当該選択した組の符号をビット割当符号Cb(ビット割当を表す符号)として得て出力する。
【0040】
例えば、ビット割当部14は、当該記憶部内に記憶されたスペクトル包絡系列HC
0,HC
1,…,HC
N'-1の候補それぞれについて、入力された統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1中の各統合量子化スペクトル値^Y
kをスペクトル包絡系列HC
0,HC
1,…,HC
N'-1の候補中の対応する各スペクトル包絡値HC
kで除算して得られる比の系列のエネルギーを求め、エネルギーが最小となるスペクトル包絡系列HC
0,HC
1,…,HC
N'-1の候補に対応する対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補であるビット割当系列B
0,B
1,…,B
N'-1とビット割当符号Cbとを出力する。
【0041】
後述する整数符号化部15が統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1を符号化して得る信号符号CXは、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各統合量子化スペクトルの2底対数値による系列である統合量子化対数スペクトル系列L
0,L
1,…,L
N'-1の各統合量子化対数スペクトル値の桁数の二進数である符号CX
0,CX
1,…,CX
N'-1により構成される。ここで、ビット割当部14が選択した組のスペクトル包絡系列HC
0,HC
1,…,HC
N'-1の候補が入力された統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1に対応するということは、ビット割当部14が選択した組の対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補が統合量子化対数スペクトル系列L
0,L
1,…,L
N'-1に対応することになる。そこで、ビット割当部14は、選択した組の対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補をビット割当系列B
0,B
1,…,B
N'-1とし、当該選択した組の符号をビット割当符号Cbとして、それぞれ出力するのである。
【0042】
なお、各候補の対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1と、各候補の各対数スペクトル包絡値を指数とした2のべき乗の系列であるスペクトル包絡系列HC
0,HC
1,…,HC
N'-1と、は何れか一方のみを記憶部に記憶しておき、他方をビット割当部14で計算するようにしてもよい。
【0043】
[整数符号化部15]
整数符号化部15には、整数変換部13が出力した統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1、及びビット割当部14が出力したビット割当系列B
0,B
1,…,B
N'-1が入力される。整数符号化部15は、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各値を、それに対応するビット割当系列B
0,B
1,…,B
N'-1の各ビット割当値のビット数の符号を得るように符号化して、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各値に対応する符号CX
0,CX
1,…,CX
N'-1を得て、得た符号CX
0,CX
1,…,CX
N'-1全てを合せたものである信号符号CXを多重化部16へ出力する(ステップS15)。
【0044】
整数符号化部15は、例えば、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各統合量子化スペクトル値を二進数で表した符号を得て、得た各符号をビット割当系列B
0,B
1,…,B
N'-1が示す各ビット数に収めて符号CX
0,CX
1,…,CX
N'-1とし、符号CX
0,CX
1,…,CX
N'-1全てを合せたものである信号符号CXを得て出力する。すなわち、整数符号化部15は、例えば、ビット割当系列B
0,B
1,…,B
N'-1中のビット割当値B
kが5であるなら、入力された統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1中の対応する統合量子化スペクトル値^Y
kを5桁の二進数で表したものを符号CX
kとして得る、といったような符号化処理を行う。
【0045】
[多重化部16]
多重化部16は、量子化幅取得部11が出力した量子化幅符号CQと、ビット割当部14が出力したビット割当符号Cbと、整数符号化部15が出力した信号符号CXと、を受け取り、これらの符号全てを含む出力符号、例えば量子化幅符号CQとビット割当符号Cbと信号符号CXを繋ぎ合わせて得た出力符号、を出力する(ステップS16)。
【0046】
≪復号装置≫
図5及び
図6を参照して、第一実施形態の復号装置の処理手続きを説明する。
図5に例示するように、第一実施形態の復号装置200は、多重分離部20、ビット割当復号部21、整数復号部22、整数逆変換部23、逆量子化部24、時間領域変換部25を含む。第一実施形態の復号装置200が
図6に示す各ステップの処理を実行することにより、第一実施形態の復号方法が実現される。復号装置200には符号化装置100が出力した符号が入力される。すなわち、復号装置200には符号化装置100が出力した出力符号が入力符号として入力される。復号装置200に入力された入力符号は多重分離部20へ入力される。復号装置200は、各部で所定の時間長のフレーム単位での処理を行う。
【0047】
[多重分離部20]
多重分離部20には、復号装置200に入力された入力符号が入力される。多重分離部20は、入力符号をフレーム毎に受け取り、入力符号を分離して、入力符号に含まれるビット割当符号Cbをビット割当復号部21へ、入力符号に含まれる量子化幅符号CQを逆量子化部24へ、入力符号に含まれる信号符号CXを整数復号部22へ、それぞれ出力する(ステップS20)。
【0048】
[ビット割当復号部21]
ビット割当復号部21内の図示しない記憶部には、予め、対応する符号化装置100のビット割当部14の図示しない記憶部に記憶されているのと同じN'個の整数で構成される対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の複数個の候補について、各候補の対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1と、各系列に対応する符号と、による組を記憶しておく。すなわち、ビット割当復号部21内の図示しない記憶部には、対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補と、当該対数スペクトル包絡系列LC
0,LC
1,…,
LCN'-1の候補を特定可能な符号と、による組が複数組予め記憶されている。ビット割当復号部21には、多重分離部20が出力したビット割当符号Cbが入力される。ビット割当復号部21は、入力されたビット割当符号Cbに対応する対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補を記憶部から得て、得られた対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補をビット割当系列B
0,B
1,…,B
N'-1として得て、得られたビット割当系列B
0,B
1,…,B
N'-1を整数復号部22に出力する(ステップS21)。すなわち、ビット割当復号部21は、当該記憶部に予め記憶された複数個の組のうち、符号がビット割当符号Cbに対応する組を選択し、当該選択した組の対数スペクトル包絡系列の候補をビット割当系列B
0,B
1,…,B
N'-1として得て、得られたビット割当系列B
0,B
1,…,B
N'-1を整数復号部22に出力する。
【0049】
なお、対応する符号化装置100のビット割当部14の図示しない記憶部には、各候補の対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1と、各候補の各対数スペクトル包絡値を指数とした2のべき乗の系列であるスペクトル包絡系列HC
0,HC
1,…,HC
N'-1と、の少なくとも何れかを記憶部に記憶していたが、復号装置200のビット割当復号部21ではスペクトル包絡系列HC
0,HC
1,…,HC
N'-1は用いないので、スペクトル包絡系列HC
0,HC
1,…,HC
N'-1は記憶しておく必要はなく、対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1と各系列に対応する符号とによる組を記憶しておけばよい。
【0050】
[整数復号部22]
整数復号部22には、多重分離部20が出力した信号符号CX、及びビット割当復号部21が出力したビット割当系列B
0,B
1,…,B
N'-1が入力される。整数復号部22は、信号符号CXをビット割当系列B
0,B
1,…,B
N'-1の各ビット割当値が示すビット数の符号CX
0,CX
1,…,CX
N'-1に分けて、符号CX
0,CX
1,…,CX
N'-1それぞれを復号して復号統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1を得て、得た復号統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1を整数逆変換部23へ出力する(ステップS22)。
【0051】
整数復号部22は、例えば、各符号CX
0,CX
1,…,CX
N'-1が表す二進数を各復号統合量子化スペクトル値とする復号統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1を得て出力する。すなわち、整数復号部22は、例えば、ビット割当系列B
0,B
1,…,B
N'-1中のビット割当値B
kが5であるなら、入力された信号符号CX中の対応する5ビットの符号CX
kを5桁の二進数とした値を復号統合量子化スペクトル値^Y
kとして得る、といったような復号処理を行う。
【0052】
[整数逆変換部23]
整数逆変換部23には、整数復号部22が出力した復号統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1が入力される。整数逆変換部23は、入力された復号統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1に含まれる整数値それぞれについて第一実施形態の符号化装置100の整数変換部13が行った変換と逆の変換を行ってp個の整数値による整数組をN'組得て、得たN'組の整数組から第一実施形態の符号化装置100の整数変換部13が行った規則に対応する規則に従って復号量子化スペクトル系列^X
0,^X
1,…,^X
N-1を得て出力する(ステップS23)。
【0053】
第一実施形態の符号化装置100の整数変換部13が式(1)と式(2)による変換を行った場合には、整数逆変換部23は、式(1)と式(2)による変換の逆の変換として、式(5)によって1つの非負整数値yから2つの非負整数値x'
1, x'
2を得、整数i=1、2について非負整数値x'
iから以下の式(6)により正負符号のある整数値x
iを得る処理により、整数値x
1, x
2を得る。
【0057】
は、yの平方根の床関数、すなわち、yの平方根を超えない最も大きい整数である。
【0058】
また、第一実施形態の符号化装置100の整数変換部13が式(3)と式(2)による変換を行った場合には、整数逆変換部23は、式(3)と式(2)による変換の逆の変換として、式(7)によって1つの非負整数値yからM個の非負整数値x'
1,x'
2,…,x'
Mを得、整数i=1,2,…,Mについて、非負整数値x'
iから上記の式(6)により正負符号のある整数値x
iを得る処理により、整数値x
1,x
2,…,x
Mを得るものを用いる。
【0060】
ただし、f
M'-1(y)は1変数を入力としてM'個の変数を出力とする再帰的な関数であり、yを超えない最大のM'次平方根
【0066】
により得られるM'-K個の変数からなる変数系列~x'
1,~x'
2,…,~x'
M'-Kと、
【0068】
を
M'C
Kで割った余りであるλ
M'を用いて、m=0からm=M'-1までに関してそれぞれ、i
1=0, i
2=0を初期値として式(8)を計算することでM'個の非負整数値x'
1,x'
2,…,x'
M'を得て、出力するものである。
【0070】
また、f
0-1(y)は何も出力しない関数を意味する。
【0071】
[逆量子化部24]
逆量子化部24には、多重分離部20が出力した量子化幅符号CQと、整数逆変換部23が出力した復号量子化スペクトル系列^X
0,^X
1,…,^X
N-1と、が入力される。逆量子化部24は、入力された量子化幅符号CQを復号して量子化幅sを得る。また、逆量子化部24は、入力された復号量子化スペクトル系列^X
0,^X
1,…,^X
N-1の各復号量子化スペクトル値と、復号により得た量子化幅sとを掛け合わせて得た値の系列である復号周波数スペクトル系列XD
0,XD
1,…,XD
N-1を得て時間領域変換部25に出力する(ステップS24)。
【0072】
[時間領域変換部25]
時間領域変換部25には、逆量子化部24が出力した復号周波数スペクトル系列XD
0,XD
1,…,XD
N-1が入力される。時間領域変換部25は、フレーム毎に、復号周波数スペクトル系列XD
0,XD
1,…,XD
N-1を、符号化装置100の周波数領域変換部10が行った周波数領域への変換方法に対応する時間領域への変換方法、例えば逆MDCT、を用いて時間領域の信号に変換してフレーム単位の音信号(復号音信号)を得て出力する(ステップS25)。
【0073】
なお、符号化装置100の周波数領域変換部10において、変換により得た周波数スペクトル系列に対して聴覚的な重み付けのためのフィルタ処理や圧伸処理を施した場合は、時間領域変換部25は、これらの処理に対応する逆フィルタ処理や逆圧伸処理を復号周波数スペクトル系列に行ったものを時間領域の信号に変換して得た復号音信号を出力する。
【0074】
なお、時間領域の復号音信号ではなく周波数領域の復号音信号を復号装置200が出力する構成としてもよい。この構成とする場合には、復号装置200には時間領域変換部25を含まないでよく、逆量子化部24が得たフレーム単位の復号周波数スペクトル系列を時間区間順に連結して周波数領域の復号音信号として出力すればよい。
【0075】
<第一実施形態の変形例>
第一実施形態の符号化装置100では、周波数スペクトル系列X
0,X
1,…,X
N-1を量子化する前に得られた量子化幅sを用いて量子化(割り算)を行ってから整数変換を行うことにより得た統合量子化スペクトル系列を整数符号化部15で符号化して信号符号CXを得ていた。第一実施形態の符号化装置100では、整数符号化部15が各統合量子化スペクトル値^Y
kを二進数で表した符号を得ることから、統合量子化スペクトル値^Y
kによっては得た符号のビット数がビット割当値B
k、すなわち、想定していた上限ビット数、を超えてしまう場合がある。その場合、対応する復号装置200では正しく復号できなくなってしまうことから、符号化装置で量子化幅を大きくして量子化、及び符号化をしなおすことにより整数符号化部が得る符号のビット数を少なくしてビット割当値B
kを超えないようにすることが可能であるが、量子化幅が大きすぎると量子化が粗くなりすぎ、復号信号の精度の低下につながる。つまり符号化装置は、整数符号化部が得る符号のビット数がビット割当値を超えない中で最小の量子化幅を用いるのがよい。そこで第一実施形態の変形例の符号化装置101は、各フレームにおいて反復的に量子化、整数変換、及び符号化を行い、その都度量子化幅を調節して更新することで最適な量子化幅を得る。
【0076】
図7及び
図8を参照して、第一実施形態の変形例の符号化装置101の処理手続きを説明する。
図7に例示するように、第一実施形態の変形例の符号化装置101は、第一実施形態の符号化装置100の構成に加えて量子化幅更新部17を備え、
図8に例示するように、量子化部12、整数変換部13、ビット割当部14、及び量子化幅更新部17での処理を反復的に行う。以下、第一実施形態の符号化装置100と異なる点についてのみ説明する。
【0077】
[変形例の量子化幅取得部11]
変形例の量子化幅取得部11は、第一実施形態の量子化幅取得部11と同様に量子化幅sを得て、得られた量子化幅sを量子化部12、及び量子化幅更新部17へ出力する。この量子化幅sが量子化部12の処理で用いられる量子化幅の初期値となる(ステップS11)。
【0078】
[変形例の量子化部12]
変形例の量子化部12は、周波数領域変換部10が出力した周波数スペクトル系列X
0,X
1,…,X
N-1、及び量子化幅取得部11或いは量子化幅更新部17が出力した量子化幅sを用いて、第一実施形態の量子化部12と同様に、入力された周波数スペクトル系列X
0,X
1,…,X
N-1の各周波数スペクトル値を量子化幅sで割り算した結果の整数部分の値による系列である量子化スペクトル系列^X
0,^X
1,…,^X
N-1を得て整数変換部13へ出力する(ステップS12)。ここで、量子化部12が各フレームでの初回に実行される際に用いられる量子化幅sは、量子化幅取得部11が得た量子化幅s、すなわち量子化幅の初期値である。また、量子化部12が2回目以降に実行される際に用いられる量子化幅sは、量子化幅更新部17が得た量子化幅s、すなわち量子化幅の更新値である。
【0079】
[変形例のビット割当部14]
変形例のビット割当部14は、まず、第一実施形態のビット割当部14と同じ処理により、入力された統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各統合量子化スペクトルに対応するビット割当系列B
0,B
1,…,B
N'-1と当該ビット割当系列に対応するビット割当符号Cbとを得る(ステップS14−1)。
【0080】
ビット割当部14は、次に、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各値が、それぞれに割り当てられたビット数であるB
0,B
1,…,B
N'-1ビットで表現できる値の範囲内であるか否かを判定する(ステップS14−2)。具体的には、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1中の各統合量子化スペクトルの2底対数値のうち、ビット割当系列B
0,B
1,…,B
N'-1中の対応するビット割当値を超えるものが1つもないか否か、を判定する。ビット割当部14は、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1中の各統合量子化スペクトルの2底対数値のうち、ビット割当系列B
0,B
1,…,B
N'-1中の対応するビット割当値を超えるものが1つもないと判定し、すなわち、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各値がそれぞれに割り当てられたビット数であるB
0,B
1,…,B
N'-1ビットで表現できる値の範囲内であると判定し、且つ量子化幅の更新回数が予め定めた回数以上の場合(ステップS14−2のYES)には、ビット割当系列B
0,B
1,…,B
N'-1を出力するとともに、多重化部16に対しビット割当符号Cbを出力し、量子化幅更新部17に対し量子化幅更新部17が得た量子化幅に対応する符号である量子化幅符号CQを多重化部16へ出力する指示信号を出力する(ステップS14−3)。ビット割当部14は、それ以外の場合には
、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各2底対数値からそれぞれに対応するビット割当系列B
0,B
1,…,B
N'-1の値を引いた値の系列中の最大値を最大不足ビット数Bとして得て量子化幅更新部17へ出力する(ステップS14−2のNO)。なお、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各2底対数値は、整数符号化部15が統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各値を符号化することにより得る符号のビット数である。
【0081】
[量子化幅更新部17]
量子化幅更新部17は、ビット割当部14が出力した最大不足ビット数Bを受け取り、Bが正の場合、つまり統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1に割り当てるべきビット数が不足している場合には量子化幅sの値を大きな値に更新し、Bが負の場合、つまり統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1に割り当てるべきビット数が余っている場合には量子化幅sの値を小さな値に更新し、さらに、量子化幅の更新回数をインクリメントし、更新後の量子化幅sの値(量子化幅sの更新値)を量子化部12へ出力する(ステップS17−1)。
【0082】
また、量子化幅更新部17は、ビット割当部14から量子化幅符号CQを多重化部16へ出力する指示信号が入力された場合には、量子化幅sに対応する符号を得て、得た符号を量子化幅符号CQとして多重化部16に出力する(ステップS17−2)。
【0083】
<第二実施形態>
上記第一実施形態の変形例の符号化装置101によれば、量子化幅更新部17において、整数符号化部15において統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1をビット割当部14にて定めたビット数で表現できる量子化幅の中での最小の値を反復的に求め、量子化幅の値を決定することで、量子化歪みの小さい符号化を行うことができる。しかしこの場合には、量子化部12、ビット割当部14、及び整数変換部13の処理を複数回行う必要があり、演算量が多く必要となる可能性がある。量子化部12、ビット割当部14、及び整数変換部13の処理を複数回行う必要があるのは、量子化部12が周波数スペクトル系列X
0,X
1,…,X
N-1を量子化してみなければ、その量子化後の整数値の系列である量子化スペクトル系列^X
0,^X
1,…,^X
N-1を変換した統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1を得られないことに起因する。そこで第二実施形態の符号化装置は、量子化前に、整数符号化部に入力され得る統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の形状、つまり統合量子化スペクトル系列の大まかな大小関係を推定する符号化対象推定部を用いて、ビット割当部によるビット割り当てと同時に量子化幅取得部で量子化幅を決定することにより、ビット割当部、整数変換部の処理を複数回行う必要なく適切な量子化幅の値を決定する。
【0084】
この発明の第二実施形態のシステムは、第一実施形態のシステムと同様に、符号化装置と復号装置を含む。ただし、第一実施形態とは符号化装置のみが異なり、復号装置は第一実施形態と同じである。
【0085】
≪符号化装置≫
図9及び
図10を参照して、第二実施形態の符号化装置の処理手続きを説明する。
図9に例示するように、第二実施形態の符号化装置102は、周波数領域変換部10、符号化対象推定部18、量子化幅取得部11、量子化部12、整数変換部13、ビット割当部14、整数符号化部15、及び多重化部16を含む。
図9の第二実施形態の符号化装置102が
図3の第一実施形態の符号化装置100と異なるのは、符号化対象推定部18を備え、周波数領域変換部10が周波数スペクトル系列を符号化対象推定部18にも出力し、ビット割当部14が符号化対象推定部18の出力を入力とした動作をし、量子化幅取得部11が符号化対象推定部18、及びビット割当部14の出力を入力とした動作をするところである。第二実施形態の符号化装置102のその他の構成、すなわち、量子化部12、整数変換部13、整数符号化部15の動作は第一実施形態の符号化装置100のものと同様である。以下、第一実施形態の符号化装置100と異なる点についてのみ説明する。
【0086】
[第二実施形態の周波数領域変換部10]
第二実施形態の周波数領域変換部10は、第一実施形態の符号化装置100の周波数領域変換部10と同じ動作をするが、出力先のみが異なる。周波数領域変換部10は、フレーム単位で、符号化装置102に入力された時間領域の音信号を周波数領域のN点の周波数スペクトル系列X
0,X
1,…,X
N-1に変換して量子化部12、及び符号化対象推定部18へ出力する(ステップS10)。第一実施形態と同様に、Nは予め定めた正の数pとN'の積で表されているものとする。
【0087】
[符号化対象推定部18]
符号化対象推定部18には、周波数領域変換部10が出力した周波数スペクトル系列X
0,X
1,…,X
N-1が入力される。符号化対象推定部18は、入力された周波数スペクトル系列X
0,X
1,…,X
N-1から整数変換部13と同じ規則に従ってp個の整数値による整数組をN'組得て、それぞれの整数組について整数変換部13が行う全単射な変換と同じ変換またはその変換前後の値の大小関係を近似する変換により1つの整数値である推定統合スペクトルを得て、得たN'個の整数値(すなわち、推定統合スペクトル)による系列である推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1をビット割当部14、及び量子化幅取得部11に出力する(ステップS18)。整数変換部13が行うのと同じ変換を行う場合には、例えば、それぞれの整数組について代数的に表現可能な全単射な変換により1つの整数値を得る方法として、整数変換部13と同じ式(1)と式(2)による変換や、式(2)から式(4)による変換を、例えば用いる。また、式(1)や式(4)はその第一項、つまり入力をp乗している項の値が支配的であり、量子化幅の取得に際しては、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の形状、つまり、量子化スペクトル系列^X
0,^X
1,…,^X
N-1を整数変換して得られる統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1における統合量子化スペクトルの値の大小関係が求められることが重要であることから、整数変換部13が式(1)と式(2)による変換を行う場合には、符号化対象推定部18での変換は、全単射ではないが、整数変換部13が行う変換の変換前後の値の大小関係を近似する変換として、式(1)に代えて式(1)の右辺を第一項のみとした式を用いてもよい。同様に、整数変換部13が式(2)から式(4)による変換を行う場合には、符号化対象推定部18での変換は、整数変換部13が行う変換の変換前後の値の大小関係を近似する変換として、式(4)に代えて式(4)の右辺を第一項のみとした式を用いてもよい。
【0088】
このように、符号化対象推定部18は、整数変換部13と同じ変換、または、整数変換部13が行う変換の変換前後の値の大小関係を近似する変換、を周波数スペクトル系列X
0,X
1,…,X
N-1に行って推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1を得ることで、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の形状を推定し、ビットの割り当てと適切な量子化幅の値の推定の手がかりとする。
【0089】
[第二実施形態のビット割当部14]
第二実施形態のビット割当部14には、符号化対象推定部18が出力した推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1が入力される。ビット割当部14は例えば、推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1の各推定統合スペクトルに対応するビット割当値B
0,B
1,…,B
N'-1による系列であるビット割当系列B
0,B
1,…,B
N'-1と当該ビット割当系列に対応するビット割当符号Cbとを得て、得られたビット割当系列B
0,B
1,…,B
N'-1を整数符号化部15と量子化幅取得部11へ、ビット割当符号Cbを多重化部16へ、それぞれ出力する(ステップS14)。
【0090】
ビット割当部14の一例として、第一実施形態と同様に、整数符号化部15を統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各統合量子化スペクトルの2底対数値による系列である統合量子化対数スペクトル系列L
0,L
1,…,L
N'-1を表す
信号符号CXを得る構成とする場合の例を説明する。
【0091】
ビット割当部14内の図示しない記憶部に、予め、N'個の整数で構成される対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の複数個の候補についての、各候補の対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1と、各候補の各対数スペクトル包絡値を指数とした2のべき乗の系列であるスペクトル包絡系列HC
0,HC
1,…,HC
N'-1と、各候補に対応する符号と、による組を記憶しておく。すなわち、ビット割当部14内の図示しない記憶部には、対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補と、当該対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補に対応するスペクトル包絡系列HC
0,HC
1,…,HC
N'-1の候補と、当該対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補を特定可能な符号と、による組が複数組予め記憶されている。ビット割当部14は、当該記憶部に予め記憶された複数個の組のうち、スペクトル包絡系列HC
0,HC
1,…,HC
N'-1の候補が入力された推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1に対応する組を選択して、当該選択した組の対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補をビット割当系列B
0,B
1,…,B
N'-1として出力し、当該選択した組の符号をビット割当符号Cb(ビット割当を表す符号)として得て出力する。
【0092】
例えば、ビット割当部14は、当該記憶部内に記憶されたスペクトル包絡系列HC
0,HC
1,…,HC
N'-1の候補のそれぞれについて、入力された推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1中の各推定統合スペクトル値~Y
kをスペクトル包絡系列HC
0,HC
1,…,HC
N'-1の候補中の対応する各スペクトル包絡値HC
kで除算して得られる比の系列のエネルギーを求め、エネルギーが最小となるスペクトル包絡系列HC
0,HC
1,…,HC
N'-1の候補に対応する対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1の候補であるビット割当系列B
0,B
1,…,B
N'-1とビット割当符号Cbとを出力する。
【0093】
整数符号化部15が統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1を符号化して得る信号符号CXは、統合量子化スペクトル系列^Y
0,^Y
1,…,^Y
N'-1の各統合量子化スペクトルの2底対数値による系列である統合量子化対数スペクトル系列L
0,L
1,…,L
N'-1の各統合量子化対数スペクトル値の桁数の二進数である符号CX
0,CX
1,…,CX
N'-1を合せたものである。
【0094】
なお、各候補の対数スペクトル包絡系列LC
0,LC
1,…,LC
N'-1と、各候補の各対数スペクトル包絡値を指数とした2のべき乗の系列であるスペクトル包絡系列HC
0,HC
1,…,HC
N'-1と、は何れか一方のみを記憶部に記憶しておき、他方をビット割当部14で計算するようにしてもよい。
【0095】
[第二実施形態の量子化幅取得部11]
第二実施形態の量子化幅取得部11には、符号化対象推定部18が出力した推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1と、ビット割当部14が出力したビット割当系列B
0,B
1,…,B
N'-1と、が入力される。量子化幅取得部11は、推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1とビット割当系列B
0,B
1,…,B
N'-1から量子化幅sと量子化幅sに対応する符号である量子化幅符号CQを得、得た量子化幅sを量子化部12へ、量子化幅符号CQを多重化部16へそれぞれ出力する(ステップS11)。
【0096】
量子化幅取得部11は、推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1とビット割当系列B
0,B
1,…,B
N'-1から例えば次のように量子化幅sを得る。量子化幅取得部11はまず、ビット割当系列B
0,B
1,…,B
N'-1の各ビット割当値を指数とした2のべき乗の系列であるスペクトル包絡系列H
0,H
1,…,H
N'-1の各値を用いて、推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1の各値を除算して、除算結果の系列を得る。除算結果の系列の各値の振幅は、ビット割当系列B
0,B
1,…,B
N'-1に従うビット割り当てで表現できる値の範囲から推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1の各値がそれぞれ何倍だけ逸脱しているかを表すものである。また上述のとおり、整数変換部13における整数変換は、入力をp乗している項の値が支配的であるため、推定統合スペクトル系列~Y
0,~Y
1,…,~Y
N'-1の各推定統合スペクトルの値はおおよそ周波数スペクトル系列X
0,X
1,…,X
N-1の各周波数スペクトルの値をp乗した程度の値となっている。したがって、量子化幅取得部11は、例えば、除算結果の系列に含まれる各除算結果の振幅のうちの最大値を得て、得た最大値のp乗根を量子化幅sとして決定する。そして、量子化幅取得部11は、決定した量子化幅sに対応する符号を得て、得た符号を量子化幅符号CQとして多重化部16に出力する。
【0097】
なお、除算結果の系列に含まれる各除算結果の振幅のうちの最大値のp乗根に代えて、その値より少し大きな値を用いてもよい。例えば、除算結果の系列に含まれる各除算結果の振幅のうちの最大値に予め定めた正の数を加算した値のp乗根、または、その最大値に予め定めた1より大きな数を乗算した値のp乗根を量子化幅sとして決定してもよい。また、除算結果の系列に含まれる各除算結果の振幅のうちの最大値のp乗根に予め定めた正の数を加算した値、または、除算結果の系列に含まれる各除算結果の振幅のうちの最大値のp乗根に予め定めた1より大きな数を乗算した値を量子化幅sとして決定してもよい。すなわち、量子化幅取得部11は、除算結果の系列に含まれる各除算結果の振幅のうちの最大値のp乗根以上かつ当該p乗根の近傍の値を量子化幅sとして決定すればよい。
【0098】
[第二実施形態の多重化部16]
第二実施形態の多重化部16は、量子化幅取得部11が出力した量子化幅符号CQ、及びビット割当部14が出力したビット割当符号Cbと、整数符号化部15が出力した信号符号CXとを受け取り、これらの符号全てを含む出力符号(例えば全ての符号を繋ぎ合わせて得た出力符号)を、出力する(ステップS16)。
【0099】
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【0100】
[プログラム、記録媒体]
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【0101】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0102】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0103】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0104】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。