説明

ベクトル量子化符号化装置、ベクトル量子化復号化装置、それらの方法、それらのプログラム、及びそれらの記録媒体

【課題】符号量を増大させることなく、入力ベクトルを符号化する。
【解決手段】周波数領域の複数のサンプルからなる入力ベクトルAのサンプルDの個数をインタリーブサブベクトルCの個数Nで除算し、除算の余りの2倍の個数のサンプルを入力ベクトルAの高周波数側から取り出すことで、高周波数側ベクトルXを生成し(4、S4)、高周波数側ベクトルX中の隣り合う2サンプルの重み付け平均値をサンプル値とする平均ベクトルYを生成し(6、S6)、除算の商をサブベクトルサンプル数Sと定め、入力ベクトルA中の高周波数側ベクトルX以外の残余ベクトルZのサンプルと、平均ベクトルYのサンプルとを割り振って、全てが同じサブベクトルサンプル数SのインタリーブサブベクトルCを生成し(8、S8)、インタリーブサブベクトルCをベクトル量子化して、インデックスを生成する(10、S10)。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、音声信号や映像信号などの信号をIPネットワークなどによる通信や蓄積に利用するベクトル量子化符号化装置、ベクトル量子化復号化装置、それらの方法、それらのプログラム、及びそれらの記録媒体に関する。
【背景技術】
【0002】
音声信号や映像信号などの信号を効率的に送信したり蓄積したりする様々な技術が提案されている。特許文献1記載の符号化方法では、まず、入力された信号を周波数領域に変換して周波数領域信号を生成する。そして、この周波数領域信号を一定の長さ毎に分割する。この分割された周波数領域信号を複数のサンプル(要素)からなるベクトルとみなす。以下の説明ではこのベクトルを入力ベクトルAという。そして、入力ベクトルAのd番目のサンプルを入力サンプルa(d)とする。ただし、dをサンプル番号という場合もあり、d=0、...、D−1とし、Dは1つの入力ベクトルが有するサンプル数であり、Dは予め定められた2以上の整数である。更に、この入力ベクトルAはN個のサブベクトルBに分割される。サブベクトルの個数Nは予め定められており、Nは2以上の整数である。また、1つのサブベクトルのサンプル数SはD/Nの値の小数点以下を切り上げて求められる。
【0003】
図1に従来技術の入力ベクトルとサブベクトルを模式的に示す。図1の例では、入力ベクトルのサンプル数Dが「40」であり、サブベクトルBの個数Nは「6」である。また、サブベクトル番号をn(n=0、...、N−1)とし、1つのサブベクトル内のサンプル番号をs(s=0、...、S−1)とする。図1の例では、40/6を計算し、サブベクトルが有するサンプル数Sは「7」になる。つまり、サブベクトルBは7次元のベクトルになる。以下の説明では、n+1番目のサブベクトルのs+1番目のサンプルの位置をB(s)と表す。ただし、n=0、...、N−1とし、s=0、...、S−1とする。図1に示すように、例えば、2番目のサブベクトルの4番目のサンプルの位置はB(3)である。
【0004】
従来の符号化方法では、入力サンプルa(d)を割り振ってサブベクトルBを生成する。入力サンプルa(d)をサブベクトルのサンプルの位置B(s)に割り振ることをa(d)→B(s)と表す。そうすると、振り分け方の一例として、図1に示すように、a(0)→B(0)、a(1)→B(0)、a(2)→B(0)、a(3)→B(0)、...、a(6)→B(1)、a(7)→B(1)、a(8)→B(1)、...、a(36)→B(6)、a(37)→B(6)、a(38)→B(6)、a(39)→B(6)のように振り分けられる。しかし、入力サンプル40個、生成される予定であるサブベクトルBに要するサンプル数は6×7=42サンプルであることから2サンプル不足する。従って、図1に示すように、サンプル位置B(6)、B(6)に入力サンプルが割り振られなくなる。そこで、サンプル位置B(6)、B(6)に補充サンプルを割り振る(図1では、太線で記載)。補充サンプルはそうすることで、同次元のインタリーブサブベクトルBを生成できる(特許文献1の段落[0023]に記載)。
そして、生成されたインタリーブサブベクトルBをベクトル量子化して、インデックスを生成する。
【特許文献1】特開平7−261800号
【発明の開示】
【発明が解決しようとする課題】
【0005】
従来技術では、本来必要でない情報(補充サンプル)についてもベクトル量子化を行う。従って、符号量が増大するという問題があった。本発明は、符号量を増大させることなく、入力ベクトルを符号化、符号化された入力ベクトルを復号化するベクトル量子化符号化装置、ベクトル量子化復号化装置、それらの方法、それらのプログラム、及びそれらの記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0006】
この発明のベクトル量子化符号化装置は、周波数領域の複数のサンプルからなる入力ベクトルを、インタリーブサブベクトルに分割し、それぞれのインタリーブサブベクトルをベクトル量子化する。ベクトル量子化符号化装置は、高域サンプル取り出し部と、平均ベクトル生成部と、インタリーブサブベクトル生成部と、量子化部と、を有する。高域サンプル取り出し部は、予め定められた個数のサンプルを入力ベクトルの高周波数側から取り出すことで、高周波数側ベクトルを生成する。平均ベクトル生成部は、高周波数側ベクトル中の隣り合う2サンプルの重み付け平均値をサンプル値とする平均ベクトルを生成する。インタリーブサブベクトル生成部は、入力ベクトル中の高周波数側ベクトル以外の残余ベクトルのサンプルと、平均ベクトルのサンプルとを割り振って、全てが同じサンプル数のインタリーブサブベクトルを生成する。量子化部は、インタリーブサブベクトルをベクトル量子化して、インデックスを生成する。ただし、前記予め定められた個数は、前記入力ベクトルのサンプルの個数をインタリーブサブベクトルの個数で除算した結果の余りの2倍の値であり、前記サブベクトルのサンプル数は、前記除算の商である。
【0007】
また、この発明のベクトル量子化復号化装置は、ベクトル逆量子化部と、出力ベクトル生成部と、を備える。ベクトル逆量子化部は、入力されたインデックスをベクトル逆量子化して、インタリーブサブベクトルを生成する。出力ベクトル生成部は、インタリーブサブベクトル中の平均サンプルを複製して複製サンプルを生成し、インタリーブサブベクトル中の平均サンプル以外のサンプルと、平均ベクトルと、複製サンプルと、を配置させて出力ベクトルを生成する。
【発明の効果】
【0008】
上記の構成により、入力ベクトルの全サンプルDをインタリーブサブベクトルの個数Nで割り切れない場合であっても、それぞれのインタリーブサブベクトルが有する同一のサンプル数を決定できる。具体的には、D/Nの商(小数点以下を切り捨てた値)をサブベクトルのサンプル数とする。そして、余ったサンプルをなくすために、高周波数側ベクトル中の隣り合う2サンプルの重み付け平均をとることで、平均ベクトルを生成する。また、入力ベクトルのうち高周波数側ベクトル以外のベクトルを残余ベクトルとすると、平均ベクトルのサンプルと残余ベクトルのサンプルとを割り振ってインタリーブサブベクトルを生成する。従って、必要でない情報を付加することなく、全てが同じサンプル数のインタリーブサブベクトルを生成できる。よって、効率的にベクトル量子化を行うことができる。
【発明を実施するための最良の形態】
【0009】
以下に、発明を実施するための最良の形態を示す。
[ベクトル量子化符号化装置]
図2にこの発明のベクトル量子化符号化装置1の機能構成例を示し、図3に処理フローを示す。ベクトル量子化符号化装置1は、入力端子2、高域サンプル取り出し部4、平均ベクトル生成部6、インタリーブサブベクトル生成部8、ベクトル量子化部10、出力端子12により構成される。まず、入力端子2に、入力ベクトルAが入力される(ステップS2)。入力ベクトルAのd番目のサンプルを入力サンプルa(d)とする。以下では、「サンプル」を「要素」という場合もある。d=0、...、D−1とし、Dは1つの入力ベクトルが有するサンプル数であり、Dは2以上の整数である。また、入力ベクトルAは、周波数領域の信号をベクトルとみなしたものであり、ここでは、dの値の大小は周波数の大小と対応する場合について説明する。つまり、この実施例では、dの値が小さいほど低周波数のサンプル、dの値が大きいほど高周波数のサンプルである。入力サンプルa(d)は、高域サンプル取り出し部4に入力される。
【0010】
高域サンプル取り出し部4は、予め定められた個数Iのサンプルを入力ベクトルAの高周波数側から取り出すことで、高周波数側ベクトルを生成する(ステップS4)。ただし、予め定められた個数Iは、入力ベクトルAのサンプルの個数DをインタリーブサブベクトルCの個数Nで除算した結果の余りの2倍の値である。つまり、I=mod(D、N)×2であり、mod(D、N)はD/Nの余りを表す。予め定められた個数Iは、事前に計算しても良いし、高域サンプル取り出し部4が計算してもよい。[背景技術]で説明した通り、D、Nの値は予め定められている。また、n+1番目のインタリーブサブベクトルのs+1番目のサンプルの位置をc(s)と表す。また、n番目のインタリーブサブベクトルをCと表す。つまり、C=(c(0)、c(1)、...、c(S−1))である。N個のインタリーブサブベクトルをまとめてインタリーブサブベクトルCと表す。nをインタリーブサブベクトル番号とし、n=0、1、...、N−1であり、sをインタリーブサブベクトルのサンプル番号とし、s=0、1、...、S−1である。
【0011】
図4は、入力サンプルa(d)とインタリーブサブベクトルCとを模式的に示した図である。この例では、D=40、N=6とする。上述したように、図4の例では、入力ベクトルAについて、上述したように、dの値が小さいほど低周波数のサンプルであり、dの値が大きいほど高周波数のサンプルである。またインタリーブサブベクトルCについてsの値が小さいほど低周波数のサンプルであり、sの値が大きいほど高周波数のサンプルである。高周波数側ベクトルのサンプルである高周波数側サンプルx(i)は以下の式(1)により定められる。
【0012】
x(i)=a(D−I+i) (1)
ただし、iは高周波数側サンプルのサンプル番号であり、i=0、...、I−1である。この例では、D=40、N=6であるので、I=mod(40、6)×2=8になる。従って、高周波数側サンプルx(i)は式(1)より、以下の式になる。図4では、高周波数側サンプルx(i)を太線で囲っている。
【0013】
x(i)=a(32+i) ただし、i=0、...、7
また、入力サンプルa(d)から高周波数側サンプルx[i]を取りだした残りのベクトルを残余ベクトルZとする。また残余ベクトルのサンプルを残余サンプルz(d)(d=0、...、D−I−1、図4の例では、d=0、...、31)とする。高周波数側ベクトルXは、平均ベクトル生成部6に入力され、残余ベクトルZは、インタリーブサブベクトル生成部8に入力される。
【0014】
平均ベクトル生成部6は、高周波数側ベクトルX中の隣り合う2サンプルの重み付け平均値をサンプル値とする平均ベクトルYを生成する(ステップS6)。また、平均ベクトルYのサンプルをy(j)とし、jは平均サンプルのサンプルを表す番号であり、j=(0、1、...、(I/2)−1)である。つまり、以下の式により平均サンプルy(j)を表すことができる。
【0015】
y(j)=r1×x(2j)+r2×x(2j+1) (2)
また、r1、r2は重み係数であり、0<r1<1、0<r2<1、であり、r1+r2=1である。
【0016】
ここで、r1=r2=1/2とすると、平均ベクトル生成部6は、高周波数側ベクトルX中の隣り合う2サンプルの平均値をサンプル値とする平均ベクトルYを生成できる。また、入力ベクトルAが音声信号の場合、高周波数の音声信号は聴感上、知覚しにくい。従って、低周波数側の重み係数r1を大きくすることが好ましい。つまり、平均ベクトル生成部6は、入力ベクトルA中のI個のサンプルa(D−I)、a(D−I+1)、...、a(D−1)から、I/2個のサンプル
y(0)=(a(D−I)+a(D−I+1))/2、
y(1)=(a(D−I+2)+a(D−I+3))/2、
...、
y(I/2−1)=(a(D−2)+a(D−1))/2を生成する。ただし、r1=r2=1/2とする。また、換言すると、平均ベクトル生成部6は、入力ベクトルAの一端にある予め定められた個数Iのサンプル中の隣り合う2サンプルの平均値または重み付け平均値をサンプル値とする前記予め定められた個数の半分の個数のサンプルを生成する。
【0017】
インタリーブサブベクトル生成部8は、入力ベクトルA中の隣り合うサンプルであるa(d)とa(d+1)が同一のサブベクトルに割り振られないように予め定めた規則に従って、残余サンプルz(d)と、平均サンプルy(j)とを割り振って、全てが同じサンプル数SのインタリーブサブベクトルCを生成する(ステップS8)。ただし、サブベクトルのサンプル数Sは、D/N(Dは入力ベクトルAのサンプル数、NはインタリーブサブベクトルCの数)の商である。Sの値は、予め計算してもよいし、インタリーブサブベクトル生成部8が計算しても良い。まず、サブベクトルのサンプル数の定め方について説明する。インタリーブベクトルのサブベクトルのサンプル数Sは、以下の式(3)により定まる。
【0018】
S=(int)(D/N) (3)
(int)(D/N)はD/Nの値の小数点以下を切り捨てた値を示す。この例では、S=6になる。
【0019】
図5に、インタリーブサブベクトルCの予め定められた規則による生成過程(ステップS8)の詳細の例を示し、図4を用いて説明する。この例では、残余サンプルz(d)、平均サンプルy(j)の順にサンプル番号の小さいサンプルから割り振っていく。図4の例では、z(0)、z(1)、...、z(30)、z(31)、y(0)、y(1)、y(2)y(3)の順に割り振っていく。
【0020】
ステップS8はステップS1000、ステップS1002、ステップS1004に分けることができる。ステップS1000では、入力サンプルa(d)が、全て(N個)のインタリーブサブベクトルBのS−1番目の位置以外の全てに割り振られる。図4の例では、入力サンプルa(0)〜a(29)が、a(0)から順に、c(0)〜c(4)、c(0)〜c(4)、c(0)〜c(4)、c(0)〜c(4)、c(0)〜c(4)、c(0)〜c(4)の位置に割り振られる。ステップS1002では、残余サンプルz(d)のうち、ステップS1000で割り振られたサンプル以外のサンプルが割り振られる。図4の例ではa(30)、a(31)が割り振られる。ステップS1004では、全ての平均サンプルy(j)が振り分けられる。以下、詳細に説明する。
【0021】
ステップS1000
まず、s=0とし(ステップS102)、次にn=0とする(ステップS104)。そして、c(s)=a(s×S+n)になるように、「s×S+n」番目の入力サンプルa(d)(残余サンプルz(d))の1つが割り振られる(ステップS106)。そして、サブベクトル番号nを「1」インクリメントする(ステップS108)。そして、全てのサブベクトルの0番目のサンプル位置にサンプルが埋まるまでステップS106、ステップS108の処理を続ける(ステップS110)。n>N−1になるまで、つまり、全てのサブベクトルの0番目のサンプル位置にサンプルが埋まると、サンプル番号sを「1」インクリメントする(ステップS112)。今度は、全てのサブベクトルの1番目のサンプル位置にサンプルが埋まるまで、ステップS106、ステップS108の処理を続ける。そして、s>S−2になった場合、つまり、全てのサブベクトルのN−1番目のサンプル位置以外の全ての位置にサンプルが埋まった場合に、次のステップS1002に進む。
【0022】
ステップS1002
まず、サブベクトル番号nを「0」に初期化する(ステップS116)。そして、c(S−1)=a((S−1)×S+n)になるように、残りの残余サンプルz(d)(図4の例では、z(30)、z(31))の1つをサンプル番号の小さい順に割り振る(ステップS118)。そして、nを「1」インクリメントする(ステップS120)。次に、nの値がn=(D−I)―(N×(S−1)になるまで、つまり、全ての残余サンプルz(d)が割り振られるまで、ステップS118、ステップS120の処理を繰り返す。図4の例では、nが「2」になる(c(5)とc(5)の位置にサンプルが埋まる)まで繰り返す。
【0023】
ステップS1004
(S−1)=y(n−((D−I)―(N×(S−1))))になるように、平均サンプルy(j)をサンプル番号の小さい順に割り振る。図4の例では、D、N、Sの値を代入すると、c(5)=y(n−2)になる。そして、nを「1」インクリメントする(ステップS514)。nがN−1(図4の例では「5」)より大きくなるまでステップS124、ステップS126の処理を繰り返す。図4の例では、y(0)〜y(3)をそれぞれc(5)、c(5)、c(5)、c(5)、に割り振る。生成されたインタリーブサブベクトルCはベクトル量子化部10に入力される。
なお、換言すると、この例では、インタリーブサブベクトル生成部8は、入力ベクトル中のD−I個のサンプルa(0)、a(1)、...、a(D−I−1)と平均ベクトル生成部6で生成したI/2個のサンプルy(0)、y(1)、...、y(I/2−1)とから、
0≦s≦S−2の範囲、または、0≦n≦N−(I/2)−1かつs=S−1の範囲、のサンプルは
(s)=a(N×s+n)であり、
N−(I/2)≦n≦N−1かつs=S−1の範囲のサンプルは
(s)=y(n−(N−I/2))であるインタリーブサブベクトルCを生成する。
【0024】
また、高域サンプル取り出し部4と平均ベクトル生成部6を統合させて、入力ベクトルAの一端にある予め定められた個数(mod(D、N)×2)のサンプル中の隣り合う2サンプルの平均値または重み付け平均値をサンプル値とする予め定められた個数(mod(D、N)×2)の半分の個数のサンプルを生成するようにしてもよい。また、この場合、インタリーブサブベクトル生成部8は、入力ベクトルA中の隣り合うサンプルが同一のサブベクトルに割り振られないように予め定めた規則に従って、入力ベクトルA中の前記一端にある予め定められた個数のサンプル以外のサンプル(例えば、残余サンプルz(d))と、前記生成したサンプル(例えば、平均サンプルy(j))とをインタリーブサブベクトルに割り振ることにより、全てが同じサンプル数のインタリーブサブベクトルCを生成するようにしても良い。この予め定められた規則の変形例を説明する。
【0025】
<変形例1>
次に、高域サンプル取り出し部4、平均ベクトル生成部6、インタリーブサブベクトル生成部8によるインタリーブサブベクトルCの異なる生成方法(予め定められた規則)を図6を用いて説明する。また、図6の例では、入力サンプルa(d)のサンプル番号dの値が小さければ高周波数のサンプルであり、dの値が大きければ低周波数のサンプルである。また、インタリーブサブベクトルCのサンプル番号sの値が大きければ高周波数のサンプルであり、sの値が小さければ低周波数のサンプルである。
【0026】
高域サンプル取出し部4は、入力ベクトルA中のI個のサンプルa(0)、a(1)、...、a(I−1)を取り出す。図6の例では、a(0)、a(1)、...、a(7)である。そして、平均ベクトル生成部6は、当該取り出したI個(図6の例では8個)のサンプルから、I/2個のサンプル
y(0)=(a(0)+a(1))/2、
y(1)=(a(2)+a(3))/2、
...、
y(I/2−1)=(a(I−2)+a(I−1))/2を生成する。ただし、ここでは、重み係数は、r1=r2=1/2とする。
【0027】
そして、インタリーブサブベクトル生成部8は図6に示すように、インタリーブサブベクトルを生成する。つまり、入力ベクトル中のD−I個のサンプルa(I)、a(I+1)、...、a(D−1)と生成したI/2個のサンプルy(0)、y(1)、...、y(I/2−1)とから、
0≦s≦S−2の範囲、または、0≦n≦N−(I/2)−1かつs=S−1の範囲、のサンプルはc(s)=a(D−1−(N×s+n))であり、
N−(I/2)≦n≦N−1かつs=S−1の範囲のサンプルは
(s)=y(N−1−n)であるインタリーブサブベクトルCをインタリーブサブベクトル生成部8は、生成する。
【0028】
<変形例2>
次に、変形例2のインタリーブサブベクトルCの生成方法を図7を用いて説明する。図7の例では、入力サンプルa(d)のサンプル番号dの値が小さければ高周波数であり、dの値が大きければ低周波数になる。また、インタリーブサブベクトルCのサンプル番号sの値が小さければ高周波数であり、sの値が大きければ低周波数である。高域サンプル取出し部4で取り出すサンプル、平均ベクトル生成部6が生成する平均ベクトルは変形例1と同様である。
【0029】
インタリーブサブベクトル生成部8は、図7に示すように、入力ベクトル中のD−I個のサンプルa(I)、a(I+1)、...、a(D−1)と生成したI/2個のサンプルy(0)、y(1)、...、y(I/2−1)とから、
1≦s≦S−1の範囲、または、(I/2)+1≦n≦s=0の範囲、の要素はc(s)=a(N×s+n+(I/2))であり、
0≦n≦I/2かつs=0の範囲の要素はc(s)=y(n)であるインタリーブサブベクトルCを生成する。
なお、残余サンプルz(d)と平均サンプルy(j)の割り振り方はこれらの例に限られない。
【0030】
説明を図2に戻す。ベクトル量子化部10は、インタリーブサブベクトルCをベクトル量子化して、インデックスを生成する(ステップS10)。ベクトル量子化処理(ステップS10)の詳細の流れを図8に示す。この例のベクトル量子化では、サブベクトルのサンプル数(次元数)であるS次のコードブックを使用する。図4の例では6次のコードブックを使用する。以下では、コードブック中のベクトルをコードブックベクトルという。この例のベクトル量子化を端的にいうと、インタリーブサブベクトルとの距離が最も短いコードブックベクトルのインデックスをインデックスとして出力する。以下、詳細に説明する。そして、全てのサブベクトルについてのインデックスを求める。
【0031】
コードブックベクトルに対応するインデックスをvとし、インデックスvのコードブックベクトルのh番目のサンプル値をCb(h)とする。インタリーブサブベクトルと、インデックスvのコードブックベクトルとの距離をL(v)とし、L(v)の最小値をLminとし、vの最小値をvminとし、コードブックベクトルの総数をNCBとする。
【0032】
まず、初期化として、vとvminとを「0」とし、LminをMAXVALとする(ステップS302)。MAXVALとは例えば1020のように、後述するステップS304で演算される式による距離計算で通常計算されないほどの大きな値である。
【0033】
そして、L(v)=ΣS−1h=0(c(h)−cb(h))を演算して、距離L(v)を求める(ステップS304)。そして、L(v)がLminより小さければ(ステップS306)、L(v)をLminに置き換え、vminをvに置き換える(ステップS308)。そして、vを「1」インクリメントして(ステップS310)、つまり、次のインデックスのコードブックベクトルについて検証する。v=NCBになるまで、ステップS304、ステップS308、ステップS310、の処理を繰り返す。そして、全てのコードブックベクトルとインタリーブサブベクトルとの距離を算出し、距離が最も近いコードブックベクトルのインデックスをインデックスとして求める(ステップS314)。ベクトル量子化部10は、N個全てのサブベクトルCについてインデックスIndex(n)(n=0、...、N−1)を求める。なお、ベクトル量子化の手法はこれに限られるものではない。生成されたインデックスIndex(n)は出力端子12により出力される。
【0034】
従来技術では、40サンプルからなる入力ベクトルAを6分割してインタリーブサブベクトルBを求める場合、必要でない情報である2サンプルを付加して、7サンプルからなるインタリーブサブベクトルBを生成していた。しかし、本願の発明では、6分割した際に余る4サンプルと同数の4サンプルとからなる合計8サンプルの高周波数側ベクトルXを生成する。そして、高周波数側ベクトルX中の隣接する2サンプル値の重み平均をサンプル値とする平均ベクトルYを生成する。そして残余ベクトルZ(サンプル数は32個)と平均ベクトルY(サンプル数は4個)とのサンプル数は36個になり、6分割できる。従って、必要でない情報を付加することなく、全てが同じサンプル数のインタリーブサブベクトルCを生成できる。
【0035】
[ベクトル量子化復号化装置]
次に、この発明のベクトル量子化復号化装置100を説明する。図9は、ベクトル量子化復号化装置100の機能構成例であり、図10は主な処理の流れを示したフローチャート図である。また、図11に以下で説明するサブベクトルや生成される出力ベクトルを模式的に示す。ベクトル量子化復号化装置100は、ベクトル量子化符号化装置1で符号化された信号を復号化することを前提として、説明をする。以下の説明では、復号信号は、ベクトルを示す記号(例えば、入力ベクトルA)やサンプルを示す記号(例えば、入力サンプルa(d))に「’」を付して説明する。例えば、A’やa’(d)である。AとA’、a(d)とa’(d)は対応していることを意味している。また、ベクトル量子化復号化装置100は、入力ベクトルAのサンプル数Dとサブベクトルの数Nを予め認識している。従って、サブベクトルのサンプル数S(=int(D/N))も認識している。ベクトル量子化復号化装置100は、ベクトル逆量子化部22、出力ベクトル生成部24により構成される。
【0036】
ベクトル逆量子化部22は、入力されたインデックスIndex(n)(n=0、...、N−1)をベクトル逆量子化して、N個のサブベクトルC’を生成する(ステップS22)。インデックスIndex(n)は、ベクトル量子化符号化装置1で生成されたものである。ベクトル逆量子化部22は、ベクトル量子化符号化装置1中のベクトル量子化部10(図2参照)が使用したコードブックと同一のコードブックを使用する。そして、ベクトル逆量子化部22は、インデックスIndex(n)に対応するコードブックベクトルをサブベクトルC’として出力する。サブベクトルC’は、出力ベクトル生成部24に入力される。ベクトル逆量子化部22のベクトル逆量子化の手法はこれに限られない。
【0037】
出力ベクトル生成部24は、それぞれのサブベクトルC’中の予め決められたサンプル(図11の例では残余サンプル)を、同一のサブベクトル中のサンプルが出力ベクトルA’中で隣り合わないように予め定めた規則に従って、出力ベクトルA’の一端側に配置する。そして、隣接する2つのサンプルの値が前記予め定められたサンプル以外(図11の例では平均サンプル)の各サンプルの値であり、予め決められたサンプル以外のサンプルの個数の2倍の個数のサンプルを出力ベクトルの他端側に配置させて、全サブベクトルのサンプル数の総和よりもサンプル数が多い出力ベクトルA’を生成する。
【0038】
以下に図11を用いて予め定めた規則の一例を説明する。サブベクトルC’中の平均サンプルy’(j)と同一のサンプルである複製サンプルw(j)を生成する。複製サンプルw(j)は平均サンプルy’(j)を複製することで生成してもよく、同一ポインタを参照する等で得てもよい。つまり、y’(j)=w(j)である。図11の例では、平均サンプルy’(j)は、太線で囲っているc’(5)、c’(5)、c’(5)、c’(5)である。平均サンプルy’(j)と複製サンプルw(j)を合わせたサンプルを統合サンプルx’(i)とする。統合サンプルx’(i)の生成手法の一例として、平均サンプルy’(j)の隣に対応する複製サンプルw(j)を配置させて並べることで、統合サンプルx’(i)を生成する。つまり、x’(i)={y’(0)、w(0)、y’(1)、w(1)、y’(2)、w(2)、...,y’(J−1)、w(J−1)}になる。この例では、x(j)={c’(5)、c’(5)、c’(5)、c’(5)、c’(5)、c’(5)、c’(5)、c’(5)}(ただし、j=0、...、7)である。また、サブベクトルC’中の平均サンプルy’(j)以外のサンプルを残余サンプルz’(d)とする。出力ベクトル生成部24は、統合サンプルx’(i)と、残余サンプルz’(d)とを配置させて出力ベクトルA’を生成する(ステップS24)。この例では、残余サンプルを全て、配置させた後で、統合サンプルx’(i)を配置させる。
【0039】
図10は出力ベクトルA’の生成(配置)処理の主な流れを示したフローチャートである。出力ベクトルA’の生成処理はステップS3000、S3002に分けられる。ステップS3000は、残余サンプルz’(d)を配置させる過程である。ステップS3002は、統合サンプルx’(i)を配置させる過程である。以下の説明では、生成される出力ベクトルA’のd番目のサンプル位置をa’(d)と示す。ただし、dを出力サンプル番号という場合もあり、d=0、...、D−1とし、Dは出力ベクトルのサンプル数である。
【0040】
ステップS3000
まず、出力サンプル番号dを「0」に初期化する(ステップS302)。そして、a’(d)=c’mod(d、N)((int)(d/N))になるように、残余サンプルを1つ配置させる。そしてdを「1」インクリメントする(ステップS306)。そして、d>D−M−1になるまで、つまり、残余サンプルz’(d)を全て配置させるまで、ステップS304、ステップS306の処理を繰り返す(ステップS308)。d>D−M−1になるとステップS3002に進む。
【0041】
ステップS3002
今度は、a’(d)=c’N−(M/2)+((int)(d/2)−(D−M)/2)(S−1)になるように、統合サンプルx’(i)中の1つのサンプルを配置させる(ステップS310)。そして、dを「1」インクリメントする(ステップS312)。d>D−1になるまで、つまり、全ての平均サンプルと複製サンプルを配置させるまで、ステップS310、ステップS312の処理を繰り返す(ステップS314)。
なお、NやS等を用いて出力ベクトルA’(d)の生成手法を説明すると、以下のようになる。平均サンプルは以下のようになる。
y’(0)=c’N−(I/2)(S−1)、
y’(1)=c’N−(I/2)+1)(S−1)、
...、
y’(I/2−1)=c’N−1(S−1)
そして、出力ベクトル生成部24は、サブベクトルC’から
0≦d≦D−I−1の範囲のサンプルは
a’(d)=c'mod(d、N)((int)(d/N))であり、
D−I≦d≦D−1の範囲のサンプルは、
a’(d)=y’((int)((d−D+1)/2))である出力ベクトルA’を生成する。
【0042】
<変形例3>
以下に、出力ベクトルA’の生成(復号化)の変形例3を図13を用いて説明する。この変形例3の復号化は、変形例1の符号化に対応している。変形例3の平均サンプルは以下のようになる。
y’(0)=c’N−(I/2)(S−1)、
y’(1)=c’N−(I/2)+1(S−1)、
...、
y’(I/2−1)=c’N−1(S−1)
サブベクトルC’から0≦d≦I−1の範囲のサンプルは
a’(d)=y’((int)(I/2−((d+1)/2))であり、
I≦d≦D−1の範囲のサンプルは
a’(d)=c’mod(D−1−d、N)((int)((D−1−d)/N))である出力ベクトルA’を出力ベクトル生成部24は、生成する。
【0043】
<変形例4>
以下に、出力ベクトルA’の生成の変形例3を図14を用いて説明する。変形例4の復号化は変形例2の符号化に対応している。変形例4の平均サンプルは以下のようになる。
y’(0)=c’(0)、
y’(1)=c’(0)、
...、
y’(I/2−1)=c’(I/2)−1(0)
サブベクトルC’から
0≦d≦I−1の範囲の要素は、
a’(d)=y’((int)((I/2)−((d+1)/2)))であり、
I≦d≦D−1の範囲の要素は、
a’(d)=c’mod(d−I/2、N)((int)(D−1―d)/N))である出力ベクトルA’を出力ベクトル生成部24は、生成する。
なお、出力ベクトル生成処理はこれに限られず、ベクトル量子化符号化装置1中のインタリーブサブベクトル生成部8のサブベクトルの生成手法に対応していればよい。
生成された出力ベクトルA’は出力端子26により出力される。
【0044】
ベクトル量子化符号化装置1がインデックスを生成する段階で、例えば、高周波数側サンプルのx(0)(a(32))の値が「20」、x(1)(a(33))の値が「50」であり(図4参照)、式(2)中の重み係数r1=r2=1/2の場合、平均ベクトルy(0)は35になる。この平均サンプルy(0)は、c’(5)に対応する。一方、ベクトル量子化符号化装置100が平均サンプルc’(5)を複製して、統合サンプルx’(0)、x’(1)を生成する際に、x’(0)=x’(1)=35になる。従って、x(0)(=20)とx’(0)(=35)、x(1)(=20)とx’(1)(=50)は値が変わってしまう。しかし、統合サンプルx’(i)は、出力ベクトルA’(d)の高周波数側に配置されるため、統合サンプルx’(i)のサンプル値が高周波数側サンプルx(i)と変わっていたとしても、聴感上、問題はない。
【図面の簡単な説明】
【0045】
【図1】従来技術の入力サンプルa(d)とインタリーブサブベクトルBとを模式的に示した図。
【図2】ベクトル量子化符号化装置1の機能構成例を示したブロック図。
【図3】ベクトル量子化符号化装置1の主な処理の流れを示した図。
【図4】インタリーブサブベクトルCの生成過程を模式的に示した図。
【図5】インタリーブサブベクトルCの生成の主な処理の流れを示した図。
【図6】変形例1のインタリーブサブベクトルCの生成過程を模式的に示した図。
【図7】変形例2のインタリーブサブベクトルCの生成過程を模式的に示した図。
【図8】インデックス生成の主な処理の流れを示した図。
【図9】ベクトル量子化復号化装置100の機能構成例を示したブロック図。
【図10】ベクトル量子化復号化装置100の主な処理の流れを示した図。
【図11】出力ベクトルA’の生成過程を模式的に示した図。
【図12】出力ベクトル生成部24の主な処理の流れを示した図。
【図13】変形例3の出力ベクトルA’の生成過程を模式的に示した図。
【図14】変形例4の出力ベクトルA’の生成過程を模式的に示した図。

【特許請求の範囲】
【請求項1】
周波数領域の複数のサンプルからなる入力ベクトルから複数のインタリーブサブベクトルを生成し、それぞれのインタリーブサブベクトルをベクトル量子化するベクトル量子化符号化装置において、
予め定められた個数のサンプルを前記入力ベクトルの高周波数側から取り出すことで、高周波数側ベクトルを生成する高域サンプル取り出し部と、
前記高周波数側ベクトル中の隣り合う2サンプルの重み付け平均値をサンプル値とする平均ベクトルを生成する平均ベクトル生成部と、
前記入力ベクトル中の隣り合うサンプルが同一のサブベクトルに割り振られないように予め定めた規則に従って、前記入力ベクトル中の前記高周波数側ベクトル以外の残余ベクトルのサンプルと、前記平均ベクトルのサンプルとを割り振ることにより全てが同じサンプル数のインタリーブサブベクトルを生成するインタリーブサブベクトル生成部と、
前記インタリーブサブベクトルをベクトル量子化することによりインデックスを生成する量子化部と、を備え、
前記予め定められた個数は、前記入力ベクトルのサンプルの個数をインタリーブサブベクトルの個数で除算した結果の余りの2倍の値であり、
前記サブベクトルのサンプル数は、前記除算の商である
ことを特徴とするベクトル量子化符号化装置。
【請求項2】
入力された複数のインデックスをベクトル逆量子化して、サブベクトルを生成するベクトル逆量子化部と、
前記サブベクトル中の平均サンプルを複製して複製サンプルを生成し、前記サブベクトル中の前記平均サンプル以外のサンプルと、前記平均サンプルと、前記複製サンプルと、を配置させて出力ベクトルを生成する出力ベクトル生成部と、
を備えるベクトル量子化復号化装置。
【請求項3】
周波数領域の複数のサンプルからなる入力ベクトルから複数のインタリーブサブベクトルを生成し、それぞれのインタリーブサブベクトルをベクトル量子化するベクトル量子化符号化方法において、
前記入力ベクトルの一端にある予め定められた個数のサンプル中の隣り合う2サンプルの平均値または重み付け平均値をサンプル値とする前記予め定められた個数の半分の個数のサンプルを生成する過程と、
前記入力ベクトル中の隣り合うサンプルが同一のサブベクトルに割り振られないように予め定めた規則に従って、前記入力ベクトル中の前記一端にある予め定められた個数のサンプル以外のサンプルと、前記生成したサンプルとをインタリーブサブベクトルに割り振ることにより、全てが同じサンプル数のインタリーブサブベクトルを生成する過程と、
前記複数のインタリーブサブベクトルそれぞれをベクトル量子化することによりインデックスを生成する過程と、を有し、
前記予め定められた個数は、前記入力ベクトルのサンプルの個数をインタリーブサブベクトルの個数で除算た結果の余りの2倍の値であり、
前記サブベクトルサンプル数は、前記除算の商である
ことを特徴とするベクトル量子化符号化方法。
【請求項4】
入力された複数のインデックスそれぞれをベクトル逆量子化して、サブベクトルを生成する過程と、
前記それぞれのサブベクトル中の予め決められたサンプルを、同一のサブベクトル中のサンプルが出力ベクトル中で隣り合わないように予め定めた規則に従って、出力ベクトルの一端側に配置するとともに、隣接する2つのサンプルの値が前記予め定められたサンプル以外の各サンプルの値であり、予め決められたサンプル以外のサンプルの個数の2倍の個数のサンプルを出力ベクトルの他端側に配置させて、全サブベクトルのサンプル数の総和よりもサンプル数が多い出力ベクトルを生成する過程と、
を有するベクトル量子化復号化方法。
【請求項5】
周波数領域のD個のサンプルからなる入力ベクトル
A=(a(0)、a(1)、...、a(D−1))から、各ベクトルがS個のサンプルからなる複数個のインタリーブサブベクトル
=(c(0)、c(1)、...、c(S−1))を生成し、
前記インタリーブサブベクトルCをそれぞれベクトル量子化してインデックスを生成するベクトル量子化符号化方法であって、
D/Sの値の小数点以下を切り捨てた値をNとし、D/Sの余りの2倍をIとしたとき、
前記入力ベクトルA中のI個のサンプルa(D−I)、a(D−I+1)、...、a(D−1)から、I/2個のサンプル
y(0)=(a(D−I)+a(D−I+1))/2、
y(1)=(a(D−I+2)+a(D−I+3))/2、
...、
y(I/2−1)=(a(D−2)+a(D−1))/2
を生成する過程と、
前記入力ベクトル中のD−I個のサンプルa(0)、a(1)、...、a(D−I−1)と前記生成したI/2個のサンプルy(0)、y(1)、...、y(I/2−1)とから、
0≦s≦S−2の範囲、または、0≦n≦N−(I/2)−1かつs=S−1の範囲、のサンプルは
(s)=a(N×s+n)であり、
N−(I/2)≦n≦N−1かつs=S−1の範囲のサンプルは
(s)=y(n−(N−I/2))である
インタリーブサブベクトルCを生成する過程と、を有することを特徴とするベクトル量子化符号化方法。
【請求項6】
入力された複数のインデックスそれぞれをベクトル逆量子化して各ベクトルがS個のサンプルからなる複数個のサブベクトル
C’=(c’(0)、c’(1)、...、c’(S−1))(nは自然数)を生成し、
前記サブベクトルC’から、周波数領域のD個のサンプルからなる出力ベクトル
A’=(a’(0)、a’(1)、...、a’(D−1))を生成するベクトル量子化復号化方法であって、
D/Sの値の小数点以下を切り捨てた値をNとし、D/Sの余りの2倍をIとし、mod(d、N)はd/Nの余りとし、(int)d/Nはd/Nの小数点以下を切り捨てた値とし、y’(0)=c’N−(I/2)(S−1)、y’(1)=c’N−(I/2)+1(S−1)、...、y’(I/2−1)=c’N−1(S−1)としたとき、
前記サブベクトルC’から
0≦d≦D−I−1の範囲のサンプルは
a’(d)=c’mod(d、N)((int)(d/N))であり、
D−I≦d≦D−1の範囲のサンプルは、
a’(d)=y’((int)((d−D+1)/2))である出力ベクトルA’を生成する過程と、を有することを特徴とするベクトル量子化復号化方法。
【請求項7】
周波数領域のD個のサンプルからなる入力ベクトル
A=(a(0)、a(1)、...、a(D−1))から、各ベクトルがS個のサンプルからなる複数個のインタリーブサブベクトル
=(c(0)、c(1)、...、c(S−1))を生成し、
前記インタリーブサブベクトルCをそれぞれベクトル量子化してインデックスを生成するベクトル量子化符号化方法であって、
D/Sの値の小数点以下を切り捨てた値をNとし、D/Sの余りの2倍をIとしたとき、
前記入力ベクトルA中のI個のサンプルa(0)、a(1)、...、a(I−1)から、I/2個のサンプル
y(0)=(a(0)+a(1))/2、
y(1)=(a(2)+a(3))/2、
...、
y(I/2−1)=(a(I−2)+a(I−1))/2
を生成する過程と、
前記入力ベクトル中のD−I個のサンプルa(I)、a(I+1)、...、a(D−1)と前記生成したI/2個のサンプルy(0)、y(1)、...、y(I/2−1)とから、
0≦s≦S−2の範囲、または、0≦n≦N−(I/2)−1かつs=S−1の範囲、のサンプルは
(s)=a(D−1−(N×s+n))であり、
N−(I/2)≦n≦N−1かつs=S−1の範囲のサンプルは
(s)=y(N−1−n)である
インタリーブサブベクトルCを生成する過程と、を有することを特徴とするベクトル量子化符号化方法。
【請求項8】
入力された複数のインデックスそれぞれをベクトル逆量子化して各ベクトルがS個のサンプルからなる複数個のサブベクトル
C’=(c’(0)、c’(1)、...、c’(S−1))(nは自然数)を生成し、
前記サブベクトルC’から、周波数領域のD個のサンプルからなる出力ベクトル
A’=(a’(0)、a’(1)、...、a’(D−1))を生成するベクトル量子化復号化方法であって、
D/Sの値の小数点以下を切り捨てた値をNとし、D/Sの余りの2倍をIとし、mod(d、N)はd/Nの余りとし、(int)d/Nはd/Nの小数点以下を切り捨てた値とし、y’(0)=c’N−(I/2)(S−1)、y’(1)=c’N−(I/2)+1(S−1)、...、y’(I/2−1)=c’N−1(S−1)としたとき、
前記サブベクトルC’から
0≦d≦I−1の範囲のサンプルは
a’(d)=y’((int)(I/2−((d+1)/2))であり、
I≦d≦D−1の範囲のサンプルは
a’(d)=c’mod(D−1−d、N)((int)((D−1−d)/N))である出力ベクトルA’を生成する過程と、を有することを特徴とするベクトル量子化復号化方法。
【請求項9】
請求項3、5、7何れかに記載のベクトル量子化符号化方法の各過程をコンピュータに実行させるためのベクトル量子化符号化プログラム。
【請求項10】
請求項4、6、8何れかに記載のベクトル量子化復号化方法の各過程をコンピュータに実行させるためのベクトル量子化復号化プログラム。
【請求項11】
請求項9記載のベクトル量子化符号化プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項12】
請求項10記載のベクトル量子化復号化プログラムを記録したコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2009−31519(P2009−31519A)
【公開日】平成21年2月12日(2009.2.12)
【国際特許分類】
【出願番号】特願2007−194969(P2007−194969)
【出願日】平成19年7月26日(2007.7.26)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】