2015年6月30日火曜日

AAC、OPUS、MP3の音質比較

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


■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年代の技術は伊達じゃなかった。

ちなみに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はどうなってるかというとこんな感じ。

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

2015年6月20日土曜日

軽いランチャーアプリ比較

メモリ使用量(RAM)が小さいものを調査。
使用した端末はURBANO PROGRESSO(Android 4.0.3)。
メモリ読みはSystem Tuner。


■10MB~

15MB ADW.Launcher 1.3.3.9 ★とにかく省メモリ
・プロモーションアプリへのショートカットが一切ない。
・メモリ解放を積極的に行っているのか、たまに20MB超えるもすぐ使用量が下がる。
ほっとくと10MB程度までいくことも。
・ただし英語。最終更新も2013年。が、これといって不具合は無い。

19MB Advanced Home(参考)
・URBANO PROGRESSO標準。


■20MB~

20MB LauncherPro 0.8.6
・Android2.xを彷彿とさせる、少々前時代的なつくり。
・最終更新は2011年。多分今後も更新されない

21MB Nova Launcher 4.0.1 ★日本語対応でおすすめ
・必要なものはホームにおいて、Dockがあればそれでいいという人向け。シンプル。
・個人的にはADW含めてこういうのが好み。

23MB Apex Launcher 3.1.0 ★日本語対応でおすすめ
・設定が日本語でわかりやすい。
・プロモーションのショートカットが「feeling lucky」のみ。すぐ消せる。

29MB スマートランチャー (Smart Launcher) 3.06 ★スマホにいいかも
・スマホに特化したシンプルで小気味よいつくり。タブレットだともどかしいかも。
・プロモーションアプリもなく好印象。
・アプリ一覧がカテゴリ表示のみ。無料版ではカテゴリアイコン・タイトル変更不可。


■30MB~

32MB APUSランチャー 1.8.9
32MB CM Launcher 1.10.10
32MB Hola Launcher 1.8.0
・ゴテゴテしてはいるが起動直後はまあまあ。使っているとメモリが増える。
・ていうかこれ中身ほとんど一緒だよねきっと。
ちなみにチーターモバイルってのはキングソフトのこと。


■40MB~

43MB Cランチャー 3.6.1
・腹が立つほどプロモーションショートカットを量産。

47MB GOランチャーEX 1.0.7
・ひどいメモリ食い。アンインストール後もゴミ残し多め。


■正常動作不可

Soloランチャ 2.2.7

APUS・CM・Hola連合と同じ見てくれのもの。
なぜかデフォルトホームに設定できない。


(2017/07/02追記)

久々に大調査実施。
メモリ読みは同じくSystemTuner、使用機はサブのXperia acro S(4.1.2)。
めんどくさいのでここから漏れた4.4以降対応のものは調査しない。
おすすめ以外はリンク貼らない。

■おすすめ
0MB LauncherPro ひっこむと姿を消すのかメモリ量が測定できない。
設定項目は多いが英語。通常いじらないので気になるまい。

壁紙は標準のもの。

0MB xOS Launcher iOS風ランチャー。これも消える。結構好きかも。
ただ時刻ウィジェットがあったほうが好みなので自分はパス。


10MB 小型デスクトップ 異様に小さい。膨らんでも20MBちょい。
ほっとくとメモリ減る。
限界まで攻めてる感はあって、すべてのアイコンは表に出てきて、グループでまとめられる思想。
好きな場所にアイコンを配置できないことから制約を感じるので気になる人は見送り。

↓ココらへんは誤差の範囲内。おおざっぱに20MB台くらいの気持ちで。

20MB ADW.Launcher One まだ使える。設定は英語。

20MB Cheetah Launcher テーマ色々。開発はディスコンだが不具合はなさそう。
カスタマイズする余地はほとんどない。その分メモリも食わない。
ワンタップメモリ解放もおまけでついていて個人的に好み。


22MB Miniランチャー 設定開いても30MB程度。
開発はディスコン。追加テーマ配布ページが死んでる。


22MB Apex Launcher 標準ランチャに近い質素なつくり。
プロモーションの類が見当たらなくなってる。
カスタマイズ項目は多めで日本語対応。


24MB Nova Launcher 開発は続いているが軽さは健在。
Apex Launcherと双璧をなす老舗ランチャー。
デフォでは時計ウィジェットない様子。

そろそろお気づきかもしれないけど、Mini/Apex/Nova/N/Holo/MIUIはきっとモノはおなじ。

24MB N Launcher Apexに同じく、サイズによって壁紙の位置が微妙になる。


26MB Holo Launcher これもだいぶシンプル。


27MB MIUI Launcher もー貼らんくていいよな

30MB Xperia標準 低いと25MB程度まで落ちる。
まよーするに標準でいいよねって話にしかならん。


■以下おすすめじゃないやつ

26MB アトムランチャー デフォルトのテーマは見づらい。別途テーマをダウンロード可。
が、これらも機能美というより「デザイン」志向なのでややセンスない。
設定いじると別プロセスが起動しメモリ食う。本体も少し食うようになる。

31MB トータルランチャー 標準ランチャに負けた時点でこっち行き
32MB スマートランチャー 上に同じ
38MB ZERO Launcher 値は目についた分だけ合計。他にもこまごまとしたプロセスがあり悪質。
34MB Nougat Launcher 特筆するとこがない。
36MB スクエアホーム2 タイルが好きな人にはいいかも。
40MB +Home
44MB TSF Launcher 3D Shell 切っても切っても立ち上がってくる。ぐりぐり動かす人用。
45MB Nano Launcher 切っても切っても常駐。これも悪質な類。
48MB APUSランチャー 
49MB Arrow Launcher MSには期待してない
50MB LINEランチャー(dodol)
50MB Launcher 8 free
52MB Launcher(Yandex) 値は2プロセスの合計
52MB EverythingMeホームアプリ
62MB Hola ランチャー
64MB Solo Launcher
80MB Next Launcher 3D Shell Lite
92MB DW Launcher 2 1系の軽さはどこへやら。2プロセス合計の値。
109MB GOランチャーEX 4プロセス合計値。もはや意味がわからない。
112MB CM Launcher 3D 2プロセス合計値。とにかくでかい。
141MB C ランチャー  たぶんお金儲けしか考えてないんだと思う

以下はホームに設定できず動作不可
・SwipePad
・SAO Launcher
・Google Nowランチャー
・Honeycomb Launcher
・次世代技術の3Dテーマ

だいたい傾向として、軽いランチャーはそもそもモノが小さいということがわかった。
本体バイナリだけで10MB超えてくると軽さは期待しない方がいいし、20MB程度に
なってくるとまず避けたほうがいい。