Raspberry pi zero WH の LDAC 品質設定備忘録です.
Raspberry pi zero WH を LDAC 対応させると音がブツブツキレる……
Linux の USB Gadget 機能を使って Raspberry pi zero WH で LDAC/AAC/Apt-X 対応 UAC2 オーディオトランスミッターを作ったことを以前の記事で書きましたが,LDAC でつなぐと音がたまに途切れていました.
あまりひどくはなかったのでそのまま使っていたのですが,たまには中のパッケージのアップデートしなきゃダメだよな(Raspberry pi OS のパッケージのアップデートのこと)ってことで,作業すると,音切れがヒドく聞くに耐えない状態になってしまいました.
解決方法は?
いろいろ試した結果,pulseaudio を以下のように設定することで解決しました.
$ vi /etc/pulse/default.pa ... .ifexists module-bluetooth-discover.so # LDAC Standard Quality load-module module-bluetooth-discover a2dp_config="ldac_eqmid=auto" #load-module module-bluetooth-discover a2dp_config="ldac_eqmid=sq" # LDAC High Quality; Force LDAC/PA PCM sample format as Float32LE #load-module module-bluetooth-discover a2dp_config="ldac_eqmid=hq ldac_fmt=f32" .endif ...
キモは “ldac_eqmid=auto” で,これは,自動的に品質を上げ下げするモードで接続するためのオプションです.これを設定すると驚くほどスムーズに再生されるようになりました.
どうも Raspberry pi zero WH の bluetooth は(私の持っているものの個体性能があまり良くないだけかもしれないですが)あまり接続品質高くないっぽいです.そう言えば WiFi 接続した場合も転送速度がびっくりするほど遅い.だから,高いビットレートでの転送には耐えられないんじゃないかなと思います.だから,ldac_eqmid=auto でビットレート可変にしないといけないんじゃないかなと.だから多分,ldac_eqmid=mq(最も低品質の接続)でも大丈夫だと思いますが,可変で問題ないのでわざわざ低品質にする必要はないので,この設定は試していません.
だがしかし……
と言うことで,無事解決して,(接続して使えるようになるのに若干時間がかかる以外は)かなり実用的なLDAC/AAC/Apt-X 対応 UAC2 オーディオトランスミッターになってくれましたが,Linux を LDAC に対応させる pulseaudio のプラグインのコードを公開してくれていた EHfive さん,このプロジェクトを終了させるそうで,他の手段に移るようアナウンスされていました.
どうも素の pulseaudio に A2DP codec を追加するための仕組みが追加されたそうで,その仕組みを利用すると Gstreamer 経由で LDAC 他のサポートが追加できるらしい…….あと PipeWire なるものもあるみたいですが……
う〜ん.正直分かりません.pulseaudio の後継プロジェクトっぽいですねぇ.
あとは Raspberry pi だと bluez-alsa を使う方法ってのもあるっぽいですが,とりあえず今のままでも使えるのでしばらくはこのままで運用しようと思います.
以上!