ADPCM(adaptive differential pulse code modulation:適応的差分パルス符号変調)とは、音声をデジタルデータに変換するフォーマットの一つである。
PCMと付いているので「LPCMを可逆に圧縮したもの」だと誤解されることもあるが、「PCM」が表すのは変調方式であってADPCMは非可逆圧縮なフォーマットである。
声品質は、32kb/sで56kb/s μ-law PCMと同等であると言われている。
概要
DPCMでは、一つ前のサンプルと今のサンプルの差分をそのまま記録していた。しかし、これでは波形の変化が差分をあらわす為に用意したbit数よりも更に非常に小さい場合にまだデータサイズに無駄が出てしまう。
ADPCMも「前のサンプルとの差分を記録する」という点は同じであるが、「予測値というものを導入して差分の表現方法を変える」という手法により差分を表現するためのbit数を更に削減している。
特徴としてはDPCMのものを引き継ぎ高速な圧縮展開が可能で且つ処理遅延が小さい。そのためデータ量の削減と展開の高速性を両立しなければならない場合などに多く用いられている。
デコード処理が単純なわりに良好な音質を実現出来るため、携帯電話に搭載された音源ICのなかにはADPCMをデコードできるものもあった。
仕組み
初期状態での波形は±0、予測値は実装によって異なる。
1つのサンプルがnbitで表される場合、内訳は次の様になる。
bit(n-1) | bit(n-2)~0 |
---|---|
増減方向 | 変化率 |
増減方向とはそのサンプルが一つ前のサンプルに対して増加か減少かを表す。0で増加、1で減少が一般的である。
変化率は一つ前のデータにより決定された予測値にかける係数を表し、その係数は次の式で決定される。
(変化率×2+1)÷2^(n-1) ※ただし2^(n-1)は「2のn-1乗」を表す(最上位bitが符号のため)
言い換えれば、上の式の結果を一つ前のサンプルによって決定された予測値に乗ずることによりDPCMでいうところの「前のサンプルとの差分」の絶対値が決定されるのである。
そしてこの差分が前のサンプルと加算され、今のサンプルがデコードされることとなる。
また今のサンプルの変化率に応じ、次のサンプルにて使用する予測値が修正される。具体的な修正の方法は実装によって異なるが、一般的に変化率の最上位が0なら次の予測値は減少、1なら増加する。
波形変化が非常に小さい状態がずっと続くと予測値が小さくなりすぎて波形変化を表すことが出来なってしまうが、これを回避する方法も実装によって異なる。
関連動画
関連項目
参考サイト
- 4
- 0pt