「PulseAudio」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→キーボードのボリュームコントロール: 飜訳) |
細 (関連項目へPipeWireの追加) |
||
13行目: | 13行目: | ||
{{Related|PulseAudio/サンプル}} |
{{Related|PulseAudio/サンプル}} |
||
{{Related|PulseAudio/トラブルシューティング}} |
{{Related|PulseAudio/トラブルシューティング}} |
||
+ | {{Related|PipeWire}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
[[Wikipedia:ja:PulseAudio|PulseAudio]] は、[[ALSA]] や [[OSS]] を用いてアプリケーションとハードウェアデバイスの間でミドルウェアとして動作することを目的とした汎用サウンドサーバーです。また、[[Avahi]] を有効にするとことで、ローカルデバイス間で簡単にネットワークストリーミングを行うことができます。主な目的はオーディオの設定を簡単にすることですが、そのモジュール設計により、より高度なユーザが自分のニーズに合わせてデーモンを設定することができます。 |
[[Wikipedia:ja:PulseAudio|PulseAudio]] は、[[ALSA]] や [[OSS]] を用いてアプリケーションとハードウェアデバイスの間でミドルウェアとして動作することを目的とした汎用サウンドサーバーです。また、[[Avahi]] を有効にするとことで、ローカルデバイス間で簡単にネットワークストリーミングを行うことができます。主な目的はオーディオの設定を簡単にすることですが、そのモジュール設計により、より高度なユーザが自分のニーズに合わせてデーモンを設定することができます。 |
2022年11月6日 (日) 16:28時点における最新版
PulseAudio は、ALSA や OSS を用いてアプリケーションとハードウェアデバイスの間でミドルウェアとして動作することを目的とした汎用サウンドサーバーです。また、Avahi を有効にするとことで、ローカルデバイス間で簡単にネットワークストリーミングを行うことができます。主な目的はオーディオの設定を簡単にすることですが、そのモジュール設計により、より高度なユーザが自分のニーズに合わせてデーモンを設定することができます。
インストール
pulseaudio パッケージをインストールしてください。
PulseAudio のモジュールの中にはメインのパッケージと 分割 されているものがあり、必要に応じてインストールする必要があります:
- pulseaudio-alsa PulseAudio で ALSA を管理、こちらも参照 #ALSA
- pulseaudio-bluetooth: Bluetooth (Bluez) のサポート
- pulseaudio-equalizer: イコライザー sink (qpaeq)
- pulseaudio-jack: JACK sink, source, jackdbus 検知
- pulseaudio-lirc: 赤外線 (LIRC) ボリュームコントロール
- pulseaudio-zeroconf: Zeroconf (Avahi/DNS-SD) のサポート
フロントエンド
PulseAudio デーモンを制御するための様々なフロントエンドが存在します:
- GTK の GUI: paprefs と pavucontrol
- キーボードキーによるボリュームコントロール: pulseaudio-ctlAUR
- コンソール (CLI) ミキサー: ponymix と pamixer
- コンソール (curses) ミキサー: pulsemixer-gitAUR
- ウェブボリュームコントロール: PaWebControl
- システムトレイアイコン: pasystray-gitAUR
- KF5 plasma アプレット: kmix and plasma-pa
- Bluetooth ヘッドセットや他の Bluetooth 音声デバイスを PulseAudio で使いたい場合は Bluetooth ヘッドセットの記事を読んでください。
設定
設定ファイル
デフォルトでは、PulseAudio は全てのサウンドカードを自動的に検出して管理するように設定されています。検出された ALSA デバイスを全て制御して音声ストリームを結集させることで、PulseAudio デーモンが設定の中心点になります。デーモンは基本的に特に設定をしなくても動作するので、必要な設定はほとんどありません。
PulseAudio はまずホームディレクトリの設定ファイル ~/.config/pulse
を確認して、次にシステム全体の設定ファイル /etc/pulse
を確認します。
PulseAudio はサーバーデーモンとして動作するので、クライアント・サーバーアーキテクチャを使ってシステム全体あるいはユーザー個別に起動することができます。デーモン自体はモジュールがないと何もしません。API を提供して動的にロードされたモジュールをホストするだけです。音声のルーティングなどの処理は全て様々なモジュールが担当します。利用可能なモジュールのリストは Pulseaudio Loadable Modules で確認できます。モジュールを有効化するには load-module <module-name-from-list>
という行を ~/.config/pulse/default.pa
に追加します。
daemon.conf
モジュールが使用するデフォルトのサンプルレート、リサンプリング方式、リアルタイムスケジューリング、サーバープロセスに関する設定など、基本的な設定を定義します。実行している間は変更できません。PulseAudio デーモンの再起動が必要です。ほとんどの場合、デフォルト設定で問題ありません。
オプション | 説明 |
---|---|
system-instance | system-wide インスタンスとしてデーモンを実行。セキュリティの問題が生まれるため非推奨です。ローカルユーザーが存在しない (ヘッドレス) システムで有用です。デフォルトは no 。
|
resample-method | モジュール間で音声のサンプルレートが一致しない場合に使用するリサンプラー (例: 48kHz しか対応していないハードウェアで 96kHz の音声を再生する場合など)。利用可能なリサンプラーは $ pulseaudio --dump-resample-methods で確認できます。CPU の使用量と音質のトレードオフを考えて最適なものを選択してください。
|
flat-volumes | flat-volumes は一番音が大きいアプリケーションのボリュームにあわせてデバイスのボリュームを調整します。例えば、VoIP の呼び出し音声を上げるとハードウェアのボリュームが上がりますが、音声プレイヤーのボリュームは元のままになるように調整され、手動で音声プレイヤーのボリュームを下げなくてもいいようにします。開発元ではデフォルトで yes になっていますが、Arch においては no がデフォルトです。
|
default-fragments | 音声サンプルは default-fragment-size-msec によって複数の断片に分割されます。バッファを大きくすればするほど、システムが過負担のときに音声がスキップされる可能性が減ります。ただし、副作用として全体的な遅延は大きくなります。問題が発生する場合はこの値を大きくしてみてください。
|
default.pa
このファイルはスタートアップスクリプトであり、モジュールを設定するのに使われています。デーモンが初期化を完了した後に読み込まれて解析されます。$ pactl
や $ pacmd
を使うことでコマンドは追加で送信できます。また、$ pulseaudio -nC
を使ってターミナルで PulseAudio を起動することで使用するスタートアップファイルを指定することもできます。その場合、デーモンは CLI モジュールをロードしてコマンドラインから直接設定を受け取って、同じターミナルに情報やエラーメッセージを出力します。デーモンをデバッグするときや、ディスクで永続的に設定する前にモジュールをテストしたい場合などに有用です。マニュアルページに詳しい説明が載っています。構文については man pulse-cli-syntax
を読んでください。
client.conf
全ての PulseAudio クライアントアプリケーションが読み込む設定ファイルです。個別のクライアントについて実行時のオプションを設定したいときに使います。デフォルトの sink や source を静的に設定できるだけでなく、サーバーが動作していないときに自動的に起動するクライアントを許可 (あるいは不許可) できます。
設定コマンド
実行している間にサーバーを設定するメインコマンドは $ pacmd
です。オプションのリストを表示するには $ pacmd --help
を実行してください。$ pacmd
とだけ実行することでシェルインタラクティブモードに入ることができ Ctrl+d
で終了します。変更した設定はすべて即座に適用されます。
新しい設定をテストして満足したら、default.pa
を編集することで変更を永続化できます。基本的な設定は PulseAudio/サンプル を見てください。
選択されたハードウェアの "Profile" にあわせて PulseAudio で利用・選択することができる "source" (プロセス, キャプチャデバイス) と "sink" (サウンドカード, サーバー, 他のプロセス) を理解するのが重要です。"Profile" は aplay -L
コマンドで確認できる ALSA の "pcm" であり、pacmd list-cards
コマンドでもっと具体的に確認できます。"index:" 行や "profiles:" から始まるリスト、出力の "active profile: <...>" という行などです。
"active profile" は pacmd set-card-profile INDEX PROFILE
コマンドで設定できます。INDEX と PROFILE の間にカンマは必要ありません。INDEX は pacmd list-cards
コマンドで表示される "index:" 行の番号に、PROFILE の名前は "profile:" の下の行の最初から、コロンと空白までの文字列に置き換えてください。例: pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
。
pavucontrol
などのグラフィカルツールを使えばもっと簡単に "Profile" を選択できます ("Configuration" タブ)。KDE システム設定なら "Multimedia/Audio and Video Settings" の "Audio Hardware Setup" タブから設定できます。(aplay -l
や pacmd list-cards
コマンドで確認できるデバイスと同じ) 音声の "Card" には、それぞれ "Profile" が選択されます。"Profile" を選択したら、pacmd list-sources
と pacmd list-sinks
コマンドで利用可能な "source" と "sink" が確認できます。利用可能な source と sink の "index" はカードのプロファイルが変更されるたびに変わるので注意してください。
アプリケーションによっては選択した "Profile" が問題になることがあります。特に Adobe Flash プレイヤーの /usr/lib/mozilla/plugins/libflashplayer.so
と /usr/lib/PepperFlash/libpepflashplayer.so
はそうです。しばしば、Flash プレイヤーは Stereo プロファイルのどちらか片方を選択しないと機能せず、音声がない動画が再生されたり、あるいはクラッシュしたりします。あるプロファイルで駄目なら、別のプロファイルを選択してみてください。
もちろん、PulseAudio でサラウンド音声を設定する場合、適切な Surround プロファイルを選択する必要があります。
実行
バージョン 7.0 から、Arch においては PulseAudio はソケットアクティベーションを使います。デフォルト では、systemd/ユーザーインスタンスで pulseaudio.socket
が有効になります。
詳しくは PulseAudio: Running を参照してください。
手動で起動
X を起動した時に pulseaudio が自動で立ち上がらない場合は、次のコマンドで実行できます:
$ pulseaudio --start
次のコマンドで PulseAudio を停止できます:
$ pulseaudio --kill
イコライザー
pulseaudio の比較的新しいバージョンでは、統合された10帯域のイコライザーシステムが搭載されています。このイコライザーを有効にするためには、以下の作業が必要です。
pulseaudio-equalizer をインストールしてください。
equalizer sink と dbus-protocol モジュールをロードする
$ pactl load-module module-equalizer-sink $ pactl load-module module-dbus-protocol
GUI フロントエンド
次を実行:
$ qpaeq
起動時に イコライザーと dbus モジュールをロードする
お好みのエディタで /etc/pulse/default.pa
を開き、以下の行を追記します。
### Load the integrated pulseaudio equalizer and dbus module load-module module-equalizer-sink load-module module-dbus-protocol
バックエンドの設定
ALSA
- 推奨パッケージ: pulseaudio-alsa
- 追加選択パッケージ: lib32-libpulse および lib32-alsa-plugins
PulseAudio をサポートせず ALSA をサポートするアプリケーションのためには、ALSA のための PulseAudio プラグインをインストールすることが推奨されます。このパッケージは、ALSA に PulseAudio を利用させるために必要なファイル /etc/asound.conf
も含んでいます。
アプリケーションに ALSA の OSS エミュレーションをやめさせ PulseAudio を迂回させない(そうして、他のアプリケーションの音声出力を防ぐ)ためには、起動時に snd_pcm_oss
モジュールがロードされないようにします。このモジュールが現在ロードされていたら (lsmod | grep oss
で確認可能)、以下を実行してモジュールを無効にしましょう:
# rmmod snd_pcm_oss
ALSA/dmix でハードウェアデバイスを占有しない
ALSA を直接アプリケーションで使って他のアプリケーションも使えるようにしたいと思っているならば、同時に PulseAudio も必要になります。以下の手順で PulseAudio が ALSA のハードウェアデバイスの代わりに dmix を使うようにできます。
- pulseaudio-alsa パッケージを削除してください、ALSA アプリケーションと PulseAudio の互換レイヤーが含まれています。削除した後、ALSA アプリは Pulse につかまることなく ALSA を直接使うようになります。
/etc/pulse/default.pa
を編集してください。
- バックエンドドライバーをロードする行を探してアンコメントしてください。以下のように device パラメータを追加してください。それから autodetect モジュールをロードする行をコメントアウトしてください。
load-module module-alsa-sink device=dmix load-module module-alsa-source device=dsnoop # load-module module-udev-detect # load-module module-detect
- 任意: kdemultimedia-kmix[リンク切れ: パッケージが存在しません] を使っていてPulseAudio ボリュームのかわりに ALSA ボリュームを操作したい場合:
$ echo export KMIX_PULSEAUDIO_DISABLE=1 > ~/.kde4/env/kmix_disable_pulse.sh $ chmod +x ~/.kde4/env/kmix_disable_pulse.sh
- コンピュータを再起動して、alsa と pulseaudio のアプリケーションを同時に実行して見て下さい。同時に音声を鳴らすことができるはずです。
- PulseAudio ボリュームの操作が必要なときは pavucontrol を使って下さい。
OSS
OSS にしか対応していないプログラムを PulseAudio に出力させる方法は複数存在します:
ossp
ossp パッケージをインストールして osspd.service
を起動してください。
padsp ラッパー
OSS を使うプログラムは (PulseAudio に含まれている) padsp を使って起動することで PulseAudio で動作するようにできます:
$ padsp OSSprogram
例:
$ padsp aumix $ padsp sox foo.wav -t ossdsp /dev/dsp
以下のようなカスタムラッパースクリプトも使えます:
/usr/local/bin/OSSProgram
#!/bin/sh exec padsp /usr/bin/OSSprogram "$@"
PATH で /usr/bin
よりも先に /usr/local/bin
が来るようにしてください。
GStreamer
GStreamer で PulseAudio を使うには、gst-plugins-good か gstreamer0.10-good-pluginsAUR をインストールする必要があります。
OpenAL
OpenAL Soft はデフォルトで PulseAudio を使いますが、明示的に設定することもできます:
/etc/openal/alsoft.conf
drivers=pulse,alsa
libao
libao の設定ファイルを編集してください:
# /etc/libao.conf
default_driver=pulse
alsa ドライバーの dev=default
オプションを削除するか特定の Pulse の sink の名前・番号を指定してください。
ESD
PulseAudio は enlightened sound daemon (ESD) を完全に置き換えます。PulseAudio が動作している時、ESD クライアントは PulseAudio に何もしなくても出力できるはずです。
デスクトップ環境
X11
PulseAudio が動作しているかどうか確認してください:
$ ps aux | grep pulse
facade 1794 0.0 0.0 360464 6532 ? S<l 15:33 0:00 /usr/bin/pulseaudio --start facade 1827 0.0 0.0 68888 2608 ? S 15:33 0:00 /usr/lib/pulse/gconf-helper
PulseAudio が動いておらず X を使っている場合は、以下で PulseAudio と必要な X11 のプラグインを手動で起動できます:
$ start-pulseaudio-x11
Gnome, KDE, Xfce を使ってないために ~/.xinitrc
が /etc/X11/xinit/xinitrc.d
のスクリプトを (サンプルファイル /etc/skel/.xinitrc
のように) 読み込まないときは、次のコマンドでブート時に PulseAudio を起動できます:
~/.xinitrc
/usr/bin/start-pulseaudio-x11
GNOME
GNOME 3 から、GNOME は PulseAudio と完全に統合したため特に設定は必要ありません。
KDE 3
PulseAudio は aRts との完全な互換性はありません。KDE 3 のユーザーは PulseAudio を使えません。ただし最近のバージョンの PulseAudio では障害が取り除けるかもしれません:
参照: http://www.pulseaudio.org/wiki/PerfectSetup KDE 3 はデフォルトで artsd サウンドサーバを使っています。しかしながら、artsd は Esound バックエンドを使うように設定することが可能です。kcmartsrc
(グローバルな設定は /etc/kde
または /usr/share/config
、ユーザー別の設定は .kde/share/config
にあります) を以下のように編集してください:
[Arts] Arguments=\s-F 10 -S 4096 -a esd -n -s 1 -m artsmessage -c drkonqi -l 3 -f NetworkTransparent=true SuspendTime=1
KDE Plasma ワークスペースと Qt4
PulseAudio は KDE/Qt4 アプリケーションによって使われます。詳しくは PulseAudio wiki の KDE のページ を見て下さい。
PulseAudio サポートはデフォルトの KDE サウンドミキサーである KMix にマージされています。
phonon-gstreamer バックエンドを Phonon に使っている場合、gstreamer0.10-good-pluginsAUR をインストールして GStreamer も PulseAudio を使うように設定してください。
load-module module-device-manager
を /etc/pulse/default.pa
に追加するのが有用です。
さらに、KMix や pavucontrol の KDE 代替として AUR から kdeplasma-applets-veromixAUR[リンク切れ: アーカイブ: aur-mirror] が利用できます。
Xfce
Xfce で動いているアプリケーションは PulseAudio を使うことができます。PulseAudio の設定を管理するには pavucontrol を使います。
アプリケーション
Audacious
Audacious は PulseAudio にもとから対応しています。利用するためには、Audacious で 設定→オーディオ→出力プラグイン で「PulseAudio 出力」に設定しましょう。
Java/OpenJDK 6
Pulseaudio と Java のサウンドに書かれているように padsp を使って java のラッパーを作成してください。
Music Player Daemon (MPD)
PulseAudio を使うように MPD を 設定 してください。Music Player Daemon/ヒントとテクニック#PulseAudio を参照。
MPlayer
MPlayer はネイティブで PulseAudio 出力をサポートしており "-ao pulse
" オプションを使います。PulseAudio への出力をデフォルトに設定することも可能で、ユーザー別の設定には ~/.mplayer/config
で、システム全体では /etc/mplayer/mplayer.conf
で設定します:
/etc/mplayer/mplayer.conf
ao=pulse
Skype (x86_64)
lib32-libpulse をインストールしてください。そうしないと通話をしようとした時に次のエラーが発生します: "Problem with Audio Playback"。
guvcview
PulseAudio で guvcview を使用するとウェブカメラからの入力で音声入力が中止され音声が記録されないことがあります。次を実行して確認できます:
$ pactl list sources
音声ソースが "suspended" になっている場合 /etc/pulse/default.pa
の以下の行を:
load-module module-suspend-on-idle
次のように修正してください:
#load-module module-suspend-on-idle
PulseAudio を再起動すれば音声ソースが中止される代わりにアイドル状態になるようになります。これで guvcview でデバイスから音声を正しく記録できるようになるはずです。
ヒントとテクニック
キーボードのボリュームコントロール
以下のコマンドをボリュームキーにマッピングしてください: XF86AudioRaiseVolume
, XF86AudioLowerVolume
, XF86AudioMute
。
まず制御したい音声出力に対応する sink を確認します。sink を確認するには:
pactl list sinks short
ボリュームを上げるには:
sh -c "pactl set-sink-mute 0 false ; pactl set-sink-volume 0 +5%"
ボリュームを下げるには:
sh -c "pactl set-sink-mute 0 false ; pactl -- set-sink-volume 0 -5%"
ボリュームをミュート(解除)するには:
pactl set-sink-mute 0 toggle
マイクをミュート(解除)するには:
pactl set-source-mute 1 toggle
X11 ベルイベント
pulseaudio で X11 のベルイベントを処理するには、X11 セッションが起動した後に以下のコマンドを実行:
pactl upload-sample /usr/share/sounds/freedesktop/stereo/bell.oga x11-bell pactl load-module module-x11-bell sample=x11-bell display=$DISPLAY
X11 ベルのボリュームを調整するには、以下のコマンドを実行:
xset b 100
100 はパーセンテージです。上記のコマンドを使うには xorg-xset パッケージが必要です。X11 セッションが起動したときに自動的にコマンドを実行する方法は自動起動を参照。
Switch on connect
新しく接続されたデバイスに音声出力を切り替えるモジュールです。例えば、USB ヘッドセットを接続した場合、出力がそれに切り替わります。切断したときは、出力は元のデバイスに戻ります。大量にバグが存在していましたが PulseAudio 8.0 になって注目を集め、今では問題なく動くようになっています。
モジュールをテストしていみたい場合、次を実行することでロードできます:
# pactl load-module module-switch-on-connect
変更を永続化させたい場合、ローカルの pulseaudio 設定あるいは /etc/pulse/default.pa
(システム設定) に以下の行を追加してください:
load-module module-switch-on-connect
KDE/Plasma5 では更に module-device-manager を無効化してください。Plasma5 は起動するとすぐに (start-pulseaudio-x11 によって) pulseaudio でデバイスを管理するために module-device-manager モジュールをロードします。しかしながら、このモジュールは module-switch-on-connect と競合します。/bin/start-pulseaudio-x11
を編集して KDE の行をコメントアウトすることでモジュールを無効化できます。pulseaudio セッションを新しくするために一度ログアウトしてからログインしなおしてください。
トラブルシューティング
PulseAudio/トラブルシューティングを見て下さい。
参照
- http://www.alsa-project.org/main/index.php/Asoundrc - Alsa wiki on .asoundrc
- http://www.pulseaudio.org/ - PulseAudio 公式サイト
- http://www.pulseaudio.org/wiki/FAQ - PulseAudio FAQ