Ubuntu 20.04 で PipeWire で PulseAudio を置き換えて Bluetooth イヤホンの通話音質向上を目指す
いまいちだったので結局 PulseAudio に戻した話です
Ubuntu 20.04 では(というか Fedora とかを除きほとんどの Linux ディストリビューションで) PulseAudio が標準のサウンドサーバーとして利用されており、Bluetooth イヤホン・ヘッドセットとの接続プロファイルは
- HSP/HFP
- A2DP Sink
の2種類からの選択です(少なくとも僕の環境では)
HSP/HFP はモノラルでありリスニング音質は A2DP に大きく劣りますが、A2DP は名前に Sink と付いている通り規格として bidirectional ではなく、イヤホン備え付けのマイクを使用することができなくなってしまいます
ミーティングなどの通話時に Bluetooth イヤホンのマイクを利用するためには HSP/HFP に切り替える必要があるわけですが、正直なところあまりに音が酷すぎて10秒も聞いてられません こんな割れまくった音聴いてたら難聴になりそう
ということでこれまで基本的には A2DP で聴きつつマイクは別個のコンデンサマイクを用意していたのですが、PulseAudio を PipeWire に変えれば HSP/HFP でありながらある程度音の良いコーデックが利用できると聞き試しました
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
sudo apt update
sudo apt install pipewire pipewire-audio-client-libraries libspa-0.2-bluetooth
systemctl --user --now disable pulseaudio.service pulseaudio.socket
systemctl --user mask pulseaudio
systemctl --user --now enable pipewire pipewire-pulse
ここで pactl info
を実行し、Server Name
が PulseAudio (on PipeWire 0.3.x)
みたいになっていれば PipeWire の導入はできているはずです(再起動とか必要かもしれません)
Bluetooth イヤホン接続は libspa-0.2-bluetooth
がミソで、僕の場合はこれがないとペアリングには成功するもののその後接続に失敗しました
めでたく HSP/HFP, codec mSBC
というプロファイルで接続できるようになりました
他にも A2DP の別コーデック版プロファイルとかもいろいろ増えてたりしますが、当然マイク入力が使えるのは HSP/HFP 系に限られます
そしてこの mSBC 版 HSP/HFP ですが、PulseAudio 環境で存在したノーマル HSP/HFP と比べて若干マシになっているのはわかるものの、HSP/HFP と A2DP のどちらに近いかと言われると迷わず前者という感じであまり実用性はありませんでした
A2DP 使ってれば特に変わらないので PipeWire のままにしておいても良かったんですが、さすがにまだ安定性に不安があるのと、何よりキーボード F2/F3 の音量調節が効かなかった(ちゃんと設定すればなんとかなる可能性はありますが)ので PulseAudio に戻しました
戻すの自体は簡単で、
systemctl --user unmask pulseaudio
systemctl --user --now enable pulseaudio.service pulseaudio.socket
基本的にはこれだけです
僕の場合はなぜか A2DP が効かない状態になってしまいましたが、/etc/pulse/default.pa
の module-bluetooth-policy
と書かれてる行を書き換えると直りました
- load-module module-bluetooth-policy
+ load-module module-bluetooth-policy auto_switch=false
Discussion