soltia48/mcelp-codec has 31 GitHub stars and 2 forks. GitHot measured 0 stars in 24 hours and +1 in 7 days. Last checked 2026-11-12 23:03 UTC. Last push 2026-08-24.
A Rust implementation of the Mitsubishi CELP speech codec.
計測したスター増加
- 24時間
- 0
- 7日間
- +1
- 15日間
- 履歴を収集中
- 1か月
- 履歴を収集中
期間ごとの純増数です。期間は重複しており、日別の値ではありません。未計測の値は空欄です。スター数は注目度の指標であり、品質の保証ではありません。
docs/ja/README.md
オリジナルM-CELP — 技術解説
三菱CELP方式音声コーデック。8 kHz の電話帯域音声を 3.6 kbit/s で符号化する
分析合成型のコーダです。このディレクトリでは、src/ の実装を読み書きするのに
必要な水準で、各段の動作を説明します。
概要
| 標本化周波数 | 8 kHz、モノラル |
| 音声形式 | μ-law、8 bit/標本 |
| フレーム | 320 標本 = 40 ms |
| ビットストリーム | 18 バイト/フレーム = 3.6 kbit/s |
| 構造 | 1 フレーム = 2 半フレーム = 4 サブフレーム(各 80 標本) |
| 予測 | 10次の短期予測 + 長期(ピッチ)予測 |
| 励振 | 適応コードブック + 固定コードブック、いずれも利得付き |
CELP は code-excited linear prediction(符号励振線形予測)の略です。短期 線形予測器が声道を模擬し、そこで予測しきれない成分——励振——を、候補ごとに 実際に合成して入力に最も近いものを選ぶことで決めます。「近い」の尺度は聴覚 重み付けフィルタを通して測るため、耳が気づく場所にビットが配分されます。
外見の似た ITU-T G.729 系との違いは2点です。フレーム長が4倍あり、遅延と 引き換えに低ビットレートを得ていること。そしてエンコーダが本格的なスペクトル 雑音抑圧の前段を持つことです。分析に届く時点で信号は既に整形されています。
読む順序
まずアーキテクチャで全体像を掴み、あとは信号の流れに沿って 読み進めてください。用語に馴染みがなければ glossary.md を傍らに、 理論より先に現物を見たい場合は walkthrough.md が実フレーム1つを 分解しています。
| 文書 | 内容 |
|---|---|
| architecture.md | フレーム構造、2つのパイプライン、フレーム間に残る状態 |
| bitstream.md | 18バイトのフレームと14個のフィールド |
| noise-suppression.md | エンコーダ前段:スペクトル、臨界帯域、音声区間検出、抑圧 |
| lpc.md | 短期予測、線スペクトル周波数、その量子化器 |
| weighting.md | 聴覚重み付けフィルタ——「近い」をどう測るか |
| encoder-loop.md | 分析合成の実際:目標信号、インパルス応答、記憶の更新 |
| pitch.md | 長期予測:適応コードブックと2段階の探索 |
| fixed-codebook.md | 6種類の励振構造と、それを選ぶ16ビット索引 |
| gain.md | 共役利得コードブックと、その背後にある電力予測器 |
| synthesis.md | デコーダ:合成、ポストフィルタ、消失補償 |
| fixed-point.md | すべての計算が乗る固定小数点演算モデル |
| tables.md | 定数表リファレンス:帯域境界、クラス構成、量子化器の諸元 |
| testing.md | 実装の検証方法と、検証できていない範囲 |
| walkthrough.md | 実フレーム1つをフィールド単位で、復号値まで追う |
| glossary.md | 本コードベースでの用語の使い方 |
ビット配分
1フレームはパラメータ138ビットと抑圧フラグ1ビットを運びます。
| パラメータ | 個数/フレーム | ビット |
|---|---|---|
| 線スペクトル:予測器モード + 第1段 | 1 | 8 |
| 線スペクトル:第2段(2つの半分) | 1 | 12 |
| ピッチラグ(絶対、各半フレームの第1サブフレーム) | 2 | 各 8 |
| ピッチラグ(相対、各半フレームの第2サブフレーム) | 2 | 各 5 |
| 固定コードブック索引 | 4 | 各 16 |
| 利得索引 | 4 | 各 7 |
| フレーム抑圧フラグ | 1 | 1 |
| 139 |
伝送される144ビットのうち残る5ビットはフレーミングです。固定コードブックが パラメータ138ビット中64ビット——ほぼ半分——を占めており、このレートでの CELP の品質はここから出てきます。
秒あたりに直すと25フレーム分、すなわち線スペクトル25組、ピッチラグと コードブック索引が各100個、利得100個です。スペクトル包絡は毎秒25回、励振は 毎秒100回更新されることになります。この比は、励振が声道よりどれだけ速く 変化するかを反映しています。
本文書の表記
固定小数点量は Q 表記で書きます。Q15 は符号付き16ビット値を 2¹⁵ で割った
ものと読み、1.0 は表現できず 32767 が 0.99997 を表します。詳しくは
fixed-point.md を参照してください。
フレームは常に320標本、半フレームは160標本、サブフレームは80標本を 指します。フレーム単位でもサブフレーム単位でもなく半フレーム単位で動く段が いくつかあり、この区別は重要です。