♪WAVの可逆圧縮アルゴリズム
■ このスレッドは過去ログ倉庫に格納されています
0001かんせい
NGNGよくあるのは、差分とってハフマン圧縮だと思いますが、
もっと圧縮率を上げられないのでしょうか。
いい方法を知っていたり、アイディアがあったら教えてください。
0002名無しさん@お腹いっぱい。
NGNG仕組みはしらん。
0003名無しさん@お腹いっぱい。
NGNG0004かんせい
NGNG静かなインスト曲は高圧縮率になりますが、
うるさいハードロックはあまり圧縮できません。
それ以上、圧縮する方法は無いのでしょうか。
0005デフォルトの名無しさん
NGNGが考えられます。
差分の圧縮方法としては、算術圧縮が一番効率よさそうだけど、
算術圧縮は特許でがんじがらめです。利用するなら要調査
非可逆圧縮の多くは
コサイン変換を使う
予測係数を使う
のどちらか又は両方ですね
0006名無しさん@お腹いっぱい。
NGNG0007SAGE
NGNGWavelet + RangeCoder 辺りでど〜よ。
0008かんせい
NGNG以前、「原音wav」と「mp3をデコードしたwav」の差分をハフマンで圧縮してみました。
結果は失敗でした。mp3は高音がかなり原音と違うので、
差分は高音が強く音量も大きくなってしまいどうしようもありません。
>6
加速度って、原波形の2階微分(差分)のことですか?
これも以前、実験しました。
高音があまり含まれていない曲では、単なる差分より高圧縮率になりました。
0009デフォルトの名無しさん
NGNG差分でも元の語長に収まらないけど、差分の場合はキャリーを
含めた処理をする事が可能です。が、2階差分だと・・・
また、差分を取って圧縮出来ない信号とは高周波成分が多い訳で、
さらにその差を取って処理するのはあまり効率的になりません。
0010デフォルトの名無しさん
NGNG単純な線形予測係数と残差はどうでした?
0011かんせい
NGNGもちろん、差分を取ると1サンプルあたりのビット数が1ビット増加します。
16ビットPCMの差分をとると、17ビット必要になり、もう一回差分をとると18ビットです。
それが入りきるデータ型計算を行い、ハフマン圧縮をしたら可逆圧縮になりました。
問題は、高周波成分が多い場合です。
何か良い方法は無いでしょうか。
>10
単純な線形予測って2階微分と同じでは?
勘違いでしたらごめんなさい。
それと、ハフマンを使うことにも疑問を感じています。
圧縮されたデータの他に、Tree情報も圧縮ファイルに
含めなければならないからです。
音量の大きい16bitのwavデータでは、
Treeが数十KBにもなってしまいます。
0012名無しさん@お腹いっぱい。
NGNGストリームの各ブロックBについて
既にエンコードしたブロックの中から差分の絶対値和最小となる
参照ブロックRを探す。このRとBの差分を差分ブロックDとする。
参照ブロック番号Rの列はスライド辞書圧縮する。
差分ブロックDの各値は正規分布するものと仮定して、分散を計算して、
この分散に基づく正規分布の確率モデルに適合するハフマン符号表で
静的ハフマン符号化圧縮する。
ってな風にしたら、だめ?
素人なので、へんなこといってるかも。
0013名無しさん@お腹いっぱい。
NGNG0014名無しさん || die
NGNGブロックが離れると差分が大きくなる確率が高くなるんじゃない?
音声は急激な変化よりも連続的な変化が多いから
ADPCMが結構圧縮効いてるんだろうし。
圧縮対象の性質を考慮した圧縮法じゃないと。
AメロとAメロ’の差分とってAメロ*2+差分と表せられたらいいのにねえ。
ってMIDIじゃあるまいし。
0015デフォルトの名無しさん
NGNG単純な線形予測とは、LPCやPARCORの事です
つまりフィルタですね。
そのフィルタの逆フィルタを計算し、元の信号に逆フィルタをかけて
その残差を記録します。残差+フィルタで元の信号が出てくる仕掛けです。
ただ、この方法はノイズにはあまり効果がありません
(もちろんノイズに十分な可逆圧縮が出来るなんて言うのは山師だけですが)
ハフマンについてはあらかじめ表を定めておくのが一番良いのでは?
あるいは、分布の度合いによって10通りくらい決めておくとか
算術圧縮ならそれこそ分散だけを記録する方法で十分でしょう
(ただこれらは特許でがんじがらめ)
0016かんせい
NGNG面白い案をありがとうございます。
直感的にそのままでは、うまくいかなそうな気がしますが、
非圧縮ファイルが大きいほど、よく近似できる参照ブロックRが
見つかりやすくなり、高圧縮率になりそうです。
>15
なるほど。ありがとうございます。やってみます。
0017デフォルトの名無しさん
NGNG0018名無しさん@お腹いっぱい。
NGNGこの辺、利用させて貰うとかだめ?
外していたらごめんなさい。
0019名無しさん@お腹いっぱい。
NGNGレジスタは、X0〜Xn a1〜an Y
元データを順に並べて 現在X0 ひとつ前 X1 ...Xn と Xレジスタに記録
【圧縮】
X0 = Yi + (a1*X1 + a2*X2 + . . . + an*Xn)/2^16
となるように Yiを定めます。
係数 a1, . . . ,an
適当な期間ごとにΣ|Yi^2|が最も小さくなるようにanを定めます。
そしてYi列とanをそのスパン事に圧縮し記録します。
【再生】記録スパン事に a1〜anを設定してはYiから上の式でX0を求め
Xレジスタを回転させながら再生します
0020かんせい
NGNGパラメトリック分析って何ですか?
>19
なるほど。参考になります。
たくさんのアイディアをいただき皆さんありがとうございます。
仕事が忙しいので、正月休みにでもそれぞれの方法を
テストしてみたいと思います。
0021デフォルトの名無しさん
NGNG分析においてモデルを指定するという意味です
0022かんせい
NGNGhttp://www.compressconsult.com/rangecoder/
エントロピー圧縮の一種のようですが、
ハフマンや算術圧縮とは違うようです。
圧縮ツールCGAに使われているようです。
http://www1.odn.ne.jp/synsyr/
私は、英語が苦手なのでまだほとんど理解出来ていません。
概要が分かる人いませんか?
説明していただけると助かります。
日本語で解説しているサイトでも構いません。
0023デフォルトの名無しさん
NGNGかんせい君より分かる人はここには居ない.
0024デフォルトの名無しさん
NGNG私の方はブロックソート法というのを調べています
こっちは日本語があるので
http://www.sr3.t.u-tokyo.ac.jp/~nishim/block_sort.html
http://www.hn.is.uec.ac.jp/~arimura/dissertation-j.html
0025かんせい
NGNG私も調べてみます。
0026デフォルトの名無しさん
NGNG下げられるかって所にかかってるでしょう
00277
NGNGhttp://member.nifty.ne.jp/DO/
算術符号化と同じで、エントロピー圧縮の理論上の最高値を出せる(はず)の符号化です。
ちなみに、こういう音声に特化してない一般的な圧縮法でいいなら
今のところ最強は PPM 系のアルゴリズムかと。
0028名無しさん@お腹いっぱい。
NGNGこのページ作ってる奴すごいな。
多分俺より頭いい。
俺:22歳
0029>28
NGNG0030名無しさん@お腹いっぱい。
NGNG知りませんか?教えてください。
#いっておきますが28じゃないです(w
0031デフォルトの名無しさん
NGNGやりたい事によりますよ。 というかそんなに良い本はありません
0032名無しさん
NGNG0033デフォルトの名無しさん
NGNG>情報理論については、中学2年頃からはまり、特にデータ圧縮である
>LZ法、BlockSorting法、PPM法、その他様々な方法を一通りやってきている。
若気の至りと言う奴なんだろうかな
0034デフォルトの名無しさん
NGNG0035>28
NGNG0036デフォルトの名無しさん
NGNG実は圧縮アルゴリズムってやってる奴結構多くないか?
0037デフォルトの名無しさん
NGNGしかも結構面白いのが圧縮だね
0038名無しさん
NGNG0039便乗さん
NGNGwavファイルをtxt形式に変換(その逆も)する方法か,
ソフトがありましたら教えていただけないでしょうか?
おねがいします
0040>39
NGNG「wav形式をtxt形式に変換」と言うより
「BinaryをTextに変換」と言った方が正しくないかい?
0041デフォルトの名無しさん
NGNG0042>41
NGNG0043>39
NGNG0044デフォルトの名無しさん
NGNG0045名無しさん@お腹いっぱい。
NGNG0046うぉろ
NGNGIIRの伝達関数が出てくる、IIRの設計ツール知りませんか?
FIRならいっぱいあるんだけど…
0047デフォルトの名無しさん
NGNG0048sage
NGNG004948
NGNG0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNGブロックソーティングやってみたよ。単純には適用できないね。
波形毎にソートして、差分をとったらどうだろう?
0052デフォルトの名無しさん
NGNGソースもついてたような気がするんで探してみては?
0053デフォルトの名無しさん
NGNG戸田さん?
0054デフォルトの名無しさん
NGNGplz可逆じゃないよ。
アフィン変換のパラメータを保存する方式。
でも方針としては、使えそう。1波形を基本にする
のだと思うな。
0055兄ヲタ
NGNGなるのか。戸田恵子マンセ〜
(アンパンマンじゃなくてカララとかマチルダとかキャッツアイの瞳とか
洋画の吹き替えの声ね。ダンナと知り合ったのは「地球へ・・・」の時ですか?)
0056デフォルトの名無しさん
NGNG0057名無しサンプリング@48kHz
NGNGめっちゃ非可逆じゃん。
0058板井さん
NGNG圧縮というよりは、採譜であろう。
非可逆の話題は別スレを立てたほうが良いのかな。あと、画像とか動画とか。
0059デフォルトの名無しさん
NGNGなんかもめてるね
0060名無し
NGNG0061デフォルトの名無しさん
NGNG256バイト単位でDCT変換して2二元ハフマン圧縮したら結構な
圧縮になるのでは?算術を実数ではなくて整数近似計算させれば
可逆になるだろうし。
0062デフォルトの名無しさん
NGNGそこの住人、煽るんだったらちゃんと煽ればいいのに(藁)
0063デフォルトの名無しさん
NGNGやってみたら判るけど・・・・ やってみたら?
0064デフォルトの名無しさん
NGNGステレオ16ビットなら4バイト=1サンプルって事なんだね
64サンプルDCTをすると結果は 元のデータよりも6bit以上余分に必要になる
ハフマン圧縮程度じゃ、可逆圧縮の場合は逆にデータが増える可能性大
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNG計算誤差をなくすために必要な情報量が増える、といえば解り易いかねえ
0067デフォルトの名無しさん
NGNG元の値が a,bなら
a+bとa-bだ
ところで、加算や減算を桁溢れしないようにすれば1bit増える。
ただし a+b が桁溢れする程大きければ a-b はMSBとMSB-1は等しい
というように DCTした後の結果は完全に独立ではないから情報量として
は増えてはいない。
それでもレジスタとしては 64サンプルなら 6bit余計に必要って事だ
(完全に元に戻すなら小数点以下のガードビットが数ビット欲しい)
■ このスレッドは過去ログ倉庫に格納されています