Bluetooth A2DP、つまりBluetoothオーディオに使われている必須コーデックは「SBC」である。世の中ではSBCコーデックの音が悪く、AACやAptXなどの方が音質が高いとされる。
SBCの最高ビットレートは、現在販売されているBluetoothオーディオ機器では、Bitpool=53の時の328kbpsである。最近では、世の中の多くのBluetoothイヤホンはこのような高いビットレートで接続ができる。規格上はさらに上があるが、電波を使う以上、接続性に問題が出てくる。
さてこの328kbpsの音質が本当に悪いのかを検証するために、ffmpegでSBCに変換し、もう一度WAVに変換してから再生する。
なお、ソースとして使った音源は自作の音源で、作成時にはクリップしないように気をつけ、バウンス時に浮動小数点(float)32bitで出力し、SBCからWAVの変換時にもfloat 32bitで出力した。サンプリングレートの変換はなし。これによりデコード時の量子化誤差を抑えられる。
ABXテストをしよう
ネット上に「音質が悪い」と触れ回る情報は伝聞だけであって、なんのソースもない場合が多い。そのため、自分でABXテストを行う。
耳に自信のあるあなたがテストしてみたいのであれば、ファイルを用意したので、聴き比べるといいだろう。A(test1-a.wav)とB(test1-b.wav)の2パターンがあるが、どちらがSBCでどちらが原音なのかは秘密にしておく。また、同じZIPファイルの中には、SBC 192kbpsでエンコードしたもの(test1.sbc192.wav)と、さらにSBC192/328と原音の差をとったファイル(*-diff.wav)がある。ファイルは32bit floating pointのWAVのため、非常にサイズが大きい。
https://drive.google.com/uc?id=1P1zi289QYj6RhFE2p57KSPlRpijGqSS7&export=download
ついでに、Soundcloudにもアップロードしたので、聞くと良いだろう。
XとY、どちらが原音でどちらがSBC 328kbpsだろうか。originalか、sbcかという文字列が どこか にあるので答え合わせしてほしい。(PCのほうが探しやすいだろう)
ただし、SoundcloudはOpusコーデックにより圧縮されているため、厳密さを求めるなら、Google DriveにアップロードしたZIPファイルの中身を聴いてほしい。
328kbps
ffmpeg -i test1.aif -acodec sbc -ab 328k test1.sbc
ffmpeg -i test1.sbc -acodec pcm_f32le test1.sbc.wav
元のソースファイル「test1.aif」と「test1.sbc.wav」を聞き比べ、違いがわからなければ、聴覚上の音質劣化はないことになる。
テストには foo_abx (foobar2000 ABX Comparator)を使った。ヘッドフォンは JVC HA-MX10-B スタジオモニターヘッドフォン。
しかし、再生したものの、328kbpsではテスト以前に、違いを聞き分けることが全くできなかった。
そのため、結論としては
SBCコーデックの328kbpsでは、原音と区別できない
ということになった。
192kbps
昔のBluetoothオーディオは、bitpool=32つまり192kbpsのSBCにしか対応していないものもあった。このため、音質がかなり悪かったとされる。
今回は、192kbpsでも確かめてみた。すると、以下のように、16回全てで違いが聴き分けられた。
確かに、シンバルがジャンジャン鳴っている部分(0:15秒〜)や、ラップ部分(1:03〜)は人の声の輪郭がおかしいような感じを受け、すぐに音質劣化が聴き分けられる。
一方で1:44のシンセリードの部分などはあまり違いがわからないものとなった。得意不得意があるようだ。
もう一度328k
SBCの圧縮における得意不得意の部分がわかったので、この部分だけを328kで聴き分けてみる。
…しかし、あてずっぽうにしかできず、328kでの聴き分けは無理であった。
Kamedo2氏によるテスト
以下の記事で、Kamedo2氏によるリスニングテストの結果を紹介している。328kでは多くの音源で「区別できない」となっている。ちなみに、SBC, AAC, aptXどちらもほぼ原音と区別できず、どのコーデックでも音質劣化はほぼ感じられないと考えられる。
ただし、SBCではビットレートを落とすと急激に音質が劣化していることもわかる。詳しくは記事を参照してほしい。
結論
192kbps
ビットレート192kbps(bitpool=32)では非常に音質が悪く、アーティファクトの出方は同じビットレートのMP3よりも酷いものと考えられる。192kbpsにおいては、他のコーデックと比べても、原音と比べても、どちらにしても「音質が悪い」と言える。私のABXテストでは、Appleのエンコーダを利用したAAC 192kbpsは原音と区別ができないほど優秀であった。それと比較すると、SBC 192kbpsの場合はかなり音質が悪いと言える。
328kbps
しかしながら、他の音声コーデックと同様、高いビットレート、328kbpsにおいては一切聴き分けができないため、“聴覚上”音質の劣化がないと断ずることができる。つまり、現在販売されているBluetoothイヤホンで、bitpool=53で接続できるものであれば、音質が悪いと科学的に言えないということだ。
あなたは test1-a.wav と test1-b.wav を聴き分けられただろうか?もしかして、192kbpsのSBCでもそれほど違和感を感じなかっただろうか?
どちらが原音でどちらがSBCだっただろうか?
もし聴き分けられたならば、Opusなどの最新の音声コーデックのテスターとしてあなたの能力をコミットすることで音声コーデックの発展に貢献できるだろう。
なお、今回は自作の音源を使ったが、ffmpegを使えばあなたの音源でも試すことが可能だ。もしかすると、328kbpsでもアーチファクトが発生する音源があるかもしれない。これを「キラーサンプル(killer sample)」といい、例えば、MP3においては、最高音質の320kbpsでもキラーサンプルの音源のエンコード時にはアーチファクトが発生し、音質が劣化する。
そうしたサンプルは例があまりないため、普段使いにおいては気にすることはない。これは非可逆圧縮の宿命でもあるので、そうした稀に起こる問題がどうしても気になるならば、SBCやAptXやLDACと言わず、有線接続でロスレス音源を聴くしかない。
では、AACやAptX、SBCはどちらが音質が良いのか?
既にSBC 328kbpsと原音の違いがわからないのであるから、これより聴感上良いコーデックは存在しないことになる。まだテストしていないが、AptXにおいて原音との差がないのであれば、全てタイで音質の良し悪しはないということになる。ただ、「aptXは本当に高音質で低遅延なのか」で書いたように、SoundExpertのテストによるとAptXとSBCでは音質の違いはないと結論づけている。
なおAACはBluetoothでも利用される256kbpsのビットレートにおいて、10回の再圧縮を行っても劣化が感じられないほどのコーデックであるため(下記参照)、少なくともAACにおいても原音と差がつかないと言えるだろう。つまり、AAC(256kbps)もSBC(328kbps)もオリジナルと比較して差はないほど高音質だ。
聴感上、この3つのコーデックの間に音質の優劣はないと考えて良い。
ただし、BluetoothはAACが最強だった… aptX(HD) vs AAC vs SBC 最終決戦に書いたように、あくまで定量的に測定し数値に現れる上ではAACが最も音質が高かった。
ただし、AptXやAACが搭載されているデバイスはコーデック以外の要因で高音質であることも多い
AptXやAACが搭載されているイヤホンやヘッドフォンは、AptXやAACを使用するライセンス使用料を支払うため比較的高価格になる。高価格帯では必然的にドライバーやDACの音質が求められるため、マーケティング上その部分で差異を付けなければならないだろう。検証してきたように(328kでは)コーデック自体では劣化は聴覚できないのであるから、音質の差の大半はドライバーやDAC部分での性能差が原因だろう。
おまけ
元の音声と変換後の音声を逆位相でぶつけて、違いをノイズとして取り出してみたものが、先ほどのZIPファイルの test1.sbc192-diff.wav と test1.sbc384-diff.wav だ。なお、ファイル名の「384」は328の誤り。
192kbpsと原音では、明らかにシャカシャカ鳴っており、差が明確にわかるものとなった。
328kbpsと原音では、192kbpsほどではないものの、微小なノイズが取り出せた。
なお、こうした行為にあまり意味はない。ネット上にはこうして取り出したノイズを論って、音質を論じるような論者がいるものの、直接聞かない音を論じても意味がないのだ。
ネット上に蔓延る愚かな音声圧縮の比較
最後に愚痴を書かせてほしい。
さらに愚かな音声圧縮の比較として、「波形」を比較したり「スペクトル」を比較するものがあるが、物事の一面的な部分しかみておらず、最悪の比較方法と言える。
例えばスペクトルの比較において22kHzまで出ているサンプリングレート 44.1kHz無圧縮PCMと、48kHzまで出ているサンプリングレート96kHz 96kbps AACではどちらが優秀と言えるのだろうか。
例えば、Opusという最新のコーデックは、大体64kbps以上のビットレートにおいては、どんなにビットレートをあげても20kHzまでしか高域が出ないものとなっている。対して、MP3はローパスフィルターを入れなければ、22kHz近辺まで音声を格納することが可能である。つまり、高域はMP3の方が出るのである。
しかし、音質がいいとされるのはOpusなのだ。なぜならば、Opusは、人の耳で知覚不可能な領域をバッサリと削ることで、人の知覚に大きく影響する部分にビットレートを割くことにしたからである。
これにより、Opusは96kbpsにおいて128kbpsのMP3と同等の音質を獲得している。
高域がいくら出ていようが、聞こえない部分をスペクトラムで視覚的に論じようが、その部分は決して耳で聞くことはできないのだ。
前は、WAVとFLACの音質の差異を騙る虚を論じたので、興味のある方は読んでほしい。