PulseAudioは通常ユーザーサービスとして動作する(デスクトップ用途を想定するため)ので、ヘッドレスな環境で音声を取得したいような用途では不都合が出たりする。このあたりにsystem serviceとして動かす手順が載っており、これに従えば想定した通りに動作したので日本語メモとしてここに残す。
前提条件
aptなどでpulseaudio関連がインストールされていること。
PulseAudioのsystem service化
Starting system-wide on bootを参考にsystemd化する。
- ユーザー追加・グループ追加
PulseAudioを使いたいユーザーをpulse-accessグループへ追加
sudo usermod -aG pulse-access root
- ユーザーサービス無効化
sudo systemctl --global disable pulseaudio.service pulseaudio.socket
sudo systemctl --global mask pulseaudio.socket
- /etc/pulse/client.confの修正
autospawn = no
を設定する - /etc/systemd/system/pulseaudio.serviceを作成
[Unit]
Description=Sound Service
[Service]
# Note that notify will only work if --daemonize=no
Type=notify
ExecStart=/usr/bin/pulseaudio --daemonize=no --exit-idle-time=-1 --disallow-exit=true --system --disallow-module-loading
Restart=always
[Install]
WantedBy=default.target
- systemd有効化
sudo systemctl enable pulseaudio
pulseaudio起動後、pactl info
としてPulseAudio利用可能になっていることを確認できたらOK。