藤本健のDigital Audio Laboratory
第762回
iPhoneからBluetoothで聴くと音質はどう変わる? 波形で比較した
2018年4月9日 11:24
Bleutoothイヤフォンが非常によく売れているという。先日、イヤフォン、ヘッドフォンの専門店であるe☆イヤホンの広報担当者からも「この1年でBluetoothが飛躍的に伸び、最近は半分近くがBluetoothになっている」という話を聞いたところだ。以前と比べ音質も大幅に向上するとともに、バッテリの持ち時間が長くなったことも大きな理由のようだ。また、何よりiPhoneのヘッドフォン端子がなくなったことが、Bluetooth躍進の大きな背景にあるとのこと。
筆者もiPhoneに有線のヘッドフォンを接続するのが面倒なため、Bluetoothイヤフォンを使うケースが増えているし、普段の使用において音質的にあまり不満も感じていないのが正直なところだ。とはいえ、現在主流のBluetooth 4.xの通信速度は規格上1Mbpsで、実行速度はもっとずっと遅いはず。一方、16bit/44.1kHzのステレオのオーディオをそのまま流すと、1.4Mbpsとなり、必ず圧縮が必要になるため、音質は落ちることは間違いない事実ではある。では、どの程度音質が変わるのか、実験で試してみることにした。
Bluetoothの音声をキャプチャした方法
Bluetoothのオーディオ伝送には、いくつかのコーデックが存在する。従来一般的だったSBCから、最近はAACやaptXというものが主流になったため、以前のBluetoothヘッドフォンに比べ、音質が向上するとともに、レイテンシーも小さくなっているのだ。さらにaptXの上を行くaptX HDというものが登場したり、ソニーの場合、より高音質な独自コーデックのLDACを各製品に搭載するなど、高音質化が進んでいることは、多くのヘッドフォンユーザーにとっては周知の事実だろう。
でも、実際のところ有線のヘッドフォン・イヤフォンとどのくらい違うのかというと、あまりよくわからないし、情報も少ないようだ。そこで、その違いをハッキリさせるための実験をしてみようと思い立ったのだ。
考え方としてはこうだ。まずWAVファイルを再生して、Bluetoothで飛ばす。飛んできたBluetoothのオーディオデータを正確にキャプチャし、それを元のWAVファイルと比較する。この際、差分をとったり、周波数解析して比較してみれば違いが明らかになるという算段だ。
問題は、どうやってBluetoothのオーディオデータを正確にキャプチャするかである。これをBluetoothイヤフォンやBluetoothヘッドフォンで受信したのでは、うまくいくわけがないので、Bluetoothレシーバを利用してキャプチャしたい。Bluetoothレシーバの中にはアナログ出力だけでなく、S/PDIFのデジタル出力を備えたものがあるので、これを使えば、正確にキャプチャできるだろうと探してみた。せっかくならAACとaptXに対応したBluetooth 4.x対応のレシーバがいいと検索してみたものの、それに該当する製品を見つけられなかった。その代わり、ちょっと古い製品だがBluetooth 3.0対応で、AACおよびaptXに対応し、かつS/PDIF出力を持つレシーバとしてエレコムの「LBT-AVWAR700」というものが見つかった。
Bluetooth 3.0はBluetooth 4.xと比較して電力使用量は大きいが、ファイル転送速度はさらに速いし、ここでの目的はAACとaptXでの音質をチェックするものなので、実験機材としては問題なさそうということで、これをネット通販で購入して使ってみることにしたのだ。
翌日、製品が手元に届いたので、とりあえずiPhone Xと接続してみたところ、問題なく使うことが確認できた。この光デジタル出力をPCに取り込もうと思ったら、接続可能なオーディオインターフェイスがないことに気づいた。以前は多くのオーディオインターフェイスに標準装備されていたS/PDIFが最近なくなってきており、普段使っているオーディオインターフェイスでは対応していなかったのだ。
仕方ないので、倉庫から古いオーディオインターフェイスをいくつか引っ張り出してきて試してみた。が、安いオーディオインターフェイスの場合、サンプリングレートコンバータなどが入っていて、正確なキャプチャができない。そこで、以前よく使っていたローランドのUA-101で試してみたところ、44.1kHzでガッチリとロックがかかるかたちで正確な取り込みができることが確認できたので、これを使ってみた。
オリジナルとBluetooth伝送の音を比較
実験に用いるWAVファイルは3種類。1つは-6dBで作成した1kHzのサイン波、2つ目は同じく-6dBのサイン波だが、20Hz~22.05kHzまでに変化していくスイープ信号、3つ目はインスタントで作成した30秒の楽曲データ。せっかくなら、キッチリと差分を見るために、目印になる-6dBのインパルス信号を頭に入れておいた。
【サンプル音声/オリジナル】
サイン波
sine1000.wav(1.70MB)
スイープ信号
sweep.wav(3.38MB)
自作した楽曲
demo.wav(5.40MB)
※編集部注:編集部ではファイル再生の保証はいたしかねますのでご了承下さい
この3つのファイルをPCからiPhoneに転送。これらを1つずつ再生して、エレコムのレシーバに飛ばすとともにS/PDIF経由でPCに録音を行なった。このiPhoneを再生する際、iPhone側でボリュームをいじると、レシーバ側の音量も変わってくる。ここでは、できる限り不要な変換はしたくないので、元のままの状態で送れる音量設定を探してみた。結論からすれば、iPhoneの音量を最大にすると0dB、つまりそのまま変化せずにWAVファイルが再生できることが分かったので、これで実験していった。
録音したデータは頭がオリジナルのデータとはそろっていない。そこで目印に入れておいたインパルス信号を見つけ出し、その前の不要な部分をカットしてトリミングした。ここで気になったのはインパルス信号の形がちょっと変形していたこと。オリジナルでは1サンプル分だけ-6dBの信号が入っていたはずなのに、その前後でも少し揺れている。これは明らかにBluetoothで飛ばしたことによるものだ。
【サンプル音声/Bluetooth伝送後にキャプチャしたもの】
サイン波
bluetoothaac_sine.wav(1.70MB)
スイープ信号
bluetoothaac_sweep.wav(3.39MB)
自作した楽曲
bluetoothaac_demo.wav(5.40MB)
※編集部注:編集部ではファイル再生の保証はいたしかねますのでご了承下さい
ご存知のとおり、現在のiOSではBluetoothはAACに対応しており、aptXには対応していない。そのため、これがAACによる変化なのだろう。ただ、サイン波を拡大してみても、かなりキレイに表示されているので、1kHzのサイン波であれば、ほぼ劣化はないのかもしれない。そこで、まずは、このキャプチャしたサイン波の位相を反転させる形で、元のサイン波と重ね合わせてみた。もし、まったく同じ情報であれば、完全な無音になるはずだ。
しかし、実際には少しノイズが残っている。興味のある方は聴いてみてほしいが、ピラピラ(!?)という感じの妙な電子音的なノイズだ。
【サンプル音声/オリジナルとBluetooth伝送の差分】
サイン波
difference_sine.wav(1.70MB)
※編集部注:編集部ではファイル再生の保証はいたしかねますのでご了承下さい
ここで、efu氏のフリーウェアのスペクトラム解析ツール、Wavespectraを用いて、オリジナルとBluetooth伝送した結果の信号を比較してみた。すると、Bluetoothで送ると、低調波・高調波が出て音が少し濁っているのがわかる。この濁りが先ほどのノイズというわけだ。
続いて、低い音から高い音まで変化していくスイープ信号においても、同じことを行なった。上のオリジナルと下のキャプチャした波形を比較してみると、明らかに違いがあることがわかる。オリジナルは20秒の信号であるはずなのに、キャプチャしたものは17秒あたりまでしか信号がない。
そのため、当然のことながら位相反転して重ね合わせてみると、後半約3秒は元のままとなってしまう。これはどういうことなのか? これもスペクトラム解析すれば、簡単にわかる。オリジナルでは20Hz~22.05kHzまで入っているのに対し、Bluetoothを介すと20Hz~19kHzまでしか入っていないのだ。
【サンプル音声/オリジナルとBluetoothの差分】
スイープ信号
difference_sweep.wav(3.39MB)
※編集部注:編集部ではファイル再生の保証はいたしかねますのでご了承下さい
【訂正】初出時「Bluetoothを介すと20Hz~17kHzまでしか入っていない」としていましたが、正しくは上記画像の通り「20Hz~19kHz」のため、訂正しました(4月12日)
まあ、筆者くらいの年齢になると、そもそも19kHzを超える音なんて聴こえないので、差分を聴いても、見た目ほどの差は感じられない。結果として大きな影響はないのかもしれないが、これがBluetoothの音質の実際のところなのだ。
さらに音楽で同じ実験を行なうとどうなるだろうか? 著作権のあるデータをここに掲載すると問題になるケースがあるので、10分で作った曲ではあるが、視覚的に見つつ、実際に音を聴いてみるとより面白い結果が見えてくる。
まず差分を見てみると、やはりノイズが残っているのがわかる。これを聴いてみると、かなり高域に偏ったカサカサしたホワイトノイズ的なサウンドではあるが、明らかにオリジナルの曲のニュアンスは残っている。
【サンプル音声/オリジナルとBluetoothの差分】
自作した楽曲
difference_demo.wav(5.40MB)
※編集部注:編集部ではファイル再生の保証はいたしかねますのでご了承下さい
これがBluetoothで伝送する際に消し去られた音なのだ。前の2つと同様に、スぺクトラム解析してみると、やはり19kHz以上の音が消えていることがわかるだろう。
以上のことからハッキリするのは、iPhoneでBluetooth接続して再生した音質は、明らかにオリジナルより劣化するということ。そもそも、AACコーデックを使っているのだから、当たり前のことが確認できただけともいえるが、19kHzあたりから消えるということは、AAC変換前後の音質を比較した第553回の記事の検証結果などから考えても128~192kbps以下のエンコードだということも見えてくる。
逆にいうとAACやMP3の128~192kbps程度のデータの再生なら、Bluetooth接続でも大きな影響はないが、それ以上のフォーマットだと音質劣化の大きな原因になることが分かってくる。最近は結構高価なBluetoothイヤフォン、Bluetoothヘッドフォンも増えているが、iPhoneで使うのであれば過剰な期待は禁物だ。
今回はiPhoneでの実験までで時間切れとなったが、改めてAndroidなどで利用できる、より高音質といわれるコーデック、aptXでも同じ実験をしてみようと思っている。
【訂正】初出時、エンコードのビットレートについて「128kbps以下」としていましたが、「128~192kbps以下」に訂正しました(4月12日)