Skip to content
プロジェクト

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標本を 指します。フレーム単位でもサブフレーム単位でもなく半フレーム単位で動く段が いくつかあり、この区別は重要です。

関連プロジェクトを探す