PipeWire は PulseAudio よりも低遅延らしい、というのを発見し、ちょっと試しに Linux Mint にインストールしてみました。
apt-add-repository ppa:pipewire-debian/pipewire-upstream apt update apt install pipewire systemctl --user --now disable pulseaudio.socket pulseaudio.service systemctl --user mask pulseaudio systemctl --user --now enable pipewire pipewire-pulse pipewire.socket pipewire.service sudo reboot
PC の再起動が完了したら、以下のコマンドで結果を確認してみます。「サーバー名」の部分に「on PipeWire」が表示されれば成功です。
pactl info
そう言えば、Firefox の about:support 画面にも PulseAudio の情報が出力されていたのを思い出し、PipeWire のインストール前後で比較してみたところ、「往復遅延時間」という項目が 78.27ms から 172.62ms に悪化?していました。PipeWire って低遅延なのでは?どういうことだろ?
こちらは PulseAudio の状態
こちらは PipeWire に変更した状態
また、Spotify で音楽を再生してみた感じでは PulseAudio と違いが感じられませんでした。これは PipeWire の設定をチューニングする必要があるのではと思い、まずは設定ファイルをホームディレクトリ配下にコピーします。
mkdir ~/.config/pipewire cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/
続いて、過去事例を参考に「default.clock.rate」と「default.clock.quantum」の設定値を修正してみました。pipewire.conf の修正後は restart を忘れずに。
default.clock.rate = 44100 default.clock.quantum = 4096 systemctl --user restart pipewire systemctl --user restart pipewire-pulse
この状態で再度 Spotify で音楽を再生してみると変化がありました。なんかさっきより音が良くなったというか大きくなった気がします。
ここでふと思い直しました。「設定で変化するのであれば PulseAudio のままでそっちのチューニングをしても同じ効果が得られるのでは?」
というのも PipeWire だとアプレットからの音声でちょっとノイズが入ったりと動作面で不安定だったり、PPA を使うのもあまり気が乗らないからです。
ということで、まずは Timeshift で Linux Mint を直前のバックアップ時点へ復元です。おや?バックアップから復元したのに、Linux Mint のサウンドアプレットが表示されなくなりましたね。PulseAudio がうまく起動していませんね、きっと。
systemctl --user unmask pulseaudio systemctl --user --now enable pulseaudio.service pulseaudio.socket systemctl restart pulseaudio
PipeWire のインストール時に「systemctl –user mask 〜」を実行しましたが、これはホームディレクトリ内の「.config/systemd/user」を変更するようで、Timeshift では復元されない場所でした。unmask コマンドで明示的に解除する必要があったようです。
さて、PulseAudio のチューニングは daemon.conf を修正することになります。こちらもホームディレクトリにコピーしてから編集です。
cp /etc/pulse/daemon.conf ~/.config/pulse
PulseAudio の daemon.conf は以下のパラメーターを調整してみました。ファイルを編集後は restart にて反映させます。
default-sample-format = s32le default-sample-rate = 48000 default-fragments = 2 default-fragment-size-msec = 125 systemctl --user restart pulseaudio
restart 後、以下のコマンドで PulseAudio にパラメーターが反映されたことを確認できます。
pulseaudio --dump-conf
default-fragments の調整は以下を参考にしました。
https://forums.linuxmint.com/viewtopic.php?t=44862
default-sample の調整は以下を参考にしました。
https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Audiophile/
少しずつパラメーターを調整しているとあまり違いがわからないので、面倒ですがデフォルト値と変更後を行ったり来たりしながら調整した方が効果がわかりやすいかと思います。(終わりが見えない調整ですね)
(追記)
–dump-conf は PulseAudio を restart せずにファイルを更新した段階で内容を読み取ってくれるようです。記述間違いについても具体的に指示してくれるので、ファイルを更新したらまずは –dump-conf でエラーがないか点検したほうが良さそうです。
$ pulseaudio --dump-conf E: [pulseaudio] daemon-conf.c: [/home/xxxxxx/.config/pulse//daemon.conf:82] 無効なサンプルレート '441000'