講義メモ/情報通信論/G711.1/p25・p29
このページはメモ書きです、どこまで正しいかは不明です。
7.4 MDCT
(16を高いとこと低いと子にわけてるから8K)
8kHzサンプリングの高帯域信号s_{HB}(n)をMDCT係数S_{HB}(k)に変換します。
8kHzサンプリングの高帯域信号s_{HB}(n)をMDCT係数S_{HB}(k)に変換します。
変換作業はフレーム長5msかつ分析窓長10msで実行されます。
MDCT変換の高帯域スペクトラムS_{HB}(k)は以下のように定義されます。
式 (7-36)
ここでw_{TDAC}は分析窓です。
式 (7-37)
MDCT係数を計算するとき、ダイナミックレンジを可変にするために固定少数Q-fomatを保存する変数です。
パラメータの標準化は以下のようにします。
式 (7-38)
(14bitまで何ビットあまっているか?)
(14bitまで何ビットあまっているか?)
1) Pre-scaling(事前スケーリング)
まず、スケーリングした信号を計算します。
式 (7-39)
2) Windowing and folding. (窓掛けと折り畳)
実数値と虚数値からなる複素数 z(n) は式 (7-40)で計算される
3) Complex pre-multiplication. (事前複素乗算)
z(n)を以下の計算をしてz'(n)にします。
式(7-41)
ここで、N番目のWが
なので
なので
この計算は以下のように拡張される
式(7-42)
ここで
4) Inverse complex FFT. (逆複素FFT)
前述の、z'(n)スケーリングした逆複素フーリエ変換は係数Z'(k)を求めるのに使われる。
式 (7-43)
ここで、変換サイズ20はGood-Thomas FFT algorithmで実現されます。
5) Complex post-multiplication.(複素後乗算)
係数Z'(k)を用いて以下の計算をする
式 (7-44)
ここで
これは式 (7-45)のように拡張できる。
ここで
で
で
7.5.3.2 Pre-selection(予備選択)
To reduce the complexity in the codebook search, complexity-reduced pre-selection is performed before costly main code selection.
コードブック検索の演算量を軽減するために、時間のかかるメインのコード検索の前に複雑性を軽減する予備選択を行う。
In the pre-selection,for each v-th sub-vector S'HB(v), eight candidates (l=0,...7) are selected among each codebook, both of which contain 32 codevectors.
この予備選択はS'HB(v)のそれぞれのvについて、それぞれのコードブックから8つの候補(l=0,...7)を選ぶ。
こいつらはそれぞれ32のコードベクタを持っている。
こいつらはそれぞれ32のコードベクタを持っている。
ここで、コードベクタは以下のように表す
これらの極により、以下が選択される
予備選択ステージに置いて、目的のサブベクターS'HBとコードブック0のコードベクターCH0wの距離であるd0preなんたらと
サブベクターS'HBとコードブック1のコードベクターCH1wの距離であるd1preなんたらは32個のコードベクタを用いて以下のように計算される。
サブベクターS'HBとコードブック1のコードベクターCH1wの距離であるd1preなんたらは32個のコードベクタを用いて以下のように計算される。
式 (7-56)
ここで、
(つまり1か-1)
(つまり1か-1)
この時点で、コードブックは8つのセグメントに分割され(l=7 ,..., 0)、1つのセグメントに 4つ(q=0,....,3)のコードベクタが存在し、l番目の予備選択候補ともっとも近いS'HB(v)が選択される。
これはコードブック番号iと候補番号lに式 (7-57) のような関係があることを意味する。
計算を短くするために、予備選択では以下のようにして計算されるd'0preとd'1preであらわされるような、候補の最大値を発見しておく必要がある。
式 (7-58)
式 (7-59)
式 (7-60)
式 (7-59)
式 (7-60)