藤本健のDigital Audio Laboratory
第931回
「Opus」と「AAC」どっちが高音質? 周波数分析でコーデック比較した
2022年3月7日 10:02
前回は「Opus」という音声圧縮フォーマットについて、いろいろと検証してみた。すると、MP3よりも遥かに高性能であること、8kbps、16kbpsといった低ビットレートにおいても音楽が破綻せず十分聴くことができるレベルであること、そして128kbps、192kbps、さらには320kbpsにおいてもロスが少なく高音質なものであることが分かった。
では、現在音楽配信で広く使われている「AAC」とOpusを比較したらどのような違いが現れるだろう? もし、Opusのほうが高性能であれば、ライセンスフリーという利点もあり、Opusへの移行が加速していくようにも思える。というわけで、今回はそのOpusとAACの性能をじっくり比較していこう。
2種類の比較方法を使って、OpusとAACを対決させた
前回の記事が公開されたあと、TwitterやFacebookなどのSNSを介し、さまざまな声や情報が寄せられた。「Opusなんてまったく知らなった」という人が多かった一方、Opusの利用事例などもいくつか連絡をいただいた。YouTubeの音声コーデックの一つとして搭載されているだけでなく、ほかの音楽ストリーミングサービスなどでも採用されているようなのだ。筆者自身、しっかり検証ができていないので、具体な名前は伏せるが、大手でも採用しているケースがあるという。
一方、筆者の身近なソフトとしては、PreSonusのDAW「Studio One」でもOpusのインポート・エクスポートに対応しているという情報も寄せられた。ホントか? と思い、「Studio One 5 Professional」を起動し、Opusファイルをトラックへドラッグしたら、そのまま波形が表示され、さらにエクスポート機能を確認したら、普通にOpusファイルという項目が用意されていた。
今回はそのOpusとAACを対決させようと思うのだが、方法は前回と同じ2つの測定方法を用いてみる。1つはefu氏開発の周波数分析ソフト「WaveSpectra」を使う方法。WaveSpectraでは、リアルタイムの分析結果が黒で表示される一方、ピーク値が赤で、直前の300サンプル分の平均が青で表示されるので、同じ曲を16秒のところでどうなっているかを比較するという方法だ。
ちなみに、このWaveSpectra。連載では長年使わせてもらったが、実は1~2カ月前にサイトが閉じてしまったようだ。WaveSpectraのほかに、波形生成ソフトである「WaveGen」、ビットbyビットでオーディオファイルの比較を行なう「WaveCompare」など、非常に有益なツールを開発し、さらにフリーで公開していて、ずっと利用させてもらっていた。改めてefu氏に感謝を申し上げたい。これらのツールが入手し難い状況になってしまったものの、まだしばらく活用させていただこうと考えている。
WaveSpectraとは異なるもう一つの方法が、昨年編み出したスペクトログラムの差分を見るという方法。
オリジナルと圧縮結果のスペクトログラムを作成し、それをグラフィック的に比較して差分を抜き出せば、そぎ落とされた成分を視覚的に確認できるだろう、というもの。当然、差分が少ない、つまり真っ暗になるほど、オリジナルに近いというわけだ。これにはSteinbergのWaveLab Pro 11を使ってスペクトログラムを作成し、DiffImgというフリーウェアで差分を作り出している。
前回は、OpusencというソフトでWAVファイルからOpusファイルを生成し、その後Opusdecというソフトで再度WAVに変換した結果を分析していた。今回のAACでは、どのエンコーダーを使おうかと考えたが、やはりAppleのエンコーダーの評判がいいので、これを使ってエンコード、デコードを行なっている。
本来であれば、最新のMacを使い、最新のmacOS Monterey上でミュージックアプリを使って操作するのがよさそうだが、分析ソフトがWindowsベースなので、WindowsのiTunesをMicrosoft Storeからダウンロードし、これを使って処理を行なった。
具体的には、一般環境設定の「読み込み設定」において、AACエンコーダを選ぶとともに、カスタムでビットレートを設定。その後、ファイルメニューから「変換」-「AACバージョンを作成」を選んで変換。AACファイルが生成されたら、これをWAVファイルに変換している。
iTunesのAACエンコーダーでは、64kbpsから320kbpsまで10段階で設定できるので、一般的に使われるケースが多い、64kbps、96kbps、128kbps、192kbps、256kbps、320kbpsの6パターンで変換してみた。
前回Opusは、6kbps、16kbps、32kbps、64kbps、96kbps、128kbps、192kbps、256kbpsの各ビットレートで実験したが、AACにはない低ビットレートは比較対象からは外すと共に、新たに320kbpsのOpusデータを作成、比較することにした。
Opus vs AAC ~WaveSpectra比較の場合
というわけで、以下に1つ目の実験であるWaveSpectraの比較を掲載する。
上記の結果から、いろいろ面白いことが見えてくる。
64kbpsあたりの低ビットレートにおいては、Opusが圧倒的によく、ビットレートが上がるごとに、だんだんとAACが追い上げてくるが、192kbpsあたりまではOpusが勝っているように見える。ところが256kbpsではOpusの音質向上がにぶり、AACのほうはかなりオリジナルに近い高域までキレイに音が出る形になる。そして320kbpsでは256kbpsとあまり違いが見えないといった具合だ。
Opus vs AAC ~スペクトログラム差分の場合
では、2つ目の実験では、どうなるのか。そのスペクトログラムの差分の結果は以下の通り。
スペクトログラム差分の結果も、実験1から想像できる通りのものではあったが、やはり192kbpsまではOpusが優位にあったが、256kbpsで逆転し、AACの320kbpsにおいては、ほぼオリジナルと変わらないレベルにまでなっている。
前回Opusを試した際、これが非可逆圧縮においてはベストなのでは? という気もしたが、やはりOpus、AACではそれぞれの得意・不得意があるようだ。そして低ビットレートではOpusの勝ち、256kbpsを超える高ビットレートではAACの勝ちということがハッキリと見えた。Appleが推奨するiTunes Plusは、まさにそのAACの256kbpsなのだから、これがいいというのを確信をもって導きだしていたのだろう。
また機会があったら、別のCODECについても同じ方法で調べてみたいと思う。