# 定数表リファレンス
コーデックの定数データは62表・計6235ワードで、`src/tables/` にあります。この
文書は、読み手が最も引きたくなる数値をまとめたものです。
## 一覧
| `lsf` | 13 | 2262 | LSF コードブック、MA 予測器、cos/acos 変換 |
| `fcb` | 13 | 2215 | 固定コードブックの構造、位置、形状 |
| `lpc` | 3 | 481 | 分析窓、ラグ窓、根探索グリッド |
| `bands` | 13 | 427 | 臨界帯域の幾何、抑圧カーブ |
| `pitch` | 5 | 337 | 補間フィルタ、ラグ→スロット対応 |
| `ulaw` | 1 | 256 | μ-law 伸張 |
| `gain` | 5 | 118 | 利得コードブック、対数・指数表 |
| `analysis` | 2 | 108 | テーパ、正弦表 |
| `filters` | 7 | 31 | 固定フィルタ係数 |
2つのコードブックが支配的です。LSF と固定コードブックのデータだけで定数領域の
72% を占めますが、驚くには当たりません。それらこそがコーダの持つ**音声のモデル**
だからです。
## 臨界帯域
129本の振幅ビンが20帯域に畳み込まれます。256標本窓・8 kHz なので、1ビンは
31.25 Hz です。
| 0 | 0 | 0 – 31 | 1 |
| 1 | 1 – 3 | 31 – 125 | 3 |
| 2 | 4 – 6 | 125 – 219 | 3 |
| 3 | 7 – 9 | 219 – 312 | 3 |
| 4 | 10 – 12 | 312 – 406 | 3 |
| 5 | 13 – 16 | 406 – 531 | 4 |
| 6 | 17 – 20 | 531 – 656 | 4 |
| 7 | 21 – 24 | 656 – 781 | 4 |
| 8 | 25 – 29 | 781 – 938 | 5 |
| 9 | 30 – 34 | 938 – 1094 | 5 |
| 10 | 35 – 40 | 1094 – 1281 | 6 |
| 11 | 41 – 47 | 1281 – 1500 | 7 |
| 12 | 48 – 55 | 1500 – 1750 | 8 |
| 13 | 56 – 64 | 1750 – 2031 | 9 |
| 14 | 65 – 74 | 2031 – 2344 | 10 |
| 15 | 75 – 86 | 2344 – 2719 | 12 |
| 16 | 87 – 100 | 2719 – 3156 | 14 |
| 17 | 101 – 118 | 3156 – 3719 | 18 |
| 18 | 119 – 127 | 3719 – 4000 | 9 |
| 19 | 128 | 4000 – | 1 |
幅は耳の周波数分解能に従っており——500 Hz 以下ではほぼ一定、その上で増大——
これが20個の数値で音声スペクトルを要約できる理由です。帯域0と19は両端の単一
ビンで情報は乏しく、帯域0はスペクトル平坦性の統計から完全に除外されます。
## 固定コードブックのクラス
| 0 | 0x0000 – 0x3FFF | 16384 | 3 | 8 × 16 × 16 | 3, 6, 6 | 0, 1, 2 | 40 |
| 1 | 0x4000 – 0x7FFF | 16384 | 3 | 8 × 16 × 16 | 3, 6, 6 | 3, 4, 5 | 40 |
| 2 | 0x8000 – 0x98FF | 6400 | 2 | 40 × 40 | 10, 10 | 6, 7 | 80 |
| 3 | 0x9900 – 0xB1FF | 6400 | 2 | 40 × 40 | 10, 10 | 8, 9 | 80 |
| 4 | 0xB200 – 0xBF97 | 3480 | 2 | 30 × 29 | 10, 10 | 10, 11 | 59 |
| 5 | 0xBF98 – 0xFF97 | 16384 | 5+5 | 128 × 128 | — | — | — |
どのクラスもぴったり埋まっています。基数の積に符号ビット分の 2^パルス数 を掛けると
規模に一致します。たとえばクラス4は 30 × 29 × 2² = 3480。
- **規模** — そのクラスが占める索引数
- **基数** — クラス索引が分解される混合基数の各桁
- **絞り込み** — 探索中にトラックごとに残す候補位置の数
- **形状** — 12種類の20標本パルス形状のうち、そのクラスが使うもの
- **位置数** — そのクラスのトラック群が覆う相異なる位置の総数
有効な索引は 0xFF97 までで、0xFF98 以上はクランプされます。合計65432個。
16ビットフィールドが許す65536個のうち、それだけが使われます。
## 量子化器の諸元
| LSF 第1段 | 128 | 10 | 7 |
| LSF 第2段(前半) | 64 | 5 | 6 |
| LSF 第2段(後半) | 64 | 5 | 6 |
| LSF 予測器モード | 2 | — | 1 |
| 利得 第1段 | 8 | 2 | 3 |
| 利得 第2段 | 16 | 2 | 4 |
LSF 第2段は同じ64エントリの表をベクトルの前半と後半に2回適用します。64エントリ
で4096エントリ分の仕事をしていることになります。
## フィルタ
| 入力高域通過 | 再帰2 + 直達3 | `preprocess` |
| 整形高域通過 | 再帰2 + 直達3 | `weighting` |
| 平滑化(対称) | 6 | `weighting` |
| 傾き | 5 | `weighting` |
| ピッチ補間 | 31、3位相で読む | `pitch` |
| 閉ループラグ補間 | 13、2つの視点 | `pitch_search` |
| ポストフィルタ探索 | 28、7位相 × 4 | `ltp` |
| ポストフィルタ精密化 | 112、7位相 × 16 | `ltp` |
| 出力再構成 | 2次セクション2段 | `postfilter` |
| 分析窓 | 400 | `lpc` |
| 抑圧窓 | 256 | `analysis` |
## 値の読み方
表の値は `i16` で、ほとんどが Q15 です。読み手が引っ掛かりやすい規約が2つ
あります。
- **半分にされた係数。** 小数乗算がすべての積を倍にするので、0.8 であるべき
係数は 0.4 として格納されています。帯域幅の逆数表が2種類——そのままと半分——
存在するのはまさにこのためで、倍化を受ける経路と受けない経路が使い分けます。
- **記憶域の共有。** 元の配置では一部の表が重なっています。log2 の小数部表は
後続の表に食い込み、正弦表は直接読まれるのと1/4周期ずらして読まれるのと両方が
あります。コードがそれに依存する箇所では、複製せずに表を統合してオフセットに
名前を付けてあります。