wmal2pcm_setup.exe WMA9 Lossless の音声を、無圧縮 WAVにデコードするコマンドラインツールが出ました。用法は
wmal2pcm input.wma output.wav
可逆なので当たり前ですが、WaveCompareにかけると圧縮前と一致します。
可逆音声圧縮コーデック 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もある。
フィルター名 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 (.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を越えるFLACファイルを出力できない。 長時間(おおむね5時間以上)のラジオ番組などをFLACで圧縮しようとすると、エラーが発生する。
リバースエンジニアリングにより作られた。
テストしたら、ちゃんと動作した。
input.wav を Apple lossless で test.m4a にして… alac -f out.wav test.m4a input.wav 4B6A62A6 out.wav 4B6A62A6
Wavpack - 3 Questions, lossy high bitrates and cmdline options
Using WavPack Version 4.1 の Usage Guide には、 次の推奨設定が掲載されている。(新版Using WavPack Version 4.31)
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 を省いたほうが良い、ということになる。
以前にも話題になりましたが、 Wavpack lossy 400kbps, parameters EAC + foobarにて、再びbryantの回答。 「最近、高ビットレートでは-hを使わないことを推奨しています。highモードを使っても、 再生時のCPU負荷が上がるわりには、音質の向上は極めて少ないからです。 もし時間があるなら、-xスイッチは使った方が良く、これは少し(場合によっては大いに)音質を向上させ、 再生時負荷を下げます。」
高レートで-hを使わないことについて、既に音質が十分で圧縮が遅くなるだけだから、というだけでなく、 対称モードなので当然ながら、無駄に再生時負荷も上がる、ということも指摘。 非対称モードを発動する-xは、逆に圧縮は遅くなる代わり、デコードが速くなる(再生時負荷が下がる)。 音質的にも(特に「普通でない」パターンでは)効果がある。
マニュアルを見ると、音質重視の設定が -hb256x -hb320x -b384x となっていて、384のときはなぜhがついていないのか、 疑問に思うユーザが多いようです。
ただ、ここで注意しないといけないのは、-hは遅くなると言っても、2倍のオーダーで、極端には遅くならない、 -h単体ではそれなりに速い。それに対して、-xは10倍くらい極端に遅くなる。 作者は「時間があるなら-xは使った方がいい」と言っているが、 これは「ちょっと遅くなるだけ」といった気軽に使えるオプションではないです。 -hと-xを併用すると20倍くらい遅くなる。そして「遅さの割に効果がないので-hなし推奨」といっても、 -hb384xにしたとき遅さの主な原因は-hでなく-x。また、より低いレートでは、音質重視なら当然-hであり、 開発者が言っているのは「高レートでは」という限定での話。
再生時負荷の違いは、通常のPCではせいぜい1%が2%に増えるといった程度のもので、 CPUパワーのない携帯用端末で再生する…などの特殊な用途でない限り、 問題ないでしょう。-h -xは実質的に「時間と音質のトレードオフ」。-xは非対称モード発動というより、 標準でないパターンも克服できる柔軟性を持たせるスイッチと思った方が実際的と思います。
2005年3月8日
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にかかるという「非常識」さも、 かえってこのハイブリッドの発想がいかに従来と根本から異なる素晴らしいものであるかを示しているに過ぎない。
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 は、もっと試されても良い技術だ。