8 : 04 可逆音声圧縮・短信

← 8 - 03 p↑ もくじ i 8 - 05 n →

可逆音声圧縮メモ

2003年 8月31日
記事ID d30831

WMA Lossless→WAV

2003年3月19日

wmal2pcm_setup.exe WMA9 Lossless の音声を、無圧縮 WAVにデコードするコマンドラインツールが出ました。用法は
wmal2pcm input.wma output.wav
可逆なので当たり前ですが、WaveCompareにかけると圧縮前と一致します。

.ape用DSフィルター

2003年8月29日
APE の DirectShow FIlter 出現

可逆音声圧縮コーデック Monkey's Audio (.APE) を Windows の一般のメディアプレーヤーで再生できるようにする DirectShow Filter (DSF)がサードパーティーにより公開された。

http://dsp-worx.de/index.php?pg=projects&tid=18

これを使うと、Media Player Classic (MPC) や Windows Media Player (WMP) から APE の再生が可能になる。

APE 3.98 も再生できるが、3.97 に最適化されているようだ。 同梱のDLLは 3.97 であり、3.98で圧縮したAPEをデコードできないので注意。 DLL 3.98 との組み合わせでも動作するが、CPU使用率が異常に高くなるなど不具合がある。 3.97 以下で圧縮したものと DLL 3.97 のデコーダの組み合わせでテストすると良い。 foobar2K などで直接再生したときに比べて若干CPU負荷が高いが、すでに十分に実用になる。

APE と FLAC を比べた場合、APE のほうが圧縮性能が良いが、そのぶんデコードがFLACより重い。 また、APEでは後方互換より圧縮性能を優先しているため、 新しいエンコーダーが作ったファイルは古いデコーダーでは開けないことがある。 したがって、FLACのほうが無難といえば無難だが、純粋に「圧縮比」だけを問題にするなら、 実力はAPEのほうが上だ。

すでに CoreFLAC というプロジェクトが名前は存在して、FLACのDSFが先に出るというのがおおかたの予想だった。 APEのDSFの出現で、Monkey's Audio に新しい可能性が広がると、 最近不活発なFLACがますますマイナーになってしまうかもしれない。 (FLAC は、Xiph のプロジェクトの一部になったが、 Xiph は、いま Theora のほうに集中している。 9月頭には Theora のほうで動きがあるかもしれない。)

これによって、近い将来 APE を動画の音声成分として使うことが可能になると見られる。 もちろん、 将来的には FLAC 音声の動画も来そうだ。 完全にロスレス(無損失)でオリジナルの音質を保存し、WAVに比べて40〜60%のサイズになるAPEは、 画像の圧縮は手を抜いて軽くしてでも音にこだわりたいクラシック音楽の演奏会のような動画で需要があるかもしれない。 古典派〜印象派くらいまでのクラシック音楽なら音の進行も規則性が高いため、 FLACでもAPEでも特に縮みやすい。 軽音楽でも、短いPVなら、APEやFLACで完全にクリアな音質、というのもそう悪くない。 音がメインで画像がオマケのような動画なら、音にビットをまわすのは、もっともな選択だ。 自分でCDをリッピングして音声APEでオリジナルのPVを作ってみるのも楽しいかも。

AAC なら64Kbpsでもけっこうきれいとか言うけれど、 やっぱり可逆圧縮と聞き比べると、64だとボロボロですしねーー。 なお、このDSF、れいによってパスに日本語の文字があると駄目かも知れない。 テストはASCIIのファイル名でどうぞ。

Reported by: NekoKoneko, "Animaniac"

追記

このフィルターは、その後改良が続けられ、Unicodeファイル名にも対応。 2004年12月現在の最新版は、 DS-Monkey Source v1.00(推奨)

これとは別系に、クローズド開発されたRadLight APE directshow filterもある。

.ofrがDS再生可能に

2004年3月18日
RadLight OptimFROG DirectShow Filter v1.0.0.0 .ofrがDS再生可能に

フィルター名 RLOFRDec.ax 1.0.0.1, OptimFROG.dll 1.0.0.0

音声のロスレス圧縮といえばAPE、FLAC、Shorten、WavPackの4つが古くからの定番だろう。 OptimFROG もけっこう有名で、サポート例も割と多い。 最近は IEEE Float のロスレス圧縮を世界で最初にサポートしている。

WMAロスレスとかRealAudioロスレスとかロスレスばやりだが、 DS再生できるものにAPE、FLAC、そして今回のこのOFRが加わった。 FLACは、もちろんCoreFLAC、動画の音声にも使える。 そして今回RadLightからFROGのフィルターが出た。これで .ofr がDSプレーヤーで直接再生できる。

.ofr はもともと foobar2000 のような対応プレーヤーで再生できるが、 このDSフィルターによって任意のDSプレーヤーで再生できるようになる。 手元では MPC, WMP6.4, WMP9, ZP, TCMP で再生できることを確認した。 Bs Player では Unknown Format というエラーが出て再生できなかった。 また高圧縮のOFRではジッターが出たものの(それなりのCPUパワーが必要)、 標準では再生はなめらかだった。

ちなみにOFRの圧縮率は、デフォルト同士ではAPEと同程度(APEより高いことも)。速度もまずまずだ。 高圧縮設定で比較すると、APEには圧縮率ではかなわないようで、特に圧縮速度でかなり負ける。 とはいえ、ロスレスに興味あるかたは、とりあえず試してみてください。 ちなみに日本でも MIO というロスレス圧縮が開発中(ERIシリーズ)。 また、RKを音声圧縮に特化した RKAU という形式も比較的知られている。

WavPack 4.0 beta 3リリース「問題なければ数日中に正式版」

2004年6月29日

WavPack (.wv)のメジャーバージョンアップ 4.0 が、 まもなく正式公開される見通しだ。 WavPack は、ユニークなハイブリッド・モードを持つオープンソース(BSDライセンス)の可逆圧縮。 再生側は 3.97 と後方互換を保っている。

3.97 からの変更点をまとめると、

(1) 内部構造が完全に変わって、ブロック単位の圧縮になった。そのため、

- (1a) シークが軽くなった。手元の foobar2000 でテストしたところ、小刻みなシークはうまく反応してくれないときもあるが、 パッと前後に大きく飛ぶのは非常に速い。

- (1b) エラーに強く、ストリーミングも可能。そして多重化しやすい。動画の音声成分として有望なので、 オーディオマニアでなくても、ちょっと注目していいかと。

(2) 32ビットがサポートされた(CoolEdit の独自の32ビットも含む)。

(3) 「VHQ みたいな」オプションができた。 例えば、fast モードで圧縮するとき、-xスイッチをつけると、再生時負荷は fast モードの軽さのままで、 圧縮率が少し上がる。ただし圧縮はかなり遅くなる。fast モードで効果があるようだ。 数パーセント変わる。 もともと圧縮率重視のモードでは、害はないが、効果は少なく、相当遅くなる。

(4) lossy での音質が向上。また、ハイブリッドモードで「全体のサイズ優先」というオプションができた。 WavPack というのは斬新な圧縮テクノロジーで、可逆と不可逆の両方が使える。 例えば、不可逆で 256 kbps などにもできる。 ところが、このとき -c スイッチをつけて、.wvc という「補正」ファイルを作っておくことで、 256 kbps の .wv と、この .wvc の両方が同じフォルダにあると、可逆になる。 (.wvcが同じフォルダにない場合には).wv 単体でも(不可逆圧縮として)デコードできる。もちろん、不可逆wv+wvc でも全体としては、 オリジナルよりずっと小さくなるのだが、上記の機能を実現するため、可逆wvよりは効率が悪くなる。 その効率をアップする(圧縮率を高める)オプションがついた。ただし、不可逆wvの音質に影響するとのこと。

作者は、今後、Linux版やMac版の開発に協力するほか、 Cueシートをサポートする予定だという。

ハイブリッドについての補足説明

foobar2000 のような対応プレーヤーでは、 それ単体では不可逆の.WVと同じフォルダに対応する.WVCがあると、自動的に可逆で再生し、 .WVCがなければ、.WV単体でも不可逆で再生(賢い)。

[FLAC] flac.exe に2GBの壁

2005年2月8日

要約: FLAC の仕様にはサイズの制限はないが、 現在の flac.exe は2GBを越えるFLACファイルを出力できない。 長時間(おおむね5時間以上)のラジオ番組などをFLACで圧縮しようとすると、エラーが発生する。

Flac Has A 2gb Size Limit?

フリーの Apple Lossless (ALAC) デコーダ

2005年3月7日

リバースエンジニアリングにより作られた。

Open Source ALAC Decoder

テストしたら、ちゃんと動作した。

input.wav を Apple lossless で test.m4a にして…

alac -f out.wav test.m4a

input.wav 4B6A62A6
out.wav 4B6A62A6

[WavPack] Lossyモード超高レートで -h は必要?

2005年3月4日

Wavpack - 3 Questions, lossy high bitrates and cmdline options

Using WavPack Version 4.1 の Usage Guide には、 次の推奨設定が掲載されている。

Bitrate     High quality   Faster Encode 
 -------     ------------   -------------
 256 kbps    -hb256x        -hb256       
 320 kbps    -hb320x        -hb320       
 384 kbps    -b384x         -hb384       

384 のときは、高音質モードを指定する -h は不要なのだろうか。 それとも、これはマニュアルのミスタイプなのだろうか。 この疑問に対して、作者自身の回答が引用されている。

384 で -h を使えば、確かに理論的には音質は向上するが、-h がなくてもすでに十分以上の音質で、-h を使うと処理時間が倍増するから、 このレートでは実際上 -h は要らない、「理論的には使ってもいいが、使う必要ない」というのが作者の見解。 ミスタイプではなく、意図的に -h なしにしたと。

言い換えれば、超高レートで h と x を併用すると悪い副作用があるというわけではない。 併用したければしてもいいし、理論的にはそのほうがいいが、知覚可能な変化は起きないよ、ということらしい。

おおざっぱに -h は計算を高精度でていねいにやる(だから必ずある程度は音質が向上する)といった一般的なオプションであるのに対して、 -x は「圧縮しにくい難しいパターンを検出して、適切な処理を行う」というオプションだという。 -x はほとんどの場合、大きな音質向上にはつながらないが、「難しいパターン」があったときには絶大な威力を発揮する。 だから超高レートでは、-h はなくても事実上問題ないが、通常のアルゴリズムではうまく圧縮できないパターンがたまたまあっても対処できるように -x は使うのが無難、という結論のようだ。 高レートの高音質志向で h と x のどちらかを省くとしたら、h を省いたほうが良い、ということになる。

ALAC デコーダ続報

2005年3月8日

RareWares にも収録されました。 ドキュメント

[WavPack] 非可逆モードの-s0

2005年9月10日

Wavpack lossy mode noise shaping problem

要約: WavPackの「非可逆モード」(注)では、デフォルトで -s-0.5 の「聴覚心理マスク」が行われ(ソースが44100の場合)、 低音域をわずかに犠牲にして、高音域を精密にしている。 この方が人間の耳にはよく聞こえる、という仮定のもとだ。 しかし、一部のソースでは、 -s0 を指定して、明示的にこの処理を禁止した方が、かえって知覚的にも音質が良くなる場合がある。

注: 非可逆モードという言い方は正確ではない。 このモード(-b)自体は、.wvc を書くか書かないかで、可逆にも非可逆にもなる。 正しくは「ハイブリッド・モード」という。 ここで問題になっているのは、詳しく言うと、 「-cなし-bで非可逆圧縮したときの.wvファイル」および「-cつき-bで2ファイルに可逆圧縮したときの.wvファイル側」。 これらいずれの場合も.wvファイル単体は非可逆なので、 「単体で可逆の.wvファイル」と区別するために、便宜上、非可逆モードと呼んでおく。

「聴覚心理マスク」というのも、説明の便宜上いま勝手に作った言葉だが、 MPEG-4 ビデオの適応量子化、つまり XviDでいう lumi mask を連想させるものがある。 人間の耳につきやすいところを重点的に精密にし、 目立ちにくいところで手を抜く。結果、数値上はノイズが増えるが、知覚上はクオリティーが上がる。 ただし、アルゴリズムは人間の心理をモデル化しているため絶対ではない。 数値上はノイズが増えているので、まれに、運が悪いと、逆効果になる。

例:
-b256h -s-0.5
ave noise = -38.65 dB, peak noise = -29.89 dB

-hb256 -s0
ave noise = -39.09 dB, peak noise = -30.44 dB

-hb256 -s0.5
ave noise = -37.13 dB, peak noise = -28.31 dB

チューニング自体も、4.0 beta2 と 4.0 beta3 の間で変更されており、流動的な要素があるようだ。

結論: WavPack で非可逆圧縮するときは、WVCを作る作らないにかかわらず、 一度 -s0 を試してみよう。何もしないとデフォルトで(lumi maskならぬ)acou mask が適用され、 低音域を犠牲に高音域を重視した戦略になる。図に当たれば心理的音質が向上するはずだが、100%そうなる保証はない。 逆効果になることもある。

手元の経験でも、WavPack非可逆は他から考えると非常に高いレートをかけても比較的簡単にABXできることがある。 経験上も数値上も、 Wavpackの非可逆には、微妙な面があると思われる。 ざっくばらんに言って、非可逆で高圧縮にしたいなら Vorbis でも使った方が無難、ということだ。

Wavpackの本質はロスレスなので、上記のことはWavpackの本質的性能には関係ないし、 ハイブリッドモードという発想の斬新さそれ自体を損ねるものでもない。 全体ではロスレスのくせに256も使ってABXにかかるという「非常識」さも、 かえってこのハイブリッドの発想がいかに従来と根本から異なる素晴らしいものであるかを示しているに過ぎない。

OptimFROG DualStream vs. WavPack hybrid

2005年9月15日

How to use OptimFROG DualStream Correction files?

要約: 「半可逆」同士の比較で、

ここで「半可逆」というのは、ファイルが二つあれば可逆になる圧縮の片割れのこと。 また次の意味でも「半可逆」という言葉がふさわしい。

MP3に代表される非可逆圧縮は非常に圧縮率が高いが、人間の心理のすきをついて耳をごまかす不純さがある。 一方、FLACに代表される可逆圧縮は完全に無劣化だが、非常にファイルサイズが大きい。 多くの人が薄々感じている不満として、劣化させてしまうのは気分的にしこりが残るが、 かといって可逆だとサイズが大き過ぎる、ということがある。 100〜300程度の劣化圧縮と800〜1000程度の可逆圧縮の間、つまり400〜500の中間的なレンジには潜在的なニーズがあるはずだ。

このニーズに応えるのがHybrid WVであり、OptimFROG DualStreamだが、それは単にレートが中間的というだけではない。 これらの圧縮は数学的に可逆になるアルゴリズムから、誤差が小さくなるように「非可逆部分」と可逆にするための「差分」を分離する。 基本は可逆アルゴリズムなので、人間の耳をだませればいい、という、その場しのぎの性格がなく、気分が良い。 将来、アンドロイド(人工知能)と人間がいっしょに生活するようになったとき、 彼女たちは「MP3の320ってすごく特徴ある歪み方していて、耳障りです。 WVやOFSは最大誤差が一定限界から出ないで正確なので好きです」と言うだろう。 人間の聴覚系の盲点をつくゴマカシ圧縮と、数学的に誤差を抑える「準可逆」の違いだ。

とはいえ、基本はそうなのだが、実はこれら「半可逆」も、非可逆部分と差分を分離するとき、人間の聴覚特性を考慮している。 WavPack の s0 問題は、まさにこれで、数学的には s0 の方がPSNRが良いのに、 何でデフォルトで s0 にしないのか?というのが、この問題の微妙さだ。 他方、人間の耳をごまかせればいいと言うと言い方が悪いけれど、 そこには知覚心理などの、純粋数学では割り切れないより高度な問題が絡んでおり、 技術的には「不純」なやり方の方が難しいと考えられる。

「半可逆」圧縮は、往々にして「可逆なのか非可逆なのかハッキリしない中途半端な存在」と見られる。 さらに、 人間の耳でABXした場合、「半可逆」はMP3やVorbisなどに比べて圧倒的に成績が悪い。 200程度のレートで容易にABXされる。そこだけ見ると音質が悪いように思える。 けれど、300〜400超では本領を発揮して、人間の耳に透明であるのはもちろん、数学的にも誤差が厳しく制限されている、 という状態になる。

中途半端と言えば中途半端だが、「半分」というところが、かわいい。

可逆はギスギスの数学。完璧だがそれだけだ。 非可逆はドロドロの人間属性。人間の耳をあざむくことを最優先する。 それらの中間の「半可逆」は天上と地上が適度にミックスされた世界だ。 数年前と比べて記憶メディアのギガ単価が大幅に下がったため、面倒なこと言わないで可逆でいいじゃない、というのはあるが、 劣化圧縮が50程度から始まって300程度までよりどりみどりなのに、 その先が急に800程度まで飛んでしまうのは、多様なニーズという観点からも好ましくない。 WavPack と OptimFROG は、もっと試されても良い技術だ。

この記事のURL

テキスト版省パケ版XML版


WavPack普及用バナーの話

2006年 3月29日
記事ID d60329a

もっとWavPackの知名度を上げようと、有志のユーザがバナー(ボタン)を作っている。

WavPack buttons, Get WavPack!

日本では可逆でTTAが静かなブームのようだが、 日本語のファイル名に先に対応してくれたのはTTAではなくWavPackであった。 日本のユーザにも特に配慮してくれていることも、特筆しておきたい。

可逆圧縮としてのWavPackは、確かに圧縮率ではTTAにわずかに負けるかもしれない(速度はどちらも速い)。 しかしWavPackには非可逆モードがある。 MP3、Vorbis、AACなどと違い聴覚心理モデルを用いないアルゴリズムのため、 聴覚的に透明になるために必要なビットは高いものの、 人間心理のようなあいまいな要素を介さずに、 純粋に数学的に(SN比として)誤差を制限できる。

非可逆圧縮として、最も客観的に高品質なのが、このWavPack(とOptimFROG)なのである。

可逆では大きすぎるが、保存用に高品質にしたい、lame 320よりさらに上にしたい、後から再圧縮することまで考慮して…というときはWavPackの出番だ。聴覚心理的に透明であるだけでなく、 数学的にも「透明」(誤差極小)。 サイズも、通常のMP3などよりは倍近く大きいものの、可逆圧縮に比べると約半分のサイズ。

可逆にするにしても、TTAより圧縮オプションが多く、柔軟な活用ができる。 特に2ファイルに分けて可逆圧縮するハイブリッド・モードはユニークで、 「データを可逆で保存したいが、持ち運び用などに小さい非可逆ファイルもほしい」というときに、 例えばFLACとMP3というように二種類作らなくても、WavPackのハイブリッドで無駄なく一石二鳥となる。 OptimFROGにもほぼ同様のオプション(DualStream)があるが、 WavPackの方が処理がずっと速いし、OptimFROGは現状、動画の音声成分に使えない(WavPackは使える)。

TTAは確かに良いのだが、ソフトウェア・サポートは必ずしも進んでいない。 WavPackの方が、サポートの度合いが大きいだろう。

(TTA+CUE).mka を紹介したことを少し後悔しているのは、再生サポートの問題がいちばん大きい。 CoreCodec と TTA作者がしっくりいかず、CoreTTA は幻で終わる可能性が高い。 ハイブリッドモード(.wvcファイルの自動ロード)までサポートしている CoreWavPack と比べると、 TTAのサポートは多少遅れ気味という気がする。

開発自体が停滞しているFLACと比べても、WavPack は活気があるし、 今日の標準では、FLACの圧縮率も速度も必ずしも満足できるものではなくなってしまった。 開発中のAPE 4.x も、もしかすると有力だが、今のAPEは圧縮率こそ素晴らしいが、 マルチチャンネル非対応の上、 エラー耐性も弱く、アーカイブ用にはお勧めできない。

こうした状況を考えれば、 WavPackがFLACに代わり、ロスレスの代表格になってもおかしくない。 WavPackについて「そのポテンシャルに見合うだけの知名度がない」と嘆くユーザが出るのも、 うなずけるのではないでしょうか。

WavPack: Hybrid Lossless Audio Compression

80x15ボタン

80x15のボタンも作られた。予想以上にカコイイ!

作者自身に黙って勝手にロゴとか作っていいの?という慎重な意見もありましたが WavPack開発者 Bryant 本人が登場、 いくつかのデザインは自分も気に入った、今のWavPackのロゴも絶対とは思ってないし、 自由にリンクに使ってください。と。

「話は違うけど、空気圧縮装置の会社が相互リンク依頼を送ってきたよ」とのオチつき。

この記事のURL

Public Domain

テキスト版省パケ版XML版



メールの宛先
Email us in Cantonese, English, Japanese, or Mandarin.

Cost 704.2 milliseconds.

inserted by FC2 system