[2020-11-09 / 2021-08-22]

PulseAudioで特定のアプリケーションからの音声出力だけを分離する

以下のコマンドで仮想出力デバイスDummyOutput0と、そのループバックLoopback from Monitor of DummyOutput0が追加される。

pacmd load-module module-null-sink sink_name=DummyOutput0 sink_properties=device.description=DummyOutput0
pacmd load-module module-loopback source=DummyOutput0.monitor source_dont_move=true

pavucontrolまたはPulseAudio Volume ControlPlaybackから 目的のアプリケーションの出力先をDummyOutput0にする。 また、Loopback from Monitor of DummyOutput0の出力先を 希望のスピーカーにすることで音声出力を分離しつつ同時に視聴できる。

source_dont_move=trueは、デフォルトの入力デバイス変更時にLoopbackの入力デバイスも変更されてしまうのを防ぐオプション。 pavucontrolからも変更できなくなる。

仮想出力デバイスとループバックを削除するには、以下のコマンドを実行する。

pacmd unload-module module-loopback
pacmd unload-module module-null-sink

ログイン時に自動作成する

/etc/pulse/default.pa

# Custom
load-module module-null-sink sink_name=DummyOutputApp sink_properties=device.description="DummyOutputApp"
load-module module-loopback source=DummyOutputApp.monitor source_dont_move=true
load-module module-null-sink sink_name=DummyOutputVoiceChat sink_properties=device.description="DummyOutputVoiceChat"
load-module module-loopback source=DummyOutputVoiceChat.monitor source_dont_move=true
load-module module-null-sink sink_name=DummyOutputGeneral0 sink_properties=device.description="DummyOutputGeneral0"
load-module module-loopback source=DummyOutputGeneral0.monitor source_dont_move=true
load-module module-null-sink sink_name=DummyOutputGeneral1 sink_properties=device.description="DummyOutputGeneral1"
load-module module-loopback source=DummyOutputGeneral1.monitor source_dont_move=true

PulseAudioの再起動

pulseaudio --kill
pulseaudio --start

デバイス接続時の入出力デバイス自動切り替えを無効化する

新しい出力デバイスが検出されたとき、デフォルト出力デバイスが切り替わるのを防ぐ。

/etc/pulse/default.pa

load-module module-switch-on-port-availableload-module module-switch-on-connectをコメントアウトする。

### Should be after module-*-restore but before module-*-detect
#load-module module-switch-on-port-available
### Use hot-plugged devices like Bluetooth or USB automatically (LP: #1702794)
#.ifexists module-switch-on-connect.so
#load-module module-switch-on-connect
#.endif

PulseAudioの再起動

pulseaudio --kill
pulseaudio --start

電源メニューから音声デバイスを切り替えられるようにするGnome Shell Extension

PulseAudioを再起動するとデバイス一覧に古い項目が残り、選択するとGnome Desktopがフリーズするバグがある。 PulseAudio再起動後はAlt+F2でrコマンドを実行することで拡張機能がリロードされ、この問題を回避できる。