2015年6月30日火曜日

AAC、OPUS、MP3の音質比較

何番煎じかわからない波形から見てみるテスト。
おまけでTips。
テストに使用した曲はiTunesで250円のSB69な曲。
AmazonMP3といいiTunesといい、DL購入曲って盛大に
クリッピングしてて萎える。

(余談)
これはエンコ時に波形が振れるためで、CD仕様にコンプかけまくった
音源をそのまま圧縮かけるとたいていこのように割れる。
エンコ時に数%程度全体のボリュームを下げるといい感じに収まる。


■32kbps

・MP3(LAME)
アプリによって時間表示が微妙なABRやVBRは好みじゃないのでCBR。
音質はまあ、言わずもがな。20世紀の技術。


・AAC(FhG) HE-AACv2
今は(実質的に)なき者となったWinampについてきたエンコーダ。
中身はMP3のIISエンコーダでおなじみの独フラウンホーファ製。
VBRはないこともないが使い勝手が悪すぎるため、ないものと考えていい。


およそ17kHzまで保持。
ちなみにFhGとNeroのHE-AAC・HE-AACv2ではSoXで48kHzに
アップサンプリングして使用している。
44.1kHzだと原音部分が1kHz程度少なくなってしまうことから、
音質が悪くなってしまうケースがままあるため。

FhGの音質は後出のNeroと比べると安定感は今ひとつで、高音が目立つ
ソースではNeroに比べ高音域がより歪む傾向にある。
サンプリングレートを48kHzから下げてみてもしっくりくる値は
このビットレートではなかった。

・AAC(Nero) HE-AACv2
たぶんニコ動アップ用などで最も多く使われているであろうAACエンコーダ。
標準のABR1パスエンコードを使用。


こちらは少し伸びて18kHzまで保持。
FhGより多少安定感のある音質であり、Xrecode IIやx264guiExなど
フロントエンド環境も充実してるので安牌切るならこっち。

また、スマホなどの小さなスピーカーでは問題なく利用可能。
平井堅の「告白」やコモリタミノル三部作(aikoの「あした」とか)では
定位がおかしくなるが、ヘッドホンや大きなスピーカーで聞くような音質でも
ないので特に問題はない。

(余談)
HE-AACv2が高圧縮を実現できる理由に「モノラル化」をあげて説明する
記述がちらほらあるけど、厳密には「モノラル化」する技術自体は
MP3の時代からあり※、AACでも素のAAC部分に実装されている。
※「和差ステレオ」ってやつ。この技術は遡るとFMステレオ放送まで行き着く

じゃあ実際は何がミソなのって話になるのだけど、これがちと難しい。
ざっくり言えば左右の音の違いを差分音データで持つのではなく、
左右の音の波形を比較し、波の形の違いを数値化したもの(位相差)でもって
保持することでステレオに復元するためのデータ量を削減している。

要するにデータでステレオを実現するのではなく、計算でステレオを
実現するって発想がキモ。
だからparametric(パラメータの)ステレオという所以。

(ちなみに)
Nero2パスのアルゴリズムは「ここで削っちゃダメだろ」てとこでビットレートを
下げたり無音部分で節約しなかったりと色々おばかちんなので非推奨。
攻めたいなら2パスでなくVBR(Q値指定)を使用したほうがいい。
同じビットレートではVBRのほうが虫食いが少なく良音質。
特にハイハット・シンバルの歪みが明確に改善するのがわかる。

ただし低いQ値指定(HE-AACなど)すると素のAAC部分とSBR部分の境界が
少し開いた虫食いのような形になるのでおすすめしない。
その場合はおとなしくABR指定でいい。


・AAC(qaac Apple) HE-AAC
AppleさんはHE-AACv2非搭載。
しかしこのビットレートではなかなか善戦している方とは思う。
ただ注意点があって、このエンコーダはビットレート不足を起こすと
パニックに陥るのか音飛び(実際には軽いミュート?)が発生する。
CBRではブチブチになるも、ABRでは結構回避できる。
が、限界を超えると盛大に無音状態になるのでやっぱり低ビットレートでは
おすすめしない。
まあ、素直にv2使ったほうが全然いいよねって話に過ぎないんだけど。


・Opus
AAC-LCやHE-AACより高音質というフレコミのオープンなフォーマット。
ただしHE-AACv2には太刀打ちできないのでこのビットレートでは
MP3よりマシな程度でチャンネルもモノラルになってる模様。
むしろqaacのほうがよほどいいので、「HE-AACを上回ってる」とは
いつもいつでもそう言えるとは限らないと個人的には思う。

※追記:プレーヤーによって正しく再生できないぽい。
のちにきれいに聞けることが判明。



グラフを見る限りは高い音まで含まれているようであるも、
実際は可聴域に満たない程度。
また、高域の補完情報も不自然な階段状になっており微妙。

(上がOpus、下がNero)



■64kbps

・MP3(LAME)
はいはい前世紀前世紀。


・AAC(FhG) HE-AAC


上限周波数は22kHzにタッチ。
ハイカットの概念が乏しいこのエンコーダ、裏目に出ると音質が非常に
悪くなってしまい、GetWild'89のようなハイハットが目立つ、
シャカシャカしたソースでは高音が異常に歪む。

これを回避するにはディテールを犠牲にして32kHzでエンコしたほうが
より安定感のある音質に仕上がる。
が、やはりトータルの音質も下がるのでこれといって積極的に使う理由が
まったく見当たらない。

・AAC(Nero) HE-AAC


32kbpsと変わらないというか一見まったく同じグラフ。
割り切ればヘッドホンで聞くにも十分な音質。
後述のqaac48kHz問題、ゲットワイルド問題を鑑みると、このビットレートでも
こっちがだいぶ安定して使えるのではと考えてはいる。

・AAC(qaac Apple) HE-AAC
世間様で定評があり、実際Neroよりも高音域が安定してるqaac。
が、このqaac。Neroとは逆に48kHzが苦手らしく、このビットレートでは
音質がすこぶるよろしくない。

(44.1kHz)


(48kHz)


グラフを見ると44.1kHzのほうは上限が20kHzであるのに対し、
48kHzのほうは落ち込みながらも22kHzまで引っ張っている。
ひょっとしたら、この可聴域外の2kHzに注力した結果、可聴域の
音質がおざなりになってしまったのかもしれない。
ともあれ映像ソースでない限り44.1kHzがよい。

またどういうわけかTMNの「Get Wild '89」がカオス。
まず17秒前後の「ドーン!」音の広がりに段階ができてしまい不自然。
30秒頃から入る太めのスネアが大の苦手でひどいノイズまみれ。
1分前後のシンセストリングスはブツと切れるようになり、以後シュワシュワ
した音が続き1分10秒台のゲゲゲサンプリングが鳴っている部分で最高潮に
ノイジーな感じになってしまっていた。
ちなみにNeroでは概ね問題なかった。

以上のことから、qaacのHE-AACは「おまけ」程度と考えており、
常用するには不向きな印象。

・Opus
相変わらず不思議な形状のグラフを呈するOpus。
おそらくここでは16kHz以降に適当な倍音成分とノイズを付加して
聴き心地をよくしようとしてるのだろう。



ともあれパテントに守られたHE-AACと対等に渡り合ってるのは
素晴らしい…と思ったがその底力はそんなもんではなく
64kbpsでは唯一、ソースの原音(下図矢印部分、13kHz付近の帯)を
ほのかながら保持している優秀さが光る。
実用域で言えばOpusは文句なくHE-AACを上回っている。


(Neroが入ってないのは単純にめんどくさかっただけ)


■128kbps
ここらで音質差がかなり小さくなる。

・MP3(LAME)


16kHzまで保持。
多くのソースでは必要十分の音質。
が、高音シャリシャリソースではアラが目立つ。

Get Wild '89冒頭 上がLAME、下がFhG


・AAC(FhG) AAC-LC


こちらも潔く16kHzでローパス。

・AAC(Nero) AAC-LC


こっちはちょっと高くて17kHz。
まあ、有意な差はない。

・AAC(qaac Apple) AAC-LC


ちょっとおまけして17kHzあまり。
これ見る限りでは「qaac最高!」という評価の理由は見当たらない。

・Opus


唯一128kbpsで20kHz到達。
どうせまたテキトーなんだろうと思いきや、カンブリア宮殿でおなじみ
サトリアーニの「Crowd Chant」冒頭のクラップがシャンシャンでなくきちんと
パラパラ音がする。
厳密には可聴音というよりは「耳の真ん中で感覚的に感じる」程度のものなので
多分あと5年10年すれば聞こえなくなるだろうし聞こえなくなっても困らないので
別にこだわるところでは全然ないのだけども。

ちなみにこのあたりの音はAACが苦手とする※ところで、けっこうビットレート盛っても
なかなか出ず、一方LAMEだと192kbpsあたりからほのかに聞こえ始め256kbpsあたりで
けっこうまともになるのだけど、こっちでは128kbpsでもそのニュアンスが出てる。
ともあれ2010年代の技術は伊達じゃなかった。

※追記:AACというより後述のFFMPEGが苦手としてる可能性あり

ちなみにOpusXrecode IIをフロントエンドにして使用可能。
コマンドいじるのが苦手な人はそっち使うがよろし。
フロントエンドって何ですかという人は一切忘れるがよろし。


■まとめ

最後にエンコ殺しのCrowd Chantももってきて一挙比較してみる。
ソースのMP3はVBR・約240kbps、それぞれすべて128kbpsで変換。



FhGとNeroで矢印の部分に比較的大きな虫食いがあり、音情報が欠けてる。
一方LAMEとqaacは比較的まんべんなく情報を保持しているが五十歩百歩。
で、件のOpusがあほみたいに一番下のソースと張り合っている。

以上も含め、ここで比較した128kbpsまでのビットレートでの用途でまとめると

・NeroはFhGより安定
・qaacはNeroより僅かに高音質、が時に不安定
・ソースによってはLAMEはAAC-LCと張り合うが、高音の目立つ曲はお手上げ
・Opusは頭ひとつ飛び抜けている

ということが言える。
ビットレート別に音質で順位づけするなら

128k Opus > AAC群 > LAME
64k Opus > Nero > qaac
32k Nero > FhG

となる。
まあ、もうひと息ビットレート盛りゃ何使っても大差ないんだけどね。

160kbps 上から順にnero、qaac、opus


とりあえず今回FhGの存在意義を見出すことはできなかったので
今後使うことは一切あるまい。


■10/20追記
FFMPEG3.0で向上したとされるAACエンコーダ。
実際使ってみたところそれほどでもない上「原音にあるはずのない音」が
存在するので現時点でおすすめしない。

下図は3.1.4でエンコードしたもの。



■'17/9/1追記
また、128kで音がシャキッとしない、クリアさが足らん感じがするので
見てみた所一音一音がなんかぼやけた感じになっていた。
特に黄色の枠で囲ったとこがわかりやすい。

(上がFFMPEGAAC128k、下がソースのMP2 224k)


試しにビットレート盛ってみたがあまり効果がない様子。

(上がAAC160k、下がソース)


で、このときOpus 128kはどうなってるかというとこんな感じ。

(さてどっちがソースでしょう)


もしffmpegやHandbrake、その他フリーの変換ツールを使う場合で
音質にこだわるならばAACでなくあえてMP3の256~320kbpsという
選択肢はアリと思う。(定評のあるLAME相当のもののはずなので)
逆を言えばフリーソフトのAACはお世辞にも良い音質とは言えない。

もっとも、そういうのってどっからか拾ってきた動画※を変換するのに
使うのだろうからそもそもどうでもいいのだろうけど。
ちなみにのちのち動画を無劣化編集する場合は音声トラックはAAC推奨。
MP3は音ズレの原因となる。

※それ自体がフリーソフトでAACエンコされてたりしてね