afnf.net

BluetoothのSBCって何ですか?

Bluetooth SBC 2014/09/30 22:52

実機での比較を行いました(2015/06/28追記)

apt-XとSBCの比較を実機を使って行いましたので、合わせてご覧下さい。

 →MDR-EX31BNでapt-XとSBCを比較する

SBCって何ですか?

Bluetoothのオーディオ機器用プロファイル、A2DPで使われる圧縮方式で、SubBand Codecの略です。SBC以外には、apt-XやAACなどがあります。

SBCは低音質って聞きました

確かに、圧縮によって音質は悪化します。apt-XやAACに比べると、計算が簡単な分だけ圧縮効率は悪いです。またapt-Xと異なり再送機構がないため、電波状況の悪い場所では音飛びが起きます。
2014/11/2修正 apt-Xコーデックそのものには、再送やエラー訂正の機能はありません。詳細はこちら

再エンコードしないAAC最強!

送信側の機器によりますが、一般的には再エンコードされます。例えば送信側がiPhoneの場合、音楽は一旦デコードされ、iOSの効果音などとミキシングされた後、AACで再エンコードされてBluetoothに乗ります。

でもSBCは音が悪いんだ!間違いない!

高ビットレート(300kbps以上)で圧縮される場合には、オリジナルとの聞き分けは難しいと思います。以下はloop022.wavという曲です(©bebeto 2006 CCライセンス)。

片方はオリジナルをAACでエンコードしたもの、もう片方は sbcenc 1.2でbitpool=53(約320kbps)でSBCに圧縮した後、AACで再エンコードしたものです。いずれも200kbps付近です。

聞き分けられますか?私は聞き分けられません。ちなみに、sbc_aac_1がSBCです。

スペクトル分析

sbc_orig オリジナル
sbc_acc103 AAC 約200kbps
sbc8-53 SBC bitpool=53(約320kbps)
sbc8-53_acc103 SBC AAC再エンコード

SBCの5.5kHzにノイズ(ピンクの横線)があるのが気になります。バグでしょうか。

いや、ほんとに低音質なんですってば

理由が2つ考えられます。1つは、ネゴシエーションによってbitpoolが低くなってしまう場合です。ここが詳しいのですが、受送信どちらかのせいで200kbps程度に落ちてしまうことがあるようです。

以下は、SBC bitpool=43(約265kbps)でSBCに圧縮した後、AACで再エンコードしたものです。高域が破綻しています。

sbc8-43 SBC bitpool=43(約265kbps)

もう一つは、アナログ側の問題です。再生側のアンプがしょぼければ、Codec関係無しに音質は低下します。

その他

sbcenc/sbcdecの入手とインストール

# apt-get install libsndfile-dev
# wget https://www.kernel.org/pub/linux/bluetooth/sbc-1.2.tar.gz
# tar zxfv sbc-1.2.tar.gz
# cd sbc-1.2
# ./configure
# make && make install
$ sbcenc
SBC encoder utility ver 1.2
Copyright (c) 2004-2010  Marcel Holtmann

Usage:
        sbcenc [options] file(s)

Options:
        -h, --help           Display help
        -v, --verbose        Verbose mode
        -m, --msbc           mSBC codec
        -s, --subbands       Number of subbands to use (4 or 8)
        -b, --bitpool        Bitpool value (default is 32)
        -j, --joint          Joint stereo
        -d, --dualchannel    Dual channel
        -S, --snr            Use SNR mode (default is loudness)
        -B, --blocks         Number of blocks (4, 8, 12 or 16)

$ sbcdec
SBC decoder utility ver 1.2
Copyright (c) 2004-2010  Marcel Holtmann

Usage:
        sbcdec [options] file(s)

Options:
        -h, --help           Display help
        -d, --device <dsp>   Sound device
        -v, --verbose        Verbose mode
        -m, --msbc           mSBC codec
        -f, --file <file>    Decode to a file

sbcencはSunオーディオファイル(.au)しか受け付けないので、変換が必要です。

$ sox music.wav music.au

スペクトル分析はsoxを使いました。

$ sox music.wav -n remix 1 spectrogram -o music.png
Bluetooth SBC 2014/09/30 22:52
comments (0)

blog-java2 engine (build:2019-02-23 17:57 JST)