1 ポイント 投稿者 GN⁺ 2023-11-25 | 1件のコメント | WhatsAppで共有

Bluetoothスタック修正による音質改善

  • ワイヤレスヘッドホンのユーザーは、標準Bluetooth SBCコーデックを使用すると、音質の低さや高音域の不足を体感する。
  • aptXやLDACコーデック対応機器を購入するのが一般的な解決策だが、これらのコーデックはライセンス費用が発生するため、機器がより高価になる。
  • 現在のBluetoothスタックとヘッドホンの人為的な制限によりSBCの低品質が生じており、これはソフトウェア修正だけですべての機器で回避できる。

SBCコーデック

  • SBCは接続設定段階でネゴシエーションされるさまざまなパラメータを持つ: オーディオチャンネルの種類と数、周波数バンド数、パケットあたりのオーディオブロック数、量子化ビット割り当てアルゴリズム、量子化過程で使用される最大および最小ビットプール。
  • 現在のBluetoothスタックは通常、Joint Stereo、8バンド、16ブロック、Loudness、ビットプール 2..53 のオプションセットをネゴシエーションする。
  • ビットプール値はエンコードのビットレートを変更するパラメータで、高いほどビットレートと品質が向上する。

Bluetoothスタック修正

  • すべてのA2DP互換BluetoothスタックはDual Channelモードをサポートしなければならないが、このモードを強制的に使用する方法がない。
  • Android 8.1と9向けのパッチを作成し、開発者メニューにDual Channelモードを追加、Bluetoothデバイス設定では"HD Audio"コーデックとして表示される。
  • このパッチは、LineageOS、Resurrection Remix、crDroid などの代替ファームウェアに統合された。

551 と 452 kbps の由来

  • Bluetoothの時分割技術は、大容量の固定サイズパケットを効率的に送信するために設計されている。
  • データ転送はスロットを通じて行われ、5スロットが1回の送信で送れる最大数である。
  • 5スロットでは、2Mbps速度で最大679バイト、3Mbps速度で最大1021バイトを送信できる。

なぜこれらすべてが必要なのか?

  • aptXの音質に関する一般的な認識とは異なり、場合によってはSBCが標準328kビットレートより悪い音質を生み出すことがある。
  • SBCは周波数帯域に対して量子化ビットを動的に割り当てる一方、aptXは一定のビット数で周波数帯域を量子化する。
  • 高ビットレートSBCを使えば、ほとんどの場合 aptX より優れた音質を得られ、EDR 3 Mb/s対応ヘッドホンでは aptX HD に非常に近い音質を提供する。

さらに先へ進めるか?

  • Androidパッチセットは、EDR 2 mbps機器のビットレートを 452 kbps から 595 kbps にさらに引き上げられる追加オプションを提供する。
  • persist.bluetooth.sbc_hd_higher_bitrate 変数を 1 に設定することで、より高いビットレートを有効化できる。

機器との互換性

  • SBC Dual Channel は、ほぼすべてのヘッドホン、スピーカー、車載ヘッドユニットでサポートされている。
  • このモードによって問題が発生する機器は非常にまれだが、互換性に関する詳細情報は 4pda と xda-developers で確認できる。

音質比較

  • リアルタイムでブラウザ内でSBC(aptX および aptX HD も含む)にオーディオをエンコードするWebサービスを作成し、さまざまなSBCプロファイルとコーデックの音質を比較できる。

Android開発者への連絡

  • GoogleのBluetoothスタック開発者に対し、AOSPにパッチを含めるよう要請したが、まだ返答を受け取っていない。
  • Gerritコードレビューシステムでも、開発に関わる人々からいかなるコメントも得られていない。

結論

  • LineageOS、Resurrection Remix、crDroid ファームウェアのユーザーは、Bluetoothデバイス設定でチェックボックスを選択することでBluetoothオーディオ品質を向上させられる。
  • Linuxユーザーも、Pali Rohár のパッチをインストールすることで、より高いSBCビットレートを得られる。

GN⁺の見解

この記事で最も重要なのは、既存のBluetoothオーディオ品質をソフトウェア修正だけで改善できる点だ。これは、高価な新コーデック対応機器を購入しなくても、既存機器で高品質なオーディオを体験できる魅力的な解決策である。特に、オープンソースファームウェアを使うユーザーにとって、このような修正が可能であることは技術へのアクセス性を高め、ユーザーが自分の機器をより細かく制御できるようにする興味深い進展だ。

1件のコメント

 
GN⁺ 2023-11-25
Hacker Newsのコメント
  • SBCの幅広いサポートと自然な拡張性を肯定的に評価

    SBCが広くサポートされているのは素晴らしく、既存標準の自然な拡張に見える。個人的には、SBCと比べてLDACやAACに問題があるというより、HFPの品質が低いことが問題だと思う。マイクが有効になった瞬間、90年代に戻ったような感覚になる。双方向Bluetoothオーディオの品質向上を望む。

  • Android Bluetoothスタック内のバグに対する詳細な分析と、ハードウェアの多様性の指摘

    この記事はBluetooth全般についてではなく、Android Bluetoothスタック内のバグに対する詳細な分析だ。著者がまったく触れていないのは、使われるハードウェアが非常に多様だという点だ。Androidは無数のBluetoothチップセット上で動作している。したがって、あるハードウェアでパッチが動作しているように見えても、別のAndroidスマートフォンでは動作しない可能性がある。また、デバイスが現在実行している他の処理によっても変わりうる。たとえばBT+Wi‑Fiチップセットを共有していて、Wi‑Fi経由で動画をストリーミングしながらヘッドホンへ音声をストリーミングしている場合、デバイスはWi‑Fi使用状況とBTに基づいてリソースを割り当てなければならない。したがって、ローカルに保存された音声とストリーミング経由の音声が、必ずしも同じCODECパラメータを得るとは限らない。この話題には著者が考慮していない微妙な違いが多いため、読む際には注意が必要だ。

  • Windowsでの「Alternative A2DP Driver」によるSBCパラメータ調整、およびAAC、aptX、LDACの使用経験の共有

    "Alternative A2DP Driver"はWindowsでこの機能を提供している。SBCパラメータをカスタマイズでき、AACやaptX(試してはいない)も使える。経験上よく動作し、Sony XM4と組み合わせてLDACも使える。試用版だが安価だ。高品質モードでBluetoothの通信範囲が狭くなるのを見て、実際にコーデック(あるいは少なくとも何か)が変わっていることを確認した。上のリンクにアフィリエイト関係はない。

  • LinuxでSBC XQとmSBCを使って、より高いビットレートの音声やヘッドセット音声品質の向上が可能だという言及

    Linuxでは「SBC XQ」というものを通じて、より高いビットレートのSBCオーディオを有効にできる。同様に「mSBC」を使えば、より高品質なヘッドセット音声も利用できる(もちろんSBCやAPTXと比べれば依然として低品質だ)。多くのヘッドホンはより良いオーディオコーデックをサポートしているが、対応は普遍的ではなく、双方向オーディオの改善も確実ではない。Googleがこうした機能、あるいは似たものをすでに統合してくれることを望む。

  • Bluetoothオーディオプロファイルで、あらかじめ長いバッファリングを許可する機能の必要性を提起

    Bluetoothオーディオプロファイルに、あらかじめ長時間バッファリングできる機能が発明されてほしい。たとえば1分の曲を再生するとき、曲全体がバッファリングされるべきだ。「一時停止」をクリックしたり音量を変更したりした場合は、バッファは破棄されるべきだ。しかし長いバッファは、スマートフォンの省電力や不安定な無線接続に耐える助けになる。

  • LineageOSでの高音質オーディオ伝送機能の使用経験と、ユーザー体験改善の必要性への言及

    LineageOSでこの機能を使ったことがあり、とても満足している。3Pコーデックをサポートしないカーオーディオのような機器に、より高品質な音声を送れる機能は非常に有用だ。ヘッドホンでも大きな利点がある。ユーザー体験にはやや改善の余地があるが、機能自体は素晴らしい。

  • タイトルへの年号(2019)追加の必要性と、PulseAudioおよびPipeWireでの実装済みであることへの言及

    タイトルに(2019)を追加したほうがよいだろう。「すべての現在のBluetoothスタック」への言及があるが、こうした機能はすでにPulseAudioとPipeWireで実装されている。

  • Dual ChannelとJoint Stereoのビットレート差が、実際の音質に与える影響への懐疑的な見方

    551 kbpsのDual Channelが328 kbpsのJoint Stereoより目に見えて優れた品質を提供する、という点には懐疑的だ。ほとんどの音楽では、単により多くのビットを重複情報の符号化に使っているだけではないかと思う。

  • macOSでHFP品質を改善する方法についての質問と、LinuxでmSBCを使った経験の共有

    macOSでBluetoothを使ってHFPの品質を改善する方法を知っている人がいるか尋ねたい。LinuxではmSBCを使ってかなり良い品質を体験したが、macOSでは完全にひどく、電話回線/モノラル品質に切り替わってしまう。Darwinでちゃんと動かすためのハックがすでにあるのか気になる。

  • SBCを使っていたことに気づいていなかった経験と、その投稿への感謝

    Lineage 18-1を使っていてSBC機能を使っていたとは知らなかった。この投稿のおかげでSBC機能を使っていたことに気づいた。"magic -"