「PulseAudio/トラブルシューティング」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎Glitches, skips or crackling: セクション名を翻訳)
 
(3人の利用者による、間の16版が非表示)
5行目: 5行目:
 
[[ru:PulseAudio/Troubleshooting]]
 
[[ru:PulseAudio/Troubleshooting]]
 
メインの記事は [[PulseAudio]] を見て下さい。
 
メインの記事は [[PulseAudio]] を見て下さい。
  +
  +
== Pulseaudio からデバッグ出力を取得する ==
  +
  +
{{ic|pulseaudio.socket}} および {{ic|pulseaudio.service}} [[ユーザーユニット]] を [[停止]] し、デバッグ中に端末で手動で開始すると便利です。
  +
  +
$ pulseaudio -v
  +
  +
冗長性を高めるには、{{ic|v}} を追加します。
   
 
== ボリューム ==
 
== ボリューム ==
20行目: 28行目:
   
 
{{Note|alsamixer は、どの再生デバイスがデフォルトになっているかを教えてくれません。インストール後に音が鳴らない理由としては、pulseaudio が異なる再生デバイスをデフォルトとして検出してしまったことが考えられます。{{Pkg|pavucontrol}} をインストールして、''.wav'' ファイルを再生しながら、どこかに出力されていないか pavucontrol パネルで確認しましょう。}}
 
{{Note|alsamixer は、どの再生デバイスがデフォルトになっているかを教えてくれません。インストール後に音が鳴らない理由としては、pulseaudio が異なる再生デバイスをデフォルトとして検出してしまったことが考えられます。{{Pkg|pavucontrol}} をインストールして、''.wav'' ファイルを再生しながら、どこかに出力されていないか pavucontrol パネルで確認しましょう。}}
  +
  +
=== マスターを切り替えた後、出力がミュートされたままになる ===
  +
  +
複数の出力('ヘッドフォン' と 'スピーカー' など)を備えたセットアップでは、plain amixer を使用してマスターを切り替えると、PulseAudio がトリガーされてアクティブな出力もミュートされますが、マスターが再びミュート解除されてもミュートが解除されるとは限りません。[https://lists.freedesktop.org/archives/pulseaudio-discuss/2015-December/025062.html] これを解決するには、amixer のデバイスフラグを 'pulse' に設定する必要があります。
  +
  +
$ amixer -D pulse sset Master toggle
  +
  +
これにより、amixer は、直接切り替えるのではなく、PulseAudio に切り替えを行うように要求します。
  +
このため、PulseAudio はマスターと該当する出力のミュートを正しく解除します。
   
 
=== アプリケーションがミュートになる ===
 
=== アプリケーションがミュートになる ===
133行目: 150行目:
 
ヘッドフォンを切断したり接続したときに alsamixer で間違ったチャンネルが 0% に設定されてミュートになる場合、{{ic|/etc/pulse/default.pa}} を開いて次の行をコメントアウトすることで修正できます:
 
ヘッドフォンを切断したり接続したときに alsamixer で間違ったチャンネルが 0% に設定されてミュートになる場合、{{ic|/etc/pulse/default.pa}} を開いて次の行をコメントアウトすることで修正できます:
 
load-module module-switch-on-port-available
 
load-module module-switch-on-port-available
  +
  +
=== 音量が数秒ごとに 50% にリセットされる ===
  +
  +
{{Pkg|alsa-tools}} をインストールし、以下を使用します:
  +
  +
$ hdajackretask
  +
  +
使用しているポート以外は "Not Connected" に設定してください。マザーボード上の他の未使用のオーディオポートが使用済みのオーディオポートと干渉している可能性があります。
  +
次に、必要に応じて、ブートオーバーライドを使用して、再起動の間にこの変更を保存します。バグの原因は前面の緑色のヘッドフォンである可能性があります。必要な場合は、前面のマイクをヘッドフォンに、前面の緑色のヘッドフォンを "Not Connected" にオーバーライドして、前面のマイクポートをヘッドフォンポートとして使用します。
  +
  +
この問題に関する詳細情報: [https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1585084]
  +
  +
=== アナログヘッドフォン/スピーカーの音量が小さい ===
  +
  +
{{ic|1=ignore_dB=1}} オプションを {{ic|/etc/pulse/default.pa}} の {{ic|load-module module-udev-detect}} 行に以前に追加した場合、削除してみてください。
  +
  +
=== メディアキーを使用して音量を変更するときの遅延 ===
  +
  +
{{ic|/etc/pulse/daemon.conf}} を編集し、{{ic|1=enable-deferred-volume = no}} を設定します。これにより、ボリュームを変更するときに音割れが発生する可能性があります。その場合は、そのオプションを有効のままにして、{{ic|deferred-volume-safety-margin-usec}} と {{ic|deferred-volume-extra-delay-usec}} オプションを使用してください。
   
 
== マイク ==
 
== マイク ==
236行目: 272行目:
   
 
上手くいっていれば、マイクの録音にノイズが混ざらなくなっているはずです。
 
上手くいっていれば、マイクの録音にノイズが混ざらなくなっているはずです。
  +
  +
==== 考えられる別の原因 ====
  +
  +
もう1つの考えられる原因は、マイクに2つのチャンネルがあるが、有効なサウンド信号を提供できるのは1つのチャンネルだけであることです。一部の情報は [https://github.com/MaartenBaert/ssr/issues/323#issuecomment-268230548 ここ] で見つけることができます。解決策は、ステレオ入力をモノラル入力に再マップすることです:
  +
  +
1. 次のコマンドからソース名を見つけます。例えば {{ic|alsa_input.pci-0000_00_1f.3.analog-stereo}} など
  +
  +
pacmd list-sources | grep 'name:.*input'
  +
  +
2. {{ic|/etc/pulse/default.pa}} を編集し、次の行を追加します。INPUT_NAME は、上記の手順で取得した入力ソースの名前です:
  +
  +
load-module module-remap-source source_name=record_mono master=INPUT_NAME master_channel_map=front-left channel_map=mono
  +
set-default-source record_mono
  +
  +
3. PulseAudio を再起動します:
  +
  +
$ pulseaudio -k
  +
$ pulseaudio --start
  +
  +
これで、{{ic|arecord}} が機能するはずです。{{ic|pavucontrol}} の {{ic|Recording}} タブで、{{ic|RecordStream from}} 設定を特定のアプリケーションの {{ic|Remapped Built-in Audio Analog Stereo}} に変更する必要がある場合があります。}}
  +
  +
==== USB マイクを使用する場合 ====
  +
  +
別のポート (例: 前面ではなく背面のポート) に接続してみてください。
   
 
=== enable-remixing = no を設定すると Steam や Skype でマイクが使えない ===
 
=== enable-remixing = no を設定すると Steam や Skype でマイクが使えない ===
  +
 
{{ic|/etc/pulse/daemon.conf}} に {{ic|1=enable-remixing = no}} を設定すると Skype や Steam など特定のアプリケーションでマイクロフォンが停止することがあります。これはアプリケーションがマイクロフォンをモノ音声のみとしてキャプチャしていて、リミキシングが無効になっているのが原因です。Pulseaudio はステレオのマイクロフォンをモノにリミックスしません。
 
{{ic|/etc/pulse/daemon.conf}} に {{ic|1=enable-remixing = no}} を設定すると Skype や Steam など特定のアプリケーションでマイクロフォンが停止することがあります。これはアプリケーションがマイクロフォンをモノ音声のみとしてキャプチャしていて、リミキシングが無効になっているのが原因です。Pulseaudio はステレオのマイクロフォンをモノにリミックスしません。
   
284行目: 345行目:
 
# pulseaudio -k
 
# pulseaudio -k
   
  +
=== Realtek ALC892 でマイクがパチパチ音を立てる ===
== 音質 ==
 
   
  +
マイクを使用して録音中に ALC892 チップからパチパチ音が発生することがあります。Pulseaudio 設定の変更によっては、次のことが役立つ場合があります:
=== エコー除去・ノイズキャンセルを有効にする ===
 
   
  +
{{hc|/etc/pulse/daemon.conf|output=
デフォルトでは Arch は Pulseaudio のエコー除去モジュールをロードしません。そのため {{ic|/etc/pulse/default.pa}} にモジュールを追加する必要があります。まず {{ic|pacmd}} で {{ic|list-modules}} を入力することでモジュールが存在するか確認できます。{{ic|name: <module-echo-cancel>}} という行が表示されない場合、以下を追加してください:
 
  +
resample-method = src-sinc-best-quality
  +
default-sample-format = s16le
  +
default-sample-rate = 48000
  +
}}
   
  +
{{ic|use_ucm}} オプションを追加します
{{hc|/etc/pulse/default.pa|
 
  +
### Enable Echo/Noise-Cancelation
 
  +
{{hc|/etc/pulse/default.pa|output=
load-module module-echo-cancel
 
  +
load-module module-udev-detect use_ucm=0 tsched=0
 
}}
 
}}
   
そして Pulseaudio を再起動してください:
+
次に、pulseaudioを再起動します。
   
  +
=== Azalia チップセットでマイクがパチパチ音を立てる ===
pulseaudio -k
 
pulseaudio --start
 
   
  +
一部の Azalia ベースのチップでは、PulseAudio でマイクを使用して録音すると、ポップ/パチパチというノイズや歪みが発生します。これは、{{ic|position_fix}} を適切な値に設定して {{ic|snd-hda-intel}} モジュールをロードすることで修正できます。これにより、モジュールにさまざまな DMA ポインタ修正を使用するように指示されます。試行錯誤して、どの値が適切かを判断してください。([https://web.archive.org/web/20200422150559/https://wiki.sabayon.org/index.php?title=HOWTO:_Resolve_Problems_with_HDA-Intel_Sound_Cards ソース])
{{ic|pavucontrol}} を起動してモジュールが有効になっているか確かめます。{{ic|Recoding}} の下の入力デバイスが {{ic|Echo-Cancel Source Stream from"}} となっているはずです。
 
   
  +
新しい {{ic|modprobe.d}} 設定を作成します。
=== 音ズレ、音飛び、音割れ ===
 
   
  +
{{hc|/etc/modprobe.d/azalia-microphone.conf|output=
PulseAudio サウンドサーバの新しい実装では旧来の割り込みを使用する方法に変わってタイマーベースのオーディオスケジューリングを使っています。
 
  +
options snd-hda-intel position_fix=1
  +
}}
   
  +
{{ic|position_fix}} の有効な値は次のとおりです:
タイマーベースのスケジューリングはいくつかの ALSA ドライバーで問題を発生する可能性があります。他方では、タイマーベースのスケジューリングがないと不調になるドライバーもあります。あなたのシステムで何が動作しているのか確認してください。
 
  +
* {{ic|0}} = Auto
  +
* {{ic|1}} = None
  +
* {{ic|2}} = POSBUF
  +
* {{ic|3}} = FIFO size
   
  +
次にモジュールをリロードします。
タイマーベースのスケジューリングを無効にするには {{ic|/etc/pulse/default.pa}} に {{ic|1=tsched=0}} を追加してください:
 
  +
{{hc|/etc/pulse/default.pa|<nowiki>
 
  +
=== エコーテスト ===
  +
  +
マイクの設定がわからない場合は、[https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#index57h3 ループバックモジュール] ([https://answers.launchpad.net/ubuntu/+source/pulseaudio/+question/83742 ソース]) を有効にすることで、マイクからの入力をリアルタイムで聞くことができます:
  +
  +
$ pactl load-module module-loopback
  +
  +
モジュールは、{{Pkg|pavucontrol}} プログラムの '''Recording''' タブに表示され、ソースとボリュームを設定できます。遅延は低くなければなりませんが、マイクで自分が話しているのが聞こえるので、音質を感じるには十分です。変更を永続的にするには、次の pulseaudio 設定を追加します:
  +
  +
{{hc|/etc/pulse/default.pa|output=
  +
load-module module-loopback
  +
}}
  +
  +
フィードバックに注意してください! マイクがスピーカーからの出力を拾う場合に備えて、すべての音量を下げる準備をしてください。当然のことながら、このようなテストはヘッドフォンを使用して実行する方が良いです。
  +
  +
== 音質 ==
  +
  +
=== バッファアンダーランのトラブルシューティング (音ズレ、音飛び、音割れ) ===
  +
  +
PulseAudio のサウンドサーバの新しい実装では、従来の割り込み駆動のアプローチではなくタイマーベースのオーディオスケジューリングが使用されます。
  +
  +
タイマーベースのスケジューリングは一部の ASLA ドライバで問題が発生する場合があります。一方、他のドライバでは、タイマーベースのスケジューリングがオンになっていないとバッファアンダーランが発生する傾向にあります。なので、あなたのシステムでどれがうまく行くか確認してください。
  +
  +
{{Note|オーディオインターフェイスは、サンプルの小さなリングバッファから読み込みます。これにより、カーネルが時々サンプルをバッファに追加しながら、インターフェイスは継続的にサウンドを再生し続けることができます。カーネルがサンプルを十分に速く追加できずにバッファが枯渇してしまうと、インターフェイスが再生すべきものがなくなってしまいます。この時、インターフェイスは即興でオーディオを生成しますが、生成されるオーディオはメーカーやモデルによって異なります。この問題は "バッファアンダーラン" と呼ばれており、しばしば "音ズレ"、"音飛び"、"音割れ"、更には "static" (ホワイトノイズのような "サー" という音) や "distortion" (音の歪み) というふうに言われます。}}
  +
  +
タイマーベースのスケジューリングをオフにするには、{{ic|/etc/pulse/default.pa}} に {{ic|1=tsched=0}} を追加してください:
  +
  +
{{hc|/etc/pulse/default.pa|2=
 
load-module module-udev-detect tsched=0
 
load-module module-udev-detect tsched=0
  +
}}
</nowiki>}}
 
  +
  +
そして、PulseAudio サーバを再起動してください:
   
それから PulseAudio サーバーを再起動してください:
 
 
$ pulseaudio -k
 
$ pulseaudio -k
 
$ pulseaudio --start
 
$ pulseaudio --start
   
タイマーベースのスケジューリングがデフォルトで有効になっていなかった場合、逆を行なっさい。
+
タイマーベースのスケジューリングがデフォルトで有効化されていな場合、有効化するにはのことください。
   
Intel の IOMMU を使ていると問題が発生することもあります。IOMMU を使っていて中断やスキップなどが起こる場合 {{ic|<nowiki>intel_iommu=igfx_off</nowiki>}} をカーネルコマンドラインに追加してください。
+
Intel の [[Wikipedia:ja:IOMMU|IOMMU]] を使用していてバッファアンダーランが発生する場合、カーネルコマンドラインに {{ic|1=intel_iommu=igfx_off}} を追加してください。
   
  +
{{ic|snd-hda-intel}} モジュールを使用する一部の Intel オーディオカードでは、{{ic|1=vid=8086 pid=8ca0 snoop=0}} オプションが必要です。これらを永続的に設定するには、以下のファイルを以下のように作成/変更してください:
問題が起こるカードは [http://pulseaudio.org/wiki/BrokenSoundDrivers PulseAudio Broken Sound Driver のページ] で報告してください。
 
   
  +
{{hc|/etc/modprobe.d/sound.conf|2=
=== Pulseaudio におけるデフォルトのフラグメント・バッファサイズを設定する ===
 
  +
options snd-hda-intel vid=8086 pid=8ca0 snoop=0
  +
}}
   
  +
そのようなカードは [https://www.freedesktop.org/wiki/Software/PulseAudio/Backends/ALSA/BrokenDrivers/ PulseAudio Broken Sound Driver ページ]で報告してください。
==== タイマーによるスケジューリングを無効化 (0/4) ====
 
  +
  +
カーネルのページロックやスケジューリングの遅延によりバッファアンダーランが発生する場合、[[ゲーム#カーネルパラメータを調整して応答時間を安定化させる]] を参照してください。
  +
  +
=== ヘッドホンの使用時に雑音 ===
  +
  +
タイマーベースのスケジューリングはこのような問題を引き起こす場合があります。[[#バッファアンダーランのトラブルシューティング (音ズレ、音飛び、音割れ)]] で説明されている方法でタイマーベースのスケジューリングを無効化してください。
  +
  +
また、ALSA のループバックのミキシングが雑音の原因である可能性もあります。
  +
  +
{{Pkg|alsa-utils}} がインストールされていることを確認し、{{ic|alsamixer}} を起動してください。そして、あなたのオーディオデバイスを選択し ({{ic|F6}} を押す)、左矢印キーで左端まで移動し、'''Loopback''' を停止してください ('''Enabled''' になっている場合は、下矢印キーで無効化してください)。これにより、オーディオの再生やマイクの録音に悪影響を与えることはないはずです (ループバックミキシングを行わない限り)。
  +
  +
一部のノート PC モデル (Dell XPS 13 9360 など) では、ヘッドホンが刺さっている場合に[[Dell XPS 13 (9360)#ヘッドフォンで断続的にホワイトノイズが乗る|断続的なホワイトノイズ]]が発生します。
  +
  +
この症状の原因としてもう一つ考えられるのは、オーディオデバイスの省電力モードです。[https://askubuntu.com/a/534082] [[電源管理#オーディオ]] の指示の通りにしている場合、その変更をもとに戻し、問題が解決しないかチェックしてください。
  +
  +
=== Pulseaudio におけるデフォルトのフラグメント数とバッファサイズを設定する ===
  +
  +
==== タイマーによるスケジューリングを無効化する ====
   
 
デフォルトでは、PulseAudio はタイマーベースのスケジューリングを使います。このモードでは、フラグメントが全て使われることはなく、default-fragments と default-fragment-size-msec パラメータは無視されます。タイマーベーススケジューリングをオフにするには {{ic|/etc/pulse/default.pa}} に {{ic|1=tsched=0}} を追加してください:
 
デフォルトでは、PulseAudio はタイマーベースのスケジューリングを使います。このモードでは、フラグメントが全て使われることはなく、default-fragments と default-fragment-size-msec パラメータは無視されます。タイマーベーススケジューリングをオフにするには {{ic|/etc/pulse/default.pa}} に {{ic|1=tsched=0}} を追加してください:
  +
 
{{hc|/etc/pulse/default.pa|2=
 
{{hc|/etc/pulse/default.pa|2=
 
load-module module-udev-detect tsched=0
 
load-module module-udev-detect tsched=0
 
}}
 
}}
   
==== オーディオデバイスのパラメータを調べ (1/4) ====
+
==== オーディオデバイスのパラメータを決める ====
   
  +
以下の手順により、PulseAudio は固定のサイズと数のオーディオフラグメントを使用するようになります。これらの設定はレイテンシと電力消費量に直接影響します。レイテンシは {{ic|1=default-fragments * default-fragment-size-msec}} で決定され、割り込みレート (つまり、何らかの音が再生されていることをアプリケーションに通知する頻度) は {{ic|1=1000 / default-fragment-size-msec}} です。考慮事項としては:
サウンドカードのバッファリング設定を見つけるには、以下のコマンドを使って出力の中にある sink エントリを確認してください:
 
   
  +
* フラグメントの合計数は、ハードウェアの許容制限以下でなければなりません。ほとんどのサウンドカードは2つ以上のフラグメントでも大丈夫ですが、一部は3つ以上を必要とします。
{{hc|$ pactl list sinks|<nowiki>
 
  +
* 必要数を超えるフラグメントをサウンドカードに渡すとレイテンシが増加し、電力消費量は変わらず、スケジューラの負荷も無くなりません。なので、フラグメントを増やすのは、割り込みの CPU への転送に信頼性がない場合のみに推奨されます。必要な最小フラグメント数より1つ多いフラグメントで通常は十分なはずです。
Sink #1
 
  +
* より大きいフラグメントをサウンドカードに渡すとレイテンシが増加しますが、電力消費量は減ります。
State: RUNNING
 
  +
* 一部のアプリケーション (ゲームや VoIP) は低レイテンシを要求し、PulseAudio がその要求を満たせない場合、バッファアンダーランが発生します。
Name: alsa_output.pci-0000_00_1b.0.analog-stereo
 
  +
* レイテンシをあまりに低く設定すると、スケジューラに多くの負担がかかり、またしてもバッファアンダーランが発生します。
Description: Built-in Audio Analog Stereo
 
Driver: module-alsa-card.c
 
Sample Specification: s16le 2ch 44100Hz
 
Channel Map: front-left,front-right
 
Owner Module: 7
 
Mute: no
 
Volume: front-left: 42600 / 65% / -11.22 dB, front-right: 42600 / 65% / -11.22 dB
 
balance 0.00
 
Base Volume: 65536 / 100% / 0.00 dB
 
Monitor Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
 
Latency: 70662 usec, configured 85000 usec
 
Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
 
Properties:
 
alsa.resolution_bits = "16"
 
device.api = "alsa"
 
device.class = "sound"
 
alsa.class = "generic"
 
alsa.subclass = "generic-mix"
 
alsa.name = "ALC283 Analog"
 
alsa.id = "ALC283 Analog"
 
alsa.subdevice = "0"
 
alsa.subdevice_name = "subdevice #0"
 
alsa.device = "0"
 
alsa.card = "1"
 
alsa.card_name = "HDA Intel PCH"
 
alsa.long_card_name = "HDA Intel PCH at 0xe111c000 irq 43"
 
alsa.driver_name = "snd_hda_intel"
 
device.bus_path = "pci-0000:00:1b.0"
 
sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card1"
 
device.bus = "pci"
 
device.vendor.id = "8086"
 
device.vendor.name = "Intel Corporation"
 
device.product.id = "9ca0"
 
device.product.name = "Wildcat Point-LP High Definition Audio Controller"
 
device.form_factor = "internal"
 
device.string = "front:1"
 
device.buffering.buffer_size = "352800"
 
device.buffering.fragment_size = "176400"
 
device.access_mode = "mmap+timer"
 
device.profile.name = "analog-stereo"
 
device.profile.description = "Analog Stereo"
 
device.description = "Built-in Audio Analog Stereo"
 
alsa.mixer_name = "Realtek ALC283"
 
alsa.components = "HDA:10ec0283,10ec0283,00100003"
 
module-udev-detect.discovered = "1"
 
device.icon_name = "audio-card-pci"
 
Ports:
 
analog-output-speaker: Speakers (priority: 10000, not available)
 
analog-output-headphones: Headphones (priority: 9000, available)
 
Active Port: analog-output-headphones
 
Formats:
 
pcm
 
...
 
</nowiki>}}
 
   
  +
過度な電力消費量を気にしない場合、フラグメントサイズは 5ms で、フラグメント数は2つか3つに設定するのが合理的でしょう。
該当するサウンドカードの {{ic|buffer_size}} と {{ic|fragment_size}} の値をメモして下さい。
 
   
==== ミリ秒のフラグメントサズとフラグメントの数計算する (2/4) ====
+
==== PulseAudio 設定変更する ====
   
  +
{{hc|/etc/pulse/daemon.conf|2=
PulseAudio のデフォルトのサンプリングレートとビット深度は {{ic|44100Hz}} @ {{ic|16 bits}} に設定されています。
 
  +
default-fragments = '''3'''
  +
default-fragment-size-msec = '''5'''
  +
}}
   
  +
==== うまくいったか確認する ====
この設定の場合、必要なビットレートは {{ic|44100}}*{{ic|16}} = {{ic|705600}} ビット毎秒です。ステレオなら {{ic|1411200 bps}} になります。
 
   
  +
{{ic|pulseaudio.service}} [[ユーザーユニット]]を[[再起動]]してください。
前のステップで見つけたパラメータを見てみましょう:
 
   
  +
何かアプリケーションを起動し、音を聴き、[[journal]] を調査してください。
device.buffering.buffer_size = "352800" => 352800/1411200 = 0.25 s = 250 ms
 
device.buffering.fragment_size = "176400" => 176400/1411200 = 0.125 s = 125 ms
 
   
  +
時々バッファアンダーランが発生し、システムの高負荷と相関がありそうな場合、それはスケジューラの問題であり、レイテンシを増やす必要があります。
==== Pulseaudio の設定ファイルを修正する (3/4) ====
 
   
  +
全てのアプリケーションから間違った速度で金属的な音が聞こえる場合、最も一般的な原因は小さすぎるフラグメントサイズ (例えば 1 ms など) です。サイズを増やしましょう。
{{hc|/etc/pulse/daemon.conf|<nowiki>
 
; default-fragments = X
 
; default-fragment-size-msec = Y
 
</nowiki>}}
 
   
  +
一部 (だが全てではない) のアプリケーションでバッファアンダーランが発生する場合、アプリケーションが低レイテンシな環境を想定していること原因です。なので、アプリケーションの要求が有効になるように、フラグメントサイズを減らす必要があります。
前のステップで、フラグメントサイズのパラメータを計算しました。
 
フラグメントの数字は buffer_size/fragment_size になり、この場合 ({{ic|250/125}}) で {{ic|2}} です:
 
   
  +
=== アナログのサラウンドの環境で音が途切れる ===
{{hc|/etc/pulse/daemon.conf|<nowiki>
 
; default-fragments = '''2'''
 
; default-fragment-size-msec = '''125'''
 
</nowiki>}}
 
   
  +
低域効果音 (low-frequency effects, LFE) チャンネルや Subwoofer チャネルはデフォルトではリミックスされません。有効にするには以下を {{ic|/etc/pulse/daemon.conf}} で設定する必要があります:
==== Pulseaudio デーモンを再起動する (4/4) ====
 
   
  +
{{hc|/etc/pulse/daemon.conf|2=
$ pulseaudio -k
 
  +
remixing-produce-lfe = yes
$ pulseaudio --start
 
  +
remixing-consume-lfe = yes
  +
}}
   
  +
また、LFE チャネルに適切なクロスオーバー周波数を設定することも検討してください。
詳しくは次を参照してください: [https://forums.linuxmint.com/viewtopic.php?f=42&t=44862 Linux Mint topic]
 
  +
クロスオーバー周波数とは、オーディオシグナルが LFE シンクに再ルーティングされる周波数です。
  +
最適なクロスオーバー周波数は、全てのスピーカーのサイズに依ります。
   
  +
{{hc|/etc/pulse/daemon.conf|2=
=== アナログのサラウンド設定で音が途切れる ===
 
  +
lfe-crossover-freq = <40-200>
 
  +
}}
低域効果音 (low-frequency effects, LFE) チャンネルはデフォルトではリミックスされません。有効にするには以下を {{ic|/etc/pulse/daemon.conf}} で設定する必要があります:
 
{{hc|/etc/pulse/daemon.conf|<nowiki>
 
enable-lfe-remixing = yes
 
</nowiki>}}
 
   
 
=== 音がズレる ===
 
=== 音がズレる ===
   
この問題はバッファサイズが適当でないことが原因です。
+
この問題はバッファサイズが適当でないことが原因です。まず、{{ic|/etc/pulse/daemon.conf}} ファイル内で {{ic|default-fragments}} 変数と {{ic|default-fragment-size-msec}} 変数がデフォルト以外の値に設定されていないことを確認してください。この問題がまだ続く場合、以下の値に設定してみてください:
   
  +
{{hc|/etc/pulse/daemon.conf|2=
(もし存在するならば)以下のエントリに加えた修正を無効にするか、それでも問題が解決しない場合、アンコメントしてください:
 
  +
default-fragments = 5
{{hc|/etc/pulse/daemon.conf|<nowiki>
 
default-fragments = 8
+
default-fragment-size-msec = 2
  +
}}
default-fragment-size-msec = 5
 
</nowiki>}}
 
   
 
=== 音が歪んだり途切れる ===
 
=== 音が歪んだり途切れる ===
   
サンプレートの設定が間違っているために pulsaudio 音がとぎれるようになっている可能性があります。を試してさい:
+
サンプリングレートが間違っていることが原因る可能性があります。以下の設定を試してください:
  +
{{hc|/etc/pulse/daemon.conf|<nowiki>
 
  +
{{hc|/etc/pulse/daemon.conf|2=
  +
avoid-resampling = yes #([https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/11.0/ PA11] 及びそれ以上が必要)
 
default-sample-rate = 48000
 
default-sample-rate = 48000
  +
}}
</nowiki>}}
 
それから PulseAudio サーバーを再起動してください。
 
   
  +
それから PulseAudio サーバを再起動してください。
OpenAL を使っているアプリケーションで音が途切れるような場合は、{{ic|/etc/openal/alsoft.conf}} のサンプルレートを変更してください:
 
frequency = 48000
 
   
  +
[[Wikipedia:ja:OpenAL|OpenAL]] を使っているアプリケーションで音が途切れるような場合は、{{ic|/etc/openal/alsoft.conf}} のサンプルレートを変更してください:
PCM ボリュームを 0dB より高く設定すると音声信号にクリッピングが発生することがあります。{{ic|alsamixer -c0}} を実行すればボリュームが問題なのか確認でき、修正することが可能です。ALSA は PulseAudio に dB 情報を [https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/PulseAudioStoleMyVolumes 正しく伝えられない] ことがあります。次を試して:
 
  +
{{hc|/etc/pulse/defaults.pa|<nowiki>
 
  +
{{hc|/etc/openal/alsoft.conf|2=
  +
frequency = 48000
  +
}}
  +
  +
PCM ボリュームを 0dB より高く設定すると音声信号に[[Wikipedia:Clipping_(audio)|クリッピング]]が発生することがあります。{{ic|alsamixer}} を実行すればボリュームが問題なのか確認でき、修正することが可能です。ALSA は PulseAudio に dB 情報を[https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/PulseAudioStoleMyVolumes/ 正しく伝えられない]ことがあります。以下の設定を試してください:
  +
  +
{{hc|/etc/pulse/default.pa|2=
 
load-module module-udev-detect ignore_dB=1
 
load-module module-udev-detect ignore_dB=1
  +
}}
</nowiki>}}
 
  +
PulseAudio サーバーを再起動してみてください。[[#ボリュームのカットオフで音が鳴らない|ボリュームのカットオフで音が鳴らない]]も参照。
 
  +
そして PulseAudio サーバーを再起動してください。[[#ボリュームのカットオフで音が鳴らない]] も参照。
  +
  +
=== ネットワーク経由でストリーミングを行うとスタッタリング ===
  +
  +
module-native-protocol-tcp を使用して Wi-Fi 経由でストリーミングを行っている場合、バッファアンダーランにより定期的なスタッタリングが発生する可能性があります。回避策として、rtp プロトコルを使用してみることができます。送信側で、rtp シンクを作成してください:
  +
  +
{{hc|/etc/pulse/default.pa|2=
  +
load-module module-null-sink sink_name=rtp
  +
load-module module-rtp-send source=rtp.monitor
  +
}}
  +
  +
そして、それに切り替えてください:
  +
  +
{{hc|/etc/pulse/default.pa|2=
  +
set-default-sink rtp
  +
}}
  +
  +
受信側で、rtp モジュールをロードしてください:
  +
  +
{{hc|/etc/pulse/default.pa|2=
  +
load-module module-rtp-recv
  +
}}
  +
  +
=== 音声の再生時と停止時に破裂音 ===
  +
  +
PulseAudio は非アクティブな状態が一定時間続くとシンクをサスペンドする可能性があります。これにより、可聴ノイズ (音割れ、破裂音、ひっかくような音) が発生する可能性があります。時々、ボリュームスライダーを動かしたときや、ウィンドウを閉じた時 (KDE4) などにも発生します。この挙動はデフォルトの設定ファイルで有効化されています:
  +
  +
{{hc|/etc/pulse/default.pa|2=
  +
load-module module-suspend-on-idle
  +
}}
  +
  +
{{hc|/etc/pulse/system.pa|2=
  +
load-module module-suspend-on-idle
  +
}}
  +
  +
関連するファイルでその行をコメントアウトすることでこの問題は解決します。より良い解決策は、以下を追加することです:
  +
  +
{{hc|~/.config/pulse/default.pa|2=
  +
.include /etc/pulse/default.pa
  +
.nofail
  +
unload-module module-suspend-on-idle
  +
.fail
  +
}}
  +
  +
一部のデバイス (例: Bose Quietcomfort 35 II) では、デバイスの音量を十分に大きく設定する (通常、物理ボタンやスライダーで) と、音声の停止時に可聴ノイズを取り除くことができます。
   
 
== ハードウェアとカード ==
 
== ハードウェアとカード ==
485行目: 599行目:
 
...
 
...
 
}}
 
}}
  +
  +
=== ヘッドレスサーバーを使用すると HDMI サウンドが聞こえない ===
  +
  +
AV レシーバーでは HDMI オーディオを使用するが、ディスプレイは使用しない場合があります。HDMI には、仮想端末から取得したビデオ信号が必要です。
  +
  +
デフォルトでは、この信号は 600 秒後にオフになるため、オーディオシンクも失われます。
  +
  +
画面がブランクになるのを防ぐには、カーネルコマンドラインに {{ic|1=consoleblank=0}} を追加します。
   
 
=== カードが表示されない ===
 
=== カードが表示されない ===
493行目: 615行目:
   
 
pcm や dsp ファイルを使用するアプリケーションは PulseAudio を再起動する前にシャットダウンしてください。
 
pcm や dsp ファイルを使用するアプリケーションは PulseAudio を再起動する前にシャットダウンしてください。
  +
  +
=== アプリを起動すると他のアプリの音が途切れる ===
  +
  +
一部のアプリケーション (TeamSpeak や Mumble など) が、すでに実行中のアプリケーション (Deadbeaf など) のサウンド出力を中断するという問題がある場合は、{{ic|load-module module-role-cork}} 行をコメントアウトすることで問題を解決できます。以下に示すように、{{ic|/etc/pulse/default.pa}} 内にあります:
  +
  +
{{hc|/etc/pulse/default.pa|
  +
### Cork music/video streams when a phone stream is active
  +
# load-module module-role-cork
  +
}}
  +
  +
次に、通常のユーザーアカウントを使用して、pulseaudio を再起動します。
  +
  +
$ pulseaudio -k
  +
$ pulseaudio --start
   
 
=== "dummy output" しかデバイスが表示されない ===
 
=== "dummy output" しかデバイスが表示されない ===
546行目: 682行目:
   
 
=== 同一サウンドカード上の複数の sink への同時出力が使えない ===
 
=== 同一サウンドカード上の複数の sink への同時出力が使えない ===
  +
 
音源が複数存在して別々の sink や出力で再生したい場合に有用です。例えば音楽を効きながらボイスチャットをするときに、音楽はスピーカー (例: Digital S/PDIF) に会話はヘッドフォン (例: アナログ) に出力したい場合などが考えられます。
 
音源が複数存在して別々の sink や出力で再生したい場合に有用です。例えば音楽を効きながらボイスチャットをするときに、音楽はスピーカー (例: Digital S/PDIF) に会話はヘッドフォン (例: アナログ) に出力したい場合などが考えられます。
   
563行目: 700行目:
 
}}
 
}}
   
  +
次に、設定ファイルを作成します。ただし、デフォルトの設定ファイルを使用し、名前を変更して、機能することがわかっているプロファイルをそこに追加することもできます。あまり美しくありませんが、高速です。
Create now a configuration file. If you bother you can start from scratch and make if saucy. However you can also use the default configuration file rename it and then add your profile there that you know works. Less pretty but also faster.
 
   
  +
Asus Xonar Essence STX の複数のシンクを有効にするには、これを追加するだけです。
To enable multiple sinks for Asus Xonar Essence STX you need only to add this in.
 
  +
{{Note|{{ic|asus-xonar-essence-stx.conf}} also includes all code/mappings from {{ic|default.conf}}.}}
 
  +
{{Note|{{ic|asus-xonar-essence-stx.conf}} には、{{ic|default.conf}} のすべてのコード/マッピングも含まれています}}
 
{{hc|/usr/share/pulseaudio/alsa-mixer/profile-sets/asus-xonar-essence-stx.conf|
 
{{hc|/usr/share/pulseaudio/alsa-mixer/profile-sets/asus-xonar-essence-stx.conf|
 
[Profile analog-stereo+iec958-stereo]
 
[Profile analog-stereo+iec958-stereo]
575行目: 713行目:
 
}}
 
}}
   
  +
これにより、Asus Xonar Essence STX がデフォルトのプロファイルで自動プロファイルされ、独自のプロファイルが追加されるため、複数のシンクを使用できるようになります。
This will auto-profile your Asus Xonar Essence STX with default profiles and add your own profile so you can have multiple sinks.
 
  +
  +
AC3 デジタル 5.1 出力で同じ機能を使用する場合は、設定ファイルに別のプロファイルを作成する必要があります。
  +
  +
[https://www.freedesktop.org/wiki/Software/PulseAudio/Backends/ALSA/Profiles/ プロファイルについては PulseAudio の記事を参照してください。]
  +
  +
=== SPDIF などの一部のプロファイルは、カード上でデフォルトでは有効になっていません ===
  +
  +
IEC-958 (S/PDIF) などの一部のプロファイルは、選択したシンクでデフォルトでは有効になっていない場合があります。システムが起動するたびに、カードプロファイルは無効になり、pulseaudio デーモンはそれを選択できません。
  +
プロファイルの選択をdefault.paファイルに追加する必要があります。
  +
次のコマンドを使用してカードとプロファイル名を確認します:
  +
  +
$ pacmd list-cards
  +
  +
次に、設定を編集してプロファイルを追加します
  +
  +
{{hc|~/.config/pulse/default.pa|
  +
## Replace with your card name and the profile you want to activate
  +
set-card-profile alsa_card.pci-0000_00_1b.0 output:iec958-stereo+input:analog-stereo
  +
}}
  +
  +
Pulse audio は、このプロファイルを利用可能なプロファイルのプールに追加します
  +
  +
=== S/PDIF 出力のみ利用可能 ===
  +
  +
これは、PulseAudio が間違った出力デバイスを使用している場合に発生する可能性があります。まず、適切なカードプロファイルを設定します。
  +
  +
$ pacmd set-card-profile alsa_card.pci-0000_00_1f.3 output:analog-stereo
  +
  +
または
  +
  +
$ pacmd set-card-profile alsa_card.pci-0000_00_1f.3 output:analog-stereo+input:analog-stereo
  +
  +
{{ic|alsa_card.pci-0000_00_1f.3}} を使用しているカードに置き換え、{{ic|output:analog-stereo}} または {{ic|output:analog-stereo+input:analog-stereo}} を使用しているカードに置き換えます。プロファイルを選択する場合は、必ずアナログのプロファイルを選択してください。シェルの自動補完を使用すると、非常に役立ちます。次のようにして、利用可能なカードとプロファイルを確認することもできます:
  +
  +
$ pacmd list-cards
  +
  +
次の方法でシンクポートを設定する必要がある場合もあります:
  +
  +
$ pacmd set-sink-port alsa_output.pci-0000_00_1f.3.analog-stereo analog-output-headphones
  +
  +
利用可能なシンクポートを次のコマンドで確認します:
  +
  +
$ pacmd list-sinks
  +
  +
これらの設定を保持するには、PulseAudio の設定ファイル {{ic|default.pa}} に追加します。
  +
  +
{{hc|~/.config/pulse/default.pa|
  +
.include /etc/pulse/default.pa
  +
  +
set-card-profile alsa_card.pci-0000_00_1f.3 output:analog-stereo+input:analog-stereo
  +
set-sink-port alsa_output.pci-0000_00_1f.3.analog-stereo analog-output-headphones
  +
}}
  +
  +
=== USB 接続機器からのパチパチという音 ===
   
  +
PulseAudio とは関係ありませんが、カードの USB ポートから適切に電力が供給されていない、または十分な帯域幅が提供されていない可能性もあります。
You need to create another profile in the configuration file if you want to have the same functionality with AC3 Digital 5.1 output.
 
   
  +
ハブやドックを避けて、USB DAC をコンピュータの USB ポートに直接接続してみてください。
pulseaudio のプロファイルに付いて詳しくは [https://www.freedesktop.org/wiki/Software/PulseAudio/Backends/ALSA/Profiles/] を見てください。
 
   
 
== Bluetooth ==
 
== Bluetooth ==
636行目: 828行目:
 
== アプリケーション ==
 
== アプリケーション ==
   
=== Flash コンテンツ ===
+
=== Audacity ===
   
  +
Audacity の起動時にヘッドフォンから音が流れなくなることがあります。これは Audacity がヘッドフォンを録音デバイスとして認識してしまうのが原因です。この問題を解決するには、Audacity を開いて、録音デバイスを {{ic|1=pulse:Internal Mic:0}} に設定してください。
Adobe Flash は PulseAudio を直接サポートしていないため[[#ALSA|仮想の PulseAudio サウンドカードを使うように ALSA を設定する]]のが推奨されています。
 
   
  +
特定の状況下で、再生が途切れるようになったり、急に加速したり、フリーズすることがあります。[http://wiki.audacityteam.org/wiki/Linux_Issues#ALSA_and_other_sound_systems Audacity Wiki's Linux Issues page] を参照。
もしくは [[Arch User Repository|AUR]] にある {{AUR|libflashsupport-pulse}}{{Broken package link|{{aur-mirror|libflashsupport-pulse}}}} を使うこともできます。
 
{{Note|このパッケージは Flash プラグインをクラッシュさせる可能性があります。}}
 
   
  +
上記のページで提案されている解決方法で上手くいくことがあります: Audacity を起動するときに次のコマンドを使用:
Flash からの音声にラグが生じる場合、Flash が直接 ALSA にアクセスできるようにしたほうが良いかもしれません。場合によってはこれで問題が解決することがあります。直接アクセスを許可するには、[[#ALSA/dmix でハードウェアデバイスを占有しない|PulseAudio が dmix を使うように設定]]してください。
 
   
  +
$ env PULSE_LATENCY_MSEC=30 audacity
=== KDE Plasma ワークスペース ===
 
   
  +
上記の方法で問題が解決しない場合、{{ic|pasuspender}} コマンドを使うことで Audacity を実行している間だけ pulseaudio を一時的に無効化できます:
おそらく phonon で他の出力デバイスが優先するように設定されています。優先の出力デバイスが上にくるようになっているか全ての設定をチェックして、{{ic|kmix}} の再生ストリームタブを確認してアプリケーションが使っている出力デバイスを確認してください。
 
   
  +
$ pasuspender -- audacity
デフォルトのオーディオデバイスを見るには、次を実行します:
 
   
  +
上記のコマンドを実行したら、Audacity で ALSA の入出力を選択するようにしてください。
pactl stat
 
   
  +
[[#Pulseaudio におけるデフォルトのフラグメント・バッファサイズを設定する]]も見て下さい。
利用可能なオーディオデバイスを見るには:
 
   
  +
=== OpenAL ===
pactl list
 
   
  +
ゲームによっては、出力デバイスを切り替えることができない場合があります。{{ic|pactl}} を使用してシンクを移動しようとすると、次のエラーが発生します:
デフォルトのオーディオデバイスを設定するには、"pacmd" を使うか、以下を {{ic|/etc/pulse/default.pa}} に追加します:
 
set-default-sink alsa_output.analog-stereo
 
   
  +
pactl move-sink-input 11 alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1
=== パーミッションエラーバグ ===
 
  +
Failure: Invalid argument
   
  +
OpenAL は、シンクの移動を許可するように設定する必要があります:
{{hc|pulseaudio --start|
 
E: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Operation not permitted
 
W: [autospawn] lock-autospawn.c: Cannot access autospawn lock.
 
E: [pulseaudio] main.c: Failed to acquire autospawn lock}}
 
   
  +
{{hc|head=~/.alsoftrc|output=[pulse]
[[Polkit]] を使って root に権限昇格するときに {{ic|/run/user/''user id''/pulse}} のパーミッションを変更してしまう既知のプログラム:
 
  +
allow-moves = true
  +
}}
   
  +
=== ブラウザ (firefox) が動画をロードするが、再生しない ===
*{{AUR|sakis3g}}{{Broken package link|パッケージが存在しません}}
 
   
  +
{{Accuracy|1=<nowiki/>
対応策としては、[[デスクトップエントリ]]で {{AUR|gksu}} または {{Pkg|kdesu}} を読み込ませるか、[[sudoers]] に {{ic|1=''username'' ALL=NOPASSWD: /usr/bin/''program_name''}} を追加して、パスワードではなく {{Pkg|sudo}} や {{ic|gksudo}} で実行させるようにしてください。
 
  +
* この解決策は、PA がインストールされていることを確認し、PA を PipeWire に置き換えるだけになっています。この問題は PA を保持したまま解決可能であるはずです。
  +
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1422073 この Firefox の問題]はこのセクションから削除されましたが、まだ解決されていないようです。
  +
}}
   
  +
{{Pkg|pulseaudio}} がインストールされていることを確認してください。動画がロードされている状態で、PulseAudio を停止してください:
{{ic|/etc/pulse/daemon.conf}} に {{ic|1=daemonize = yes}} を設定することでも問題を回避できます。
 
   
  +
$ pulseaudio --kill
[https://bbs.archlinux.org/viewtopic.php?id=135955] も参照。
 
   
  +
自動起動しない場合、PulseAudio を再起動してください:
=== Audacity ===
 
   
  +
$ pulseaudio --start
Audacity の起動時にヘッドフォンから音が流れなくなることがあります。これは Audacity がヘッドフォンを録音デバイスとして認識してしまうのが原因です。この問題を解決するには、Audacity を開いて、録音デバイスを {{ic|1=pulse:Internal Mic:0}} に設定してください。
 
   
  +
これで動画が再生されるはずです (最初は音が出ませんが)。ページを閉じない限り、他の動画を選択したり、動画を音付きで視聴したりできるはずです。{{Pkg|pulseaudio}} が原因であると確認したら、{{Pkg|pulseaudio}} を {{Pkg|pipewire-pulse}} に置き換えて、再ログインしてうまく行くかどうか確かめてください。詳細は [[PipeWire#PulseAudio クライアント]] を参照してください。
特定の状況下で、再生が途切れるようになったり、急に加速したり、フリーズすることがあります。[http://wiki.audacityteam.org/wiki/Linux_Issues#ALSA_and_other_sound_systems Audacity Wiki's Linux Issues page] を参照。
 
 
上記のページで提案されている解決方法で上手くいくことがあります: Audacity を起動するときに次のコマンドを使用:
 
 
$ env PULSE_LATENCY_MSEC=30 audacity
 
 
上記の方法で問題が解決しない場合、{{ic|pasuspender}} コマンドを使うことで Audacity を実行している間だけ pulseaudio を一時的に無効化できます:
 
 
$ pasuspender -- audacity
 
 
上記のコマンドを実行したら、Audacity で ALSA の入出力を選択するようにしてください。
 
 
[[#Pulseaudio におけるデフォルトのフラグメント・バッファサイズを設定する]]も見て下さい。
 
   
 
== その他の問題 ==
 
== その他の問題 ==
 
=== 設定ファイルが間違っている ===
 
 
pulseaudio を起動した後、システムが音を出力しない場合、{{ic|~/.pulse}} の中身を削除する必要があるかもしれません。Pulseaudio は次の起動時に新しい設定ファイルを自動的に作成します。
 
   
 
=== pavucontrol でサウンドデバイスの設定を更新できない ===
 
=== pavucontrol でサウンドデバイスの設定を更新できない ===
705行目: 882行目:
 
{{Pkg|pavucontrol}} は pulseaudio を設定するための手頃な GUI ユーティリティです。'Configuration' タブから、サウンドデバイスごとに異なるプロファイルを選択することができます。例えばアナログ・ステレオ、デジタル出力 (IEC958)、HDMI 5.1 サラウンドなど。
 
{{Pkg|pavucontrol}} は pulseaudio を設定するための手頃な GUI ユーティリティです。'Configuration' タブから、サウンドデバイスごとに異なるプロファイルを選択することができます。例えばアナログ・ステレオ、デジタル出力 (IEC958)、HDMI 5.1 サラウンドなど。
   
  +
しかしながら、カードの異なるプロファイルを選択した場合に、pulse デーモンがクラッシュし、新しい選択が「スティッキング」されない場合があるかもしれません。 この場合は、他の便利な GUI ツールである {{Pkg|paprefs}} を使用して、「Simultaneous Output」タブの下で仮想同時デバイスを確認してください。 この設定がアクティブ(チェック済み)の場合、pavucontrol でカードのプロファイルを変更することを防止します。 この設定を解除して、paprefs で同時出力を再度有効にする前に、pavucontrol でプロファイルを調整してください。
However, you may run into an instance where selecting a different profile for a card results in the pulse daemon crashing and auto restarting without the new selection "sticking". If this occurs, use the other useful GUI tool, {{Pkg|paprefs}}, to check under the "Simultaneous Output" tab for a virtual simultaneous device. If this setting is active (checked), it will prevent you changing any card's profile in pavucontrol. Uncheck this setting, then adjust your profile in pavucontrol prior to re-enabling simultaneous output in paprefs.
 
   
 
=== Pulse が ALSA の設定を上書きする ===
 
=== Pulse が ALSA の設定を上書きする ===
737行目: 914行目:
 
サーバーが動作していないのに PulseAudio がエラーメッセージ "User-configured server at ... refusing to start/autospawn" で起動できない場合、おそらく以前のログインでの PulseAudio の設定が問題です。{{ic|pax11publish -d}} で X11 ルートウィンドウに古いプロパティが付けられていないか確認してください。もし古いプロパティがある場合は、サーバーを起動する前に {{ic|pax11publish -r}} で削除してください。この手動消去は LXDM を使うときは必ず必要になります。LXDM はログアウトで X サーバーを再起動しないためです。[[LXDM#PulseAudio]] を見て下さい。
 
サーバーが動作していないのに PulseAudio がエラーメッセージ "User-configured server at ... refusing to start/autospawn" で起動できない場合、おそらく以前のログインでの PulseAudio の設定が問題です。{{ic|pax11publish -d}} で X11 ルートウィンドウに古いプロパティが付けられていないか確認してください。もし古いプロパティがある場合は、サーバーを起動する前に {{ic|pax11publish -r}} で削除してください。この手動消去は LXDM を使うときは必ず必要になります。LXDM はログアウトで X サーバーを再起動しないためです。[[LXDM#PulseAudio]] を見て下さい。
   
  +
==== PulseAudio エラーステータスチェックユーティリティによる出力 ====
==== inotify の問題 ====
 
   
上の修正解決しないときは、以下のようなエラーが表示されないか確認してください:
+
{{ic|pax11publish -d}} のようなエラーが表示される場合:
  +
{{hc|$ pulseaudio -vvvv|
 
  +
N: [pulseaudio] main.c: User-configured server at "user", refusing to start/autospawn.
E: [pulseaudio] module-udev-detect.c: You apparently ran out of inotify watches, probably because Tracker/Beagle took them all away. I wished people would do their homework first and fix inotify before using it for watching whole directory trees which is something the current inotify is certainly not useful for. Please make sure to drop the Tracker/Beagle guys a line complaining about their broken use of inotify.
 
  +
}}
 
  +
次に、{{ic|pax11publish -r}} コマンドを実行して、ログアウトして再度ログインすることもできます。
  +
  +
{{ic|pulseaudio -vvvv}} コマンドで次のようなエラーが表示された場合:
  +
  +
E: [pulseaudio] module-udev-detect.c: You apparently ran out of inotify watches, probably because Tracker/Beagle took them all away. I wished people would do their homework first and fix inotify before using it for watching whole directory trees which is something the current inotify is certainly not useful for. Please make sure to drop the Tracker/Beagle guys a line complaining about their broken use of inotify.
  +
  +
これは次の方法で一時的に解決できます:
   
  +
$ echo 100000 > /proc/sys/fs/inotify/max_user_watches
エラーが表示されるなら、inotify の監視数が上限に達しています。
 
   
  +
永続的に使用するには、''99-sysctl.conf'' ファイルに設定を保存します。
次のコマンドで簡単に解決できます:
 
# echo 100000 > /proc/sys/fs/inotify/max_user_watches
 
   
永続的に変更させるには、次を使って下さい:
 
 
{{hc|/etc/sysctl.d/99-sysctl.conf|2=
 
{{hc|/etc/sysctl.d/99-sysctl.conf|2=
 
# Increase inotify max watchs per user
 
# Increase inotify max watchs per user
 
fs.inotify.max_user_watches = 100000
 
fs.inotify.max_user_watches = 100000
 
}}
 
}}
  +
  +
{{Warning|カーネルによるメモリの消費量が大幅に増加する可能性があります。}}
  +
  +
'''参照'''
  +
  +
* [https://web.archive.org/web/20160823051536/http://www.linuxinsight.com/proc_sys_fs_inotify.html proc_sys_fs_inotify] そして [https://lwn.net/Articles/604686/ dnotify, inotify]- ''inotify/max_user_watches'' の詳細
  +
* [https://stackoverflow.com/questions/535768/what-is-a-reasonable-amount-of-inotify-watches-with-linux?answertab=votes#tab-top Linux で適切な量の inotify を監視する]
  +
* {{man|7|inotify}} - man page
   
 
===Daemon already running===
 
===Daemon already running===
809行目: 999行目:
   
 
デフォルト設定では時としてネットワーク上に UDP パケットを大量に送信することがあります [https://bugs.freedesktop.org/show_bug.cgi?id=44777]。この問題を解決するには {{ic|paprefs}} を起動して "Multicast/RTP Sender" を無効化してください [https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/411688/comments/36]。
 
デフォルト設定では時としてネットワーク上に UDP パケットを大量に送信することがあります [https://bugs.freedesktop.org/show_bug.cgi?id=44777]。この問題を解決するには {{ic|paprefs}} を起動して "Multicast/RTP Sender" を無効化してください [https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/411688/comments/36]。
  +
  +
=== 新しいオーディオソースストリームが、BT ヘッドフォンではなく "空" のストリームを自動選択する ===
  +
  +
シナリオの例: KDE + Arch 上の Firefox 68.0.1 で Youtube ビデオを再起動、停止、早送りすると、PulseAudio でそれに関連付けられた "シンク" が空の状態に設定され、ラップトップのスピーカーからサウンドが出力される可能性があります。Dell 9360 では再現性に一貫性がありません。
  +
  +
修正するには、{{ic|pulseaudio}} を強制終了して再起動する必要があるようです。
  +
  +
pulseaudio -k
  +
pulseaudio --start

2024年6月15日 (土) 06:09時点における最新版

メインの記事は PulseAudio を見て下さい。

目次

Pulseaudio からデバッグ出力を取得する

pulseaudio.socket および pulseaudio.service ユーザーユニット停止 し、デバッグ中に端末で手動で開始すると便利です。

$ pulseaudio -v

冗長性を高めるには、v を追加します。

ボリューム

Auto-Mute モード

Auto-Mute モードが有効になっているのかもしれません。alsamixer を使って無効にできます。

詳しくは https://superuser.com/questions/431079/how-to-disable-auto-mute-mode を見て下さい。

オーディオデバイスがミュートになる

もし、ALSAの利用中にどうやっても音が鳴らないならば、サウンドカードのミュート設定を外しましょう。そのためには、alsamixer を実行して、それぞれの列の下部が緑色の「00」になっているようにします (m キーを押すことで切り替えます):

$ alsamixer -c 0
ノート: alsamixer は、どの再生デバイスがデフォルトになっているかを教えてくれません。インストール後に音が鳴らない理由としては、pulseaudio が異なる再生デバイスをデフォルトとして検出してしまったことが考えられます。pavucontrol をインストールして、.wav ファイルを再生しながら、どこかに出力されていないか pavucontrol パネルで確認しましょう。

マスターを切り替えた後、出力がミュートされたままになる

複数の出力('ヘッドフォン' と 'スピーカー' など)を備えたセットアップでは、plain amixer を使用してマスターを切り替えると、PulseAudio がトリガーされてアクティブな出力もミュートされますが、マスターが再びミュート解除されてもミュートが解除されるとは限りません。[1] これを解決するには、amixer のデバイスフラグを 'pulse' に設定する必要があります。

$ amixer -D pulse sset Master toggle

これにより、amixer は、直接切り替えるのではなく、PulseAudio に切り替えを行うように要求します。 このため、PulseAudio はマスターと該当する出力のミュートを正しく解除します。

アプリケーションがミュートになる

特定のアプリケーションがミュートになったり、他のアプリケーションと比べて音量が低くなる場合、おそらく個々の sink-input の設定が原因です。問題のアプリケーションで音声を再生しているときに、以下を実行してください:

$ pacmd list-sink-inputs

適切な sink inputindex を探して下さい。properties: application.nameapplication.process.binary などでわかるはずです。mutedvolume などの設定が問題ないことを確認しましょう。sink がミュートになっている場合、次のコマンドでミュートを解除できます:

$ pacmd set-sink-input-mute <index> false

ボリュームを変える必要がある場合、次のコマンドで 100% に設定できます:

$ pacmd set-sink-input-volume <index> 0x10000
ノート: pacmd0 sink input(s) と表示される場合、アプリケーションが音声を流していることを確認してください。それでも sink が確認できない場合、他のアプリケーションで sink input が表示されるかどうか確認してください。

ボリューム調整が上手く動かない

次を確認してください: /usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common

alsamixeramixer でボリュームを適切に調整できない場合、pulseaudio が大きい数値を使っている可能性があります (正確には 65537)。ボリュームを変更するときに大きい値を使ってみて下さい (例: amixer set Master 655+)。

Master ボリュームを調整するとアプリケーションごとのボリュームが変化する

これは PulseAudio がデフォルトで、絶対的なマスターボリュームに呼応する相対ボリュームではなく、フラットボリュームを使っていることが原因です。この設定が困る場合、PulseAudio デーモンの設定ファイルでフラットボリュームを無効にすることで、相対ボリュームを有効にすることができます:

/etc/pulse/daemon.conf
flat-volumes = no

そして以下を実行して PulseAudio を再起動してください:

$ pulseaudio -k
$ pulseaudio --start

新しいアプリケーションを起動するたびにボリュームが大きくなる

デフォルトの設定では、アプリケーション内でボリュームを変更すると、各アプリケーションだけに影響を与えるのではなく、グローバルなシステムボリュームがそのレベルに設定されるようになっているようです。そのためアプリケーションが起動時にボリュームを設定すると、システムボリュームが"跳ね上がる"ようになります。

これを修正するには、前のセクションで説明しているように、フラットボリュームを無効にしてください。Pulse を起動しなおして数秒したら、アプリケーションはグローバルなシステムボリュームの代わりにアプリケーション毎のボリュームレベルを変更するようになっているはずです。

ノート: A previously installed and removed pulseaudio-equalizer may leave behind remnants of the setup in ~/.pulse/default.pa which can also cause maximized volume trouble. Comment that out as needed.

M-Audio Audiophile 2496 サウンドカードで音声出力がモノラルになる

以下を追加してください:

/etc/pulseaudio/default.pa
load-module module-alsa-sink sink_name=delta_out device=hw:M2496 format=s24le channels=10 channel_map=left,right,aux0,aux1,aux2,aux3,aux4,aux5,aux6,aux7
load-module module-alsa-source source_name=delta_in device=hw:M2496 format=s24le channels=12 channel_map=left,right,aux0,aux1,aux2,aux3,aux4,aux5,aux6,aux7,aux8,aux9
set-default-sink delta_out
set-default-source delta_in

ボリュームのカットオフで音が鳴らない

既知の問題 (won't fix): https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/223133

Pulseaudio のボリュームが特定のレベル以下のときに音声が流れない場合、/etc/pulse/default.paignore_dB=1 を使ってみて下さい:

/etc/pulse/default.pa
load-module module-udev-detect ignore_dB=1

ただし、ヘッドフォンや他のオーディオデバイスが接続されていないときに pulseaudio がスピーカーをアンミュートできないという他のバグが発生してしまう可能性があります。

内蔵マイクのボリュームが小さい

ノートパソコン内蔵のマイクロフォンのボリュームが小さい時は、以下を設定して見て下さい:

/etc/pulse/default.pa
set-source-volume 1 300000

クライアントが master の出力ボリュームを変えてしまう (アプリケーションを実行するとボリュームが 100% になる)

特定のアプリケーションでボリュームを変更したり、アプリケーションを実行するだけで、マスター出力ボリュームが変更されてしまう場合、pulseaudio のフラットボリュームモードが原因です。無効化する前に、KDE ユーザーは System Settings -> Application and System Notifications -> Manage NotificationsPlayer Settings タブでシステム通知のボリュームを下げて問題が解決しないか試して下さい。KMix などのボリュームミキサーアプリケーションで Event Sounds のボリュームを変更してもここでは役に立ちません。これでフラットボリュームモードが正しく機能するようになるはずですが、機能しない場合、他のアプリケーションが音声の再生時にボリュームを 100% に設定してしまいます。全く直せそうにない場合、フラットボリュームを無効化しましょう:

/etc/pulse/daemon.conf
flat-volumes = no

そして PulseAudio デーモンを再起動してください:

# pulseaudio -k
# pulseaudio --start

サスペンドから復帰した後に音が鳴らない

通常は音が鳴るのに、サスペンドから復帰すると停止する場合、次を実行して PulseAudio を"再ロード"してみてください:

$ /usr/bin/pasuspender /bin/true

これは PulseAudio を完全に終了して再起動するよりかはベターです (pulseaudio -k の後に pulseaudio --start)、なぜなら動作中のアプリケーションを破壊しないからです。

上のコマンドで修正できたら、systemd のサービスファイルを作成することでこれを自動化できます。

1. /etc/systemd/system/resume-fix-pulseaudio@.service にテンプレートのサービスファイルを作成してください:

[Unit]
Description=Fix PulseAudio after resume from suspend
After=suspend.target

[Service]
User=%I
Type=oneshot
Environment="XDG_RUNTIME_DIR=/run/user/%U"
ExecStart=/usr/bin/pasuspender /bin/true

[Install]
WantedBy=suspend.target

2. ユーザーアカウントで有効にしてください

# systemctl enable resume-fix-pulseaudio@YOUR_USERNAME_HERE.service

3. systemd をリロードしてください

# systemctl --system daemon-reload

ヘッドフォンの抜き差しと ALSA のチャンネルのミュート

ヘッドフォンを切断したり接続したときに alsamixer で間違ったチャンネルが 0% に設定されてミュートになる場合、/etc/pulse/default.pa を開いて次の行をコメントアウトすることで修正できます:

load-module module-switch-on-port-available

音量が数秒ごとに 50% にリセットされる

alsa-tools をインストールし、以下を使用します:

$ hdajackretask

使用しているポート以外は "Not Connected" に設定してください。マザーボード上の他の未使用のオーディオポートが使用済みのオーディオポートと干渉している可能性があります。 次に、必要に応じて、ブートオーバーライドを使用して、再起動の間にこの変更を保存します。バグの原因は前面の緑色のヘッドフォンである可能性があります。必要な場合は、前面のマイクをヘッドフォンに、前面の緑色のヘッドフォンを "Not Connected" にオーバーライドして、前面のマイクポートをヘッドフォンポートとして使用します。

この問題に関する詳細情報: [2]

アナログヘッドフォン/スピーカーの音量が小さい

ignore_dB=1 オプションを /etc/pulse/default.paload-module module-udev-detect 行に以前に追加した場合、削除してみてください。

メディアキーを使用して音量を変更するときの遅延

/etc/pulse/daemon.conf を編集し、enable-deferred-volume = no を設定します。これにより、ボリュームを変更するときに音割れが発生する可能性があります。その場合は、そのオプションを有効のままにして、deferred-volume-safety-margin-usecdeferred-volume-extra-delay-usec オプションを使用してください。

マイク

マイクが PulseAudio から認識されない

マイクのカードとデバイス番号を確認:

 $ arecord -l
 **** List of CAPTURE Hardware Devices ****
 card 0: PCH [HDA Intel PCH], device 0: ALC269VC Analog [ALC269VC Analog]
 Subdevices: 1/1
 Subdevice #0: subdevice #0

hw:CARD,DEVICE という表記を見て下さい。上記の場合デバイスは hw:0,0 になります。

次に、/etc/pulse/default.pa を編集して以下のように load-module 行を挿入してください (デバイスは必要に応じて置き換えてください):

  load-module module-alsa-source device=hw:0,0
  # the line above should be somewhere before the line below
 .ifexists module-udev-detect.so

最後に、pulseaudio を再起動して新しい設定を適用します:

  $ pulseaudio -k ; pulseaudio -D

全てが上手くいった場合、pavucontrol を実行したときにマイクが認識されているのがわかるはずです (Input Devices タブ)。

Pulseaudio で間違ったマイクが使われる

Pulseaudio が間違ったマイクロフォンを使っていて、Pavucontrol で Input Device を変更しても直らない場合、alsamixer を見て下さい。Pavucontrol が入力ソースを正しく設定していない可能性があります。

$ alsamixer

F6 を押してあなたの使っているサウンドカードを選択してください (例: HDA Intel)。そして F5 を押し全てのアイテムを表示します。次のアイテムを探して下さい: Input Source。上下の矢印キーで入力ソースを変更することができます。

適切なマイクロフォンが録音に使われているか確かめて下さい。

ThinkPad T400/T500/T420 でマイクが使えない

次を実行してください:

$ alsamixer -c 0

"Internal Mic" のボリュームを最大化/アンミュートします。

以下のコマンドでデバイスを確認したときにマイクやオーディオジャックが重複している場合:

$ arecord -l

pavucontrol の内部オーディオの設定を Analog Stereo Duplex にしてください。

Acer Aspire One でマイクが使えない

pavucontrol をインストールして、マイクチャンネルのリンクを解除して左のチャンネルを0にしてください。詳しくは http://getsatisfaction.com/jolicloud/topics/deaf_internal_mic_on_acer_aspire_one#reply_2108048 を参照。

マイク録音に雑音が入る

Skype, gnome-sound-recorder, arecord などでノイズが混じる場合、サウンドカードのサンプルレートが間違っています。サウンドハードウェアのサンプリング周波数を /etc/pulse/daemon.conf で設定してください。

システムのサウンドカードを確かめる (1/5)

alsa-utils と関連パッケージをインストールする必要があります:

$  arecord --list-devices
**** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC888 Analog [ALC888 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 2: ALC888 Analog [ALC888 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

サウンドカードは hw:0,0 になります。

サウンドカードのサンプリングレートを確かめる (2/5)

arecord -f dat -r 60000 -D hw:0,0 -d 5 test.wav
"Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 60000 Hz, Stereo
Warning: rate is not accurate (requested = 60000Hz, got = 96000Hz)
please, try the plug plugin

got = 96000Hz に注目してください。これが使っているカードの最大サンプリングレートになります。

サウンドカードのサンプリングレートを pulse audio に設定する (3/5)

pulseaudio のデフォルトのサンプルレート:

$ grep "default-sample-rate" /etc/pulse/daemon.conf
; default-sample-rate = 44100

44100 は無効にして 96000 に変更する必要があります:

# sed 's/; default-sample-rate = 44100/default-sample-rate = 96000/g' -i /etc/pulse/daemon.conf

pulseaudio を再起動して新しい設定を適用する (4/5)

$ pulseaudio -k
$ pulseaudio --start

最後に録音してから再生して確認する (5/5)

10秒ほど、マイクを使って何か録音してみてください。マイクロフォンがミュートになっていないことを確認してください。

$ arecord -f cd -d 10 test-mic.wav

10秒後、録音したものを再生してみましょう...

$ aplay test-mic.wav

上手くいっていれば、マイクの録音にノイズが混ざらなくなっているはずです。

考えられる別の原因

もう1つの考えられる原因は、マイクに2つのチャンネルがあるが、有効なサウンド信号を提供できるのは1つのチャンネルだけであることです。一部の情報は ここ で見つけることができます。解決策は、ステレオ入力をモノラル入力に再マップすることです:

1. 次のコマンドからソース名を見つけます。例えば alsa_input.pci-0000_00_1f.3.analog-stereo など

pacmd list-sources | grep 'name:.*input'

2. /etc/pulse/default.pa を編集し、次の行を追加します。INPUT_NAME は、上記の手順で取得した入力ソースの名前です:

load-module module-remap-source source_name=record_mono master=INPUT_NAME master_channel_map=front-left channel_map=mono
set-default-source record_mono

3. PulseAudio を再起動します:

$ pulseaudio -k
$ pulseaudio --start

これで、arecord が機能するはずです。pavucontrolRecording タブで、RecordStream from 設定を特定のアプリケーションの Remapped Built-in Audio Analog Stereo に変更する必要がある場合があります。}}

USB マイクを使用する場合

別のポート (例: 前面ではなく背面のポート) に接続してみてください。

enable-remixing = no を設定すると Steam や Skype でマイクが使えない

/etc/pulse/daemon.confenable-remixing = no を設定すると Skype や Steam など特定のアプリケーションでマイクロフォンが停止することがあります。これはアプリケーションがマイクロフォンをモノ音声のみとしてキャプチャしていて、リミキシングが無効になっているのが原因です。Pulseaudio はステレオのマイクロフォンをモノにリミックスしません。

これを修正するには Pulseaudio がリミックスするよう設定する必要があります:

1. ソースの名前を探して下さい

# pacmd list-sources

出力の例、必要な名前は太字になっています:

   index: 2
       name: <alsa_input.pci-0000_00_14.2.analog-stereo>
       driver: <module-alsa-card.c>
       flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY

2. リマップルールを /etc/pulse/default.pa に追加、前のコマンドで見つけた名前を使って下さい。ここでは例として alsa_input.pci-0000_00_14.2.analog-stereo を使います:

/etc/pulse/default.pa
### Remap microphone to mono
load-module module-remap-source master=alsa_input.pci-0000_00_14.2.analog-stereo master_channel_map=front-left,front-right channels=2 channel_map=mono,mono

3. Pulseaudio を再起動

# pulseaudio -k

マイクロフォンを使用するプログラムを終了していない場合 Pulseaudio が起動に失敗することがあります (例えばファイルを編集する前に Steam でテストした場合)、その場合はアプリケーションを終了して手動で Pulseaudio を起動してください:

# pulseaudio --start

音量の自動変更によってマイクの音がひずむ・ゆがむ・割れる

マイクのボリュームが自動的に上げられて音声が割れてしまう場合、マイクブーストを無効化することで解決します:

/usr/share/alsa-card-profile/mixer/paths/analog-input*.conf に該当する全てのファイルで、次の変更を行って下さい:

  • [Element Capture] の下の volumezero に設定してください。
  • [Element Internal Mic Boost] の下の volumezero に設定してください。
  • [Element Int Mic Boost] の下の volumezero に設定してください。
  • [Element Mic Boost] の下の volumezero に設定してください。

他にも、 [Element Headphone Mic Boost][Element Mic Boost (+20dB)] など、全てのバリエーションでも同じように設定してください。

設定後 PulseAudio を再起動してください:

# pulseaudio -k

Realtek ALC892 でマイクがパチパチ音を立てる

マイクを使用して録音中に ALC892 チップからパチパチ音が発生することがあります。Pulseaudio 設定の変更によっては、次のことが役立つ場合があります:

/etc/pulse/daemon.conf
resample-method = src-sinc-best-quality
default-sample-format = s16le
default-sample-rate = 48000

use_ucm オプションを追加します

/etc/pulse/default.pa
load-module module-udev-detect use_ucm=0 tsched=0

次に、pulseaudioを再起動します。

Azalia チップセットでマイクがパチパチ音を立てる

一部の Azalia ベースのチップでは、PulseAudio でマイクを使用して録音すると、ポップ/パチパチというノイズや歪みが発生します。これは、position_fix を適切な値に設定して snd-hda-intel モジュールをロードすることで修正できます。これにより、モジュールにさまざまな DMA ポインタ修正を使用するように指示されます。試行錯誤して、どの値が適切かを判断してください。(ソース)

新しい modprobe.d 設定を作成します。

/etc/modprobe.d/azalia-microphone.conf
options snd-hda-intel position_fix=1

position_fix の有効な値は次のとおりです:

  • 0 = Auto
  • 1 = None
  • 2 = POSBUF
  • 3 = FIFO size

次にモジュールをリロードします。

エコーテスト

マイクの設定がわからない場合は、ループバックモジュール (ソース) を有効にすることで、マイクからの入力をリアルタイムで聞くことができます:

$ pactl load-module module-loopback

モジュールは、pavucontrol プログラムの Recording タブに表示され、ソースとボリュームを設定できます。遅延は低くなければなりませんが、マイクで自分が話しているのが聞こえるので、音質を感じるには十分です。変更を永続的にするには、次の pulseaudio 設定を追加します:

/etc/pulse/default.pa
load-module module-loopback

フィードバックに注意してください! マイクがスピーカーからの出力を拾う場合に備えて、すべての音量を下げる準備をしてください。当然のことながら、このようなテストはヘッドフォンを使用して実行する方が良いです。

音質

バッファアンダーランのトラブルシューティング (音ズレ、音飛び、音割れ)

PulseAudio のサウンドサーバの新しい実装では、従来の割り込み駆動のアプローチではなくタイマーベースのオーディオスケジューリングが使用されます。

タイマーベースのスケジューリングは一部の ASLA ドライバで問題が発生する場合があります。一方、他のドライバでは、タイマーベースのスケジューリングがオンになっていないとバッファアンダーランが発生する傾向にあります。なので、あなたのシステムでどれがうまく行くか確認してください。

ノート: オーディオインターフェイスは、サンプルの小さなリングバッファから読み込みます。これにより、カーネルが時々サンプルをバッファに追加しながら、インターフェイスは継続的にサウンドを再生し続けることができます。カーネルがサンプルを十分に速く追加できずにバッファが枯渇してしまうと、インターフェイスが再生すべきものがなくなってしまいます。この時、インターフェイスは即興でオーディオを生成しますが、生成されるオーディオはメーカーやモデルによって異なります。この問題は "バッファアンダーラン" と呼ばれており、しばしば "音ズレ"、"音飛び"、"音割れ"、更には "static" (ホワイトノイズのような "サー" という音) や "distortion" (音の歪み) というふうに言われます。

タイマーベースのスケジューリングをオフにするには、/etc/pulse/default.patsched=0 を追加してください:

/etc/pulse/default.pa
load-module module-udev-detect tsched=0

そして、PulseAudio サーバを再起動してください:

$ pulseaudio -k
$ pulseaudio --start

タイマーベースのスケジューリングがデフォルトで有効化されていない場合、有効化するには逆のことをしてください。

Intel の IOMMU を使用していてバッファアンダーランが発生する場合、カーネルコマンドラインに intel_iommu=igfx_off を追加してください。

snd-hda-intel モジュールを使用する一部の Intel オーディオカードでは、vid=8086 pid=8ca0 snoop=0 オプションが必要です。これらを永続的に設定するには、以下のファイルを以下のように作成/変更してください:

/etc/modprobe.d/sound.conf
options snd-hda-intel vid=8086 pid=8ca0 snoop=0

そのようなカードは PulseAudio Broken Sound Driver ページで報告してください。

カーネルのページロックやスケジューリングの遅延によりバッファアンダーランが発生する場合、ゲーム#カーネルパラメータを調整して応答時間を安定化させる を参照してください。

ヘッドホンの使用時に雑音

タイマーベースのスケジューリングはこのような問題を引き起こす場合があります。#バッファアンダーランのトラブルシューティング (音ズレ、音飛び、音割れ) で説明されている方法でタイマーベースのスケジューリングを無効化してください。

また、ALSA のループバックのミキシングが雑音の原因である可能性もあります。

alsa-utils がインストールされていることを確認し、alsamixer を起動してください。そして、あなたのオーディオデバイスを選択し (F6 を押す)、左矢印キーで左端まで移動し、Loopback を停止してください (Enabled になっている場合は、下矢印キーで無効化してください)。これにより、オーディオの再生やマイクの録音に悪影響を与えることはないはずです (ループバックミキシングを行わない限り)。

一部のノート PC モデル (Dell XPS 13 9360 など) では、ヘッドホンが刺さっている場合に断続的なホワイトノイズが発生します。

この症状の原因としてもう一つ考えられるのは、オーディオデバイスの省電力モードです。[3] 電源管理#オーディオ の指示の通りにしている場合、その変更をもとに戻し、問題が解決しないかチェックしてください。

Pulseaudio におけるデフォルトのフラグメント数とバッファサイズを設定する

タイマーによるスケジューリングを無効化する

デフォルトでは、PulseAudio はタイマーベースのスケジューリングを使います。このモードでは、フラグメントが全て使われることはなく、default-fragments と default-fragment-size-msec パラメータは無視されます。タイマーベーススケジューリングをオフにするには /etc/pulse/default.patsched=0 を追加してください:

/etc/pulse/default.pa
load-module module-udev-detect tsched=0

オーディオデバイスのパラメータを決める

以下の手順により、PulseAudio は固定のサイズと数のオーディオフラグメントを使用するようになります。これらの設定はレイテンシと電力消費量に直接影響します。レイテンシは default-fragments * default-fragment-size-msec で決定され、割り込みレート (つまり、何らかの音が再生されていることをアプリケーションに通知する頻度) は 1000 / default-fragment-size-msec です。考慮事項としては:

  • フラグメントの合計数は、ハードウェアの許容制限以下でなければなりません。ほとんどのサウンドカードは2つ以上のフラグメントでも大丈夫ですが、一部は3つ以上を必要とします。
  • 必要数を超えるフラグメントをサウンドカードに渡すとレイテンシが増加し、電力消費量は変わらず、スケジューラの負荷も無くなりません。なので、フラグメントを増やすのは、割り込みの CPU への転送に信頼性がない場合のみに推奨されます。必要な最小フラグメント数より1つ多いフラグメントで通常は十分なはずです。
  • より大きいフラグメントをサウンドカードに渡すとレイテンシが増加しますが、電力消費量は減ります。
  • 一部のアプリケーション (ゲームや VoIP) は低レイテンシを要求し、PulseAudio がその要求を満たせない場合、バッファアンダーランが発生します。
  • レイテンシをあまりに低く設定すると、スケジューラに多くの負担がかかり、またしてもバッファアンダーランが発生します。

過度な電力消費量を気にしない場合、フラグメントサイズは 5ms で、フラグメント数は2つか3つに設定するのが合理的でしょう。

PulseAudio の設定ファイルを変更する

/etc/pulse/daemon.conf
default-fragments = 3
default-fragment-size-msec = 5

うまくいったか確認する

pulseaudio.service ユーザーユニット再起動してください。

何かアプリケーションを起動し、音を聴き、journal を調査してください。

時々バッファアンダーランが発生し、システムの高負荷と相関がありそうな場合、それはスケジューラの問題であり、レイテンシを増やす必要があります。

全てのアプリケーションから間違った速度で金属的な音が聞こえる場合、最も一般的な原因は小さすぎるフラグメントサイズ (例えば 1 ms など) です。サイズを増やしましょう。

一部 (だが全てではない) のアプリケーションでバッファアンダーランが発生する場合、アプリケーションが低レイテンシな環境を想定していること原因です。なので、アプリケーションの要求が有効になるように、フラグメントサイズを減らす必要があります。

アナログのサラウンドの環境で音が途切れる

低域効果音 (low-frequency effects, LFE) チャンネルや Subwoofer チャネルはデフォルトではリミックスされません。有効にするには以下を /etc/pulse/daemon.conf で設定する必要があります:

/etc/pulse/daemon.conf
remixing-produce-lfe = yes
remixing-consume-lfe = yes

また、LFE チャネルに適切なクロスオーバー周波数を設定することも検討してください。 クロスオーバー周波数とは、オーディオシグナルが LFE シンクに再ルーティングされる周波数です。 最適なクロスオーバー周波数は、全てのスピーカーのサイズに依ります。

/etc/pulse/daemon.conf
lfe-crossover-freq = <40-200>

音がズレる

この問題はバッファサイズが適当でないことが原因です。まず、/etc/pulse/daemon.conf ファイル内で default-fragments 変数と default-fragment-size-msec 変数がデフォルト以外の値に設定されていないことを確認してください。この問題がまだ続く場合、以下の値に設定してみてください:

/etc/pulse/daemon.conf
default-fragments = 5
default-fragment-size-msec = 2

音が歪んだり途切れる

サンプリングレートが間違っていることが原因である可能性があります。以下の設定を試してください:

/etc/pulse/daemon.conf
avoid-resampling = yes #(PA11 及びそれ以上が必要)
default-sample-rate = 48000

それから PulseAudio サーバを再起動してください。

OpenAL を使っているアプリケーションで音が途切れるような場合は、/etc/openal/alsoft.conf のサンプルレートを変更してください:

/etc/openal/alsoft.conf
frequency = 48000

PCM ボリュームを 0dB より高く設定すると音声信号にクリッピングが発生することがあります。alsamixer を実行すればボリュームが問題なのか確認でき、修正することが可能です。ALSA は PulseAudio に dB 情報を正しく伝えられないことがあります。以下の設定を試してください:

/etc/pulse/default.pa
load-module module-udev-detect ignore_dB=1

そして PulseAudio サーバーを再起動してください。#ボリュームのカットオフで音が鳴らない も参照。

ネットワーク経由でストリーミングを行うとスタッタリング

module-native-protocol-tcp を使用して Wi-Fi 経由でストリーミングを行っている場合、バッファアンダーランにより定期的なスタッタリングが発生する可能性があります。回避策として、rtp プロトコルを使用してみることができます。送信側で、rtp シンクを作成してください:

/etc/pulse/default.pa
load-module module-null-sink sink_name=rtp
load-module module-rtp-send source=rtp.monitor

そして、それに切り替えてください:

/etc/pulse/default.pa
set-default-sink rtp

受信側で、rtp モジュールをロードしてください:

/etc/pulse/default.pa
load-module module-rtp-recv

音声の再生時と停止時に破裂音

PulseAudio は非アクティブな状態が一定時間続くとシンクをサスペンドする可能性があります。これにより、可聴ノイズ (音割れ、破裂音、ひっかくような音) が発生する可能性があります。時々、ボリュームスライダーを動かしたときや、ウィンドウを閉じた時 (KDE4) などにも発生します。この挙動はデフォルトの設定ファイルで有効化されています:

/etc/pulse/default.pa
load-module module-suspend-on-idle
/etc/pulse/system.pa
load-module module-suspend-on-idle

関連するファイルでその行をコメントアウトすることでこの問題は解決します。より良い解決策は、以下を追加することです:

~/.config/pulse/default.pa
.include /etc/pulse/default.pa
.nofail
unload-module module-suspend-on-idle
.fail

一部のデバイス (例: Bose Quietcomfort 35 II) では、デバイスの音量を十分に大きく設定する (通常、物理ボタンやスライダーで) と、音声の停止時に可聴ノイズを取り除くことができます。

ハードウェアとカード

モニターの電源を切ると HDMI のサウンド出力がなくなる

モニターが HDMI/DisplayPort で接続されていて、音声端子がモニターのヘッドフォンジャックに挿入されているのに、pulseaudio が接続されていないと認識する場合:

pactl list sinks
...
hdmi-output-0: HDMI / DisplayPort (priority: 5900, not available)
...

この場合 HDMI 出力から音声は流れません。この問題の対応策は他の TTY に切り替えてから元に戻すことです。この問題は ATI/Nvidia/Intel ユーザーによって報告されています。

もしくは /etc/pulse/default.pa で switch-on-port-available モジュールをコメントアウトして無効化する方法もあります [4]:

/etc/pulse/default.pa
...
### Should be after module-*-restore but before module-*-detect
#load-module module-switch-on-port-available
...

ヘッドレスサーバーを使用すると HDMI サウンドが聞こえない

AV レシーバーでは HDMI オーディオを使用するが、ディスプレイは使用しない場合があります。HDMI には、仮想端末から取得したビデオ信号が必要です。

デフォルトでは、この信号は 600 秒後にオフになるため、オーディオシンクも失われます。

画面がブランクになるのを防ぐには、カーネルコマンドラインに consoleblank=0 を追加します。

カードが表示されない

PulseAudio が起動している場合、pacmd list を実行してください。カードが全く表示されないときは、ALSA デバイスが使われていないか確認してください:

$ fuser -v /dev/snd/*
$ fuser -v /dev/dsp

pcm や dsp ファイルを使用するアプリケーションは PulseAudio を再起動する前にシャットダウンしてください。

アプリを起動すると他のアプリの音が途切れる

一部のアプリケーション (TeamSpeak や Mumble など) が、すでに実行中のアプリケーション (Deadbeaf など) のサウンド出力を中断するという問題がある場合は、load-module module-role-cork 行をコメントアウトすることで問題を解決できます。以下に示すように、/etc/pulse/default.pa 内にあります:

/etc/pulse/default.pa
### Cork music/video streams when a phone stream is active
# load-module module-role-cork

次に、通常のユーザーアカウントを使用して、pulseaudio を再起動します。

$ pulseaudio -k
$ pulseaudio --start

"dummy output" しかデバイスが表示されない

この問題は様々な原因が考えられますが、その一つは $HOME にある .asoundrc ファイルがシステム全体の /etc/asound.conf よりも優先されてしまうということです。

このユーザーファイルは asoundconf ツールやグラフィカルな asoundconf-gtk (メニューでは "Default sound card" という名前が付けられます) が起動した時も変更が加えられます。.asoundrc が使われるのを止めるには以下のように最後の行をコメントアウトしてください:

.asoundrc
# </home/yourusername/.asoundrc.asoundconf>

特定のプログラムがオーディオデバイスを独占していまっている可能性もあります:

# fuser -v /dev/snd/*
                     USER       PID  ACCESS COMMAND
/dev/snd/controlC0:  root        931 F....  timidity
                     bob        1195 F....  panel-6-mixer
/dev/snd/controlC1:  bob        1195 F....  panel-6-mixer
                     bob        1215 F....  pulseaudio
/dev/snd/pcmC0D0p:   root        931 F...m  timidity
/dev/snd/seq:        root        931 F....  timidity
/dev/snd/timer:      root        931 f....  timidity

上記の例では timidity によって pulseaudio のオーディオデバイスへのアクセスがブロックされています。timidity を終了すればまた音が出るようになります。

他にも FluidSynth が PulseAudio と衝突することもあります。このスレッドを参照。解決方法は FluidSynth を削除することです:

# pacman -Rnsc fluidsynth

デバイスで HDMI 5/7.1 を選択できない

使用している HDMI デバイスで 5/7.1 チャンネル出力が選択できない場合、/etc/pulse/default.pa で "stream device reading" をオフにすると解決するかもしれません。

#Fallback デバイスが反映されない を見て下さい。

Failed to create sink input: sink is suspended

音声が出力されず、journalctl -b ログに sink の休止に関する多数のエラーが表示される場合、まずユーザー別の pulse フォルダをバックアップして、それから削除してみてください:

$ rm -r ~/.pulse ~/.pulse-cookie

複数のサウンドカード・デバイスの同時出力

2つの異なるデバイスに同時出力するのはとても便利です。例えば、グラフィックカードの HDMI 出力から A/V レシーバに音声を送りながら、マザーボードのオンボードオーディオのアナログ出力から同じ音声を出力するなどが考えられます。以前と比べて同時出力はずっと簡単になりました (この例では GNOME デスクトップを使います)。

paprefs を使って、"Simultaneous Output" タブから "Add virtual output device for simultaneous output on all local sound cards" を選択します。そして、GNOME の "sound settings" で作成した同時出力を選択してください。

これで動作しない場合、以下を ~/.asoundrc に追加してみてください:

pcm.dsp {
   type plug
   slave.pcm "dmix"
}

同一サウンドカード上の複数の sink への同時出力が使えない

音源が複数存在して別々の sink や出力で再生したい場合に有用です。例えば音楽を効きながらボイスチャットをするときに、音楽はスピーカー (例: Digital S/PDIF) に会話はヘッドフォン (例: アナログ) に出力したい場合などが考えられます。

pulseaudio によって自動で認識されることもありますが常にそうなるとは限りません。使用しているサウンドカードがアナログと S/PDIF に同時に出力することができるのに、pulseaudio で pavucontrol や veromix のプロファイルにオプションが存在しない場合、使用しているサウンドカードの設定ファイルを作成する必要があります。

正解にはサウンドカードのプロファイルセットを作成します。以下の手順で作成してください。

  • udev ルールを作成して pulseaudio が作成したサウンドカードの設定ファイルを使うようにする。
  • 実際に設定を作成する。

まず pulseadio の udev ルールを作成してください:

ノート:
  • 以下は Asus Xonar Essence STX の場合の例です。使用する値は udev を読んで確認してください。
  • 設定を適用するために元の pulseaudio のルールよりも低い数字を設定ファイルに付ける必要があります。
/usr/lib/udev/rules.d/90-pulseaudio-Xonar-STX.rules
ACTION=="change", SUBSYSTEM=="sound", KERNEL=="card*", \
ATTRS{subsystem_vendor}=="0x1043", ATTRS{subsystem_device}=="0x835c", ENV{PULSE_PROFILE_SET}="asus-xonar-essence-stx.conf" 

次に、設定ファイルを作成します。ただし、デフォルトの設定ファイルを使用し、名前を変更して、機能することがわかっているプロファイルをそこに追加することもできます。あまり美しくありませんが、高速です。

Asus Xonar Essence STX の複数のシンクを有効にするには、これを追加するだけです。

ノート: asus-xonar-essence-stx.conf には、default.conf のすべてのコード/マッピングも含まれています
/usr/share/pulseaudio/alsa-mixer/profile-sets/asus-xonar-essence-stx.conf
[Profile analog-stereo+iec958-stereo]
description = Analog Stereo Duplex + Digital Stereo Output
input-mappings = analog-stereo
output-mappings = analog-stereo iec958-stereo
skip-probe = yes

これにより、Asus Xonar Essence STX がデフォルトのプロファイルで自動プロファイルされ、独自のプロファイルが追加されるため、複数のシンクを使用できるようになります。

AC3 デジタル 5.1 出力で同じ機能を使用する場合は、設定ファイルに別のプロファイルを作成する必要があります。

プロファイルについては PulseAudio の記事を参照してください。

SPDIF などの一部のプロファイルは、カード上でデフォルトでは有効になっていません

IEC-958 (S/PDIF) などの一部のプロファイルは、選択したシンクでデフォルトでは有効になっていない場合があります。システムが起動するたびに、カードプロファイルは無効になり、pulseaudio デーモンはそれを選択できません。 プロファイルの選択をdefault.paファイルに追加する必要があります。 次のコマンドを使用してカードとプロファイル名を確認します:

$ pacmd list-cards

次に、設定を編集してプロファイルを追加します

~/.config/pulse/default.pa
## Replace with your card name and the profile you want to activate
set-card-profile alsa_card.pci-0000_00_1b.0 output:iec958-stereo+input:analog-stereo

Pulse audio は、このプロファイルを利用可能なプロファイルのプールに追加します

S/PDIF 出力のみ利用可能

これは、PulseAudio が間違った出力デバイスを使用している場合に発生する可能性があります。まず、適切なカードプロファイルを設定します。

$ pacmd set-card-profile alsa_card.pci-0000_00_1f.3 output:analog-stereo

または

$ pacmd set-card-profile alsa_card.pci-0000_00_1f.3 output:analog-stereo+input:analog-stereo

alsa_card.pci-0000_00_1f.3 を使用しているカードに置き換え、output:analog-stereo または output:analog-stereo+input:analog-stereo を使用しているカードに置き換えます。プロファイルを選択する場合は、必ずアナログのプロファイルを選択してください。シェルの自動補完を使用すると、非常に役立ちます。次のようにして、利用可能なカードとプロファイルを確認することもできます:

$ pacmd list-cards

次の方法でシンクポートを設定する必要がある場合もあります:

$ pacmd set-sink-port alsa_output.pci-0000_00_1f.3.analog-stereo analog-output-headphones

利用可能なシンクポートを次のコマンドで確認します:

$ pacmd list-sinks

これらの設定を保持するには、PulseAudio の設定ファイル default.pa に追加します。

~/.config/pulse/default.pa
.include /etc/pulse/default.pa

set-card-profile alsa_card.pci-0000_00_1f.3 output:analog-stereo+input:analog-stereo
set-sink-port alsa_output.pci-0000_00_1f.3.analog-stereo analog-output-headphones

USB 接続機器からのパチパチという音

PulseAudio とは関係ありませんが、カードの USB ポートから適切に電力が供給されていない、または十分な帯域幅が提供されていない可能性もあります。

ハブやドックを避けて、USB DAC をコンピュータの USB ポートに直接接続してみてください。

Bluetooth

Bluetooth サポートを無効にする

Bluetooth を使っていない場合 journal に以下のエラーが表示されることがあります:

bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.ServiceUnknown: The name org.bluez was not provided by any .service files

PulseAudio の Bluetooth サポートを無効にするには、使用している設定ファイル (~/.config/pulse/default.pa もしくは /etc/pulse/default.pa) 内の以下の行をコメントアウトしてください:

~/.config/pulse/default.pa
### Automatically load driver modules for Bluetooth hardware
#.ifexists module-bluetooth-policy.so
#load-module module-bluetooth-policy
#.endif

#.ifexists module-bluetooth-discover.so
#load-module module-bluetooth-discover
#.endif

Bluetooth ヘッドセットの再生の問題

bluetooth 接続でデータが送信されず大きな遅延が発生したり、音が鳴らないという報告をしているユーザーが確認されています。これは module-suspend-on-idle モジュールが原因です。このモジュールはアイドル状態の時に sink/source を自動的にサスペンドさせます。結果として、ヘッドセットで必要なモジュールが無効化されてしまうという問題が発生することがあります。

module-suspend-on-idle モジュールのロードを無効にするには、使っている設定ファイル (~/.config/pulse/default.pa または /etc/pulse/default.pa) の以下の行をコメントアウトしてください:

~/.config/pulse/default.pa
### Automatically suspend sinks/sources that become idle for too long
#load-module module-suspend-on-idle

そして PulseAudio を再起動して変更を適用してください。

Bluetooth や USB ヘッドセットの自動切り替え

以下を追加してください:

/etc/pulse/default.pa
# automatically switch to newly-connected devices
load-module module-switch-on-connect

Bluetooth デバイスをペアリングしても音が鳴らない

Bluetooth の記事のセクションを見て下さい

PulseAudio 2.99 と bluez 4.101 からは Socket インターフェイスを使わないようにしてください。以下の設定を使ってはいけません:

/etc/bluetooth/audio.conf
[General]
Enable=Socket

A2DP と PA 2.99 で問題が起こる場合は sbc ライブラリをインストールしてください。

アプリケーション

Audacity

Audacity の起動時にヘッドフォンから音が流れなくなることがあります。これは Audacity がヘッドフォンを録音デバイスとして認識してしまうのが原因です。この問題を解決するには、Audacity を開いて、録音デバイスを pulse:Internal Mic:0 に設定してください。

特定の状況下で、再生が途切れるようになったり、急に加速したり、フリーズすることがあります。Audacity Wiki's Linux Issues page を参照。

上記のページで提案されている解決方法で上手くいくことがあります: Audacity を起動するときに次のコマンドを使用:

$ env PULSE_LATENCY_MSEC=30 audacity

上記の方法で問題が解決しない場合、pasuspender コマンドを使うことで Audacity を実行している間だけ pulseaudio を一時的に無効化できます:

$ pasuspender -- audacity

上記のコマンドを実行したら、Audacity で ALSA の入出力を選択するようにしてください。

#Pulseaudio におけるデフォルトのフラグメント・バッファサイズを設定するも見て下さい。

OpenAL

ゲームによっては、出力デバイスを切り替えることができない場合があります。pactl を使用してシンクを移動しようとすると、次のエラーが発生します:

pactl move-sink-input 11 alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1
Failure: Invalid argument

OpenAL は、シンクの移動を許可するように設定する必要があります:

~/.alsoftrc
[pulse]
allow-moves = true

ブラウザ (firefox) が動画をロードするが、再生しない

この記事またはセクションの正確性には問題があります。
理由:
  • この解決策は、PA がインストールされていることを確認し、PA を PipeWire に置き換えるだけになっています。この問題は PA を保持したまま解決可能であるはずです。
  • この Firefox の問題はこのセクションから削除されましたが、まだ解決されていないようです。 (議論: トーク:PulseAudio/トラブルシューティング#)

pulseaudio がインストールされていることを確認してください。動画がロードされている状態で、PulseAudio を停止してください:

$ pulseaudio --kill

自動起動しない場合、PulseAudio を再起動してください:

$ pulseaudio --start

これで動画が再生されるはずです (最初は音が出ませんが)。ページを閉じない限り、他の動画を選択したり、動画を音付きで視聴したりできるはずです。pulseaudio が原因であると確認したら、pulseaudiopipewire-pulse に置き換えて、再ログインしてうまく行くかどうか確かめてください。詳細は PipeWire#PulseAudio クライアント を参照してください。

その他の問題

pavucontrol でサウンドデバイスの設定を更新できない

pavucontrol は pulseaudio を設定するための手頃な GUI ユーティリティです。'Configuration' タブから、サウンドデバイスごとに異なるプロファイルを選択することができます。例えばアナログ・ステレオ、デジタル出力 (IEC958)、HDMI 5.1 サラウンドなど。

しかしながら、カードの異なるプロファイルを選択した場合に、pulse デーモンがクラッシュし、新しい選択が「スティッキング」されない場合があるかもしれません。 この場合は、他の便利な GUI ツールである paprefs を使用して、「Simultaneous Output」タブの下で仮想同時デバイスを確認してください。 この設定がアクティブ(チェック済み)の場合、pavucontrol でカードのプロファイルを変更することを防止します。 この設定を解除して、paprefs で同時出力を再度有効にする前に、pavucontrol でプロファイルを調整してください。

Pulse が ALSA の設定を上書きする

alsa デーモンがロードされている場合でも、Pulseaudio は基本的に ALSA の設定 (例えば alsamixer の設定) を起動時に上書きします。上書きを止めさせる方法は存在しないため、pulseaudio が起動した後に alsa の設定を戻すのが対処法になります。以下のコマンドを .xinitrc.bash_profile などの autostart ファイルに追加してください:

restore_alsa() {
 while [ -z "$(pidof pulseaudio)" ]; do
  sleep 0.5
 done
 alsactl -f /var/lib/alsa/asound.state restore 
}
restore_alsa &

Pulse が再起動するのを止める

たまに Pulse を一時的に無効にしたい場合があるかもしれません。そのようなときは Pulse を終了した後に再起動しないようにする必要があります。

~/.config/pulse/client.conf
# Disable autospawning the PulseAudio daemon
autospawn = no

デーモンの起動が失敗する

PulseAudio を再設定して見て下さい:

$ rm -rf /tmp/pulse* ~/.pulse*
$ pulseaudio -k
$ pulseaudio --start

サーバーが動作していないのに PulseAudio がエラーメッセージ "User-configured server at ... refusing to start/autospawn" で起動できない場合、おそらく以前のログインでの PulseAudio の設定が問題です。pax11publish -d で X11 ルートウィンドウに古いプロパティが付けられていないか確認してください。もし古いプロパティがある場合は、サーバーを起動する前に pax11publish -r で削除してください。この手動消去は LXDM を使うときは必ず必要になります。LXDM はログアウトで X サーバーを再起動しないためです。LXDM#PulseAudio を見て下さい。

PulseAudio エラーステータスチェックユーティリティによる出力

pax11publish -d で次のようなエラーが表示される場合:

N: [pulseaudio] main.c: User-configured server at "user", refusing to start/autospawn.

次に、pax11publish -r コマンドを実行して、ログアウトして再度ログインすることもできます。

pulseaudio -vvvv コマンドで次のようなエラーが表示された場合:

E: [pulseaudio] module-udev-detect.c: You apparently ran out of inotify watches, probably because Tracker/Beagle took them all away. I wished people would do their homework first and fix inotify before using it for watching whole directory trees which is something the current inotify is certainly not useful for. Please make sure to drop the Tracker/Beagle guys a line complaining about their broken use of inotify.

これは次の方法で一時的に解決できます:

$ echo 100000 > /proc/sys/fs/inotify/max_user_watches

永続的に使用するには、99-sysctl.conf ファイルに設定を保存します。

/etc/sysctl.d/99-sysctl.conf
# Increase inotify max watchs per user
fs.inotify.max_user_watches = 100000
警告: カーネルによるメモリの消費量が大幅に増加する可能性があります。

参照

Daemon already running

システムによっては pulseaudio が複数回実行されることがあります。journalctl は次のように表示します:

[pulseaudio] pid.c: Daemon already running.

アプリケーションを自動実行する方法を一つだけに限って下さい。pulseaudio には以下のファイルが含まれています:

  • /etc/X11/xinit/xinitrc.d/pulseaudio
  • /etc/xdg/autostart/pulseaudio.desktop
  • /etc/xdg/autostart/pulseaudio-kde.desktop

xinitrc, ~/.config/autostart/ などのユーザーの自動実行ファイル・ディレクトリも確認してください。

曲が終わるとサブウーファーが止まる

既知の問題: https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/494099

これを修正するには、/etc/pulse/daemon.conf を編集して enable-lfe-remixing を有効にしてください:

/etc/pulse/daemon.conf
enable-lfe-remixing = yes

"Surround 4.0" 以外のサラウンド設定が選択できない

pavucontrol で "Analog Surround 4.0 Output" しか表示されず 5.1 サラウンド出力が設定できない場合、ALSA ミキサーを開いて出力設定を6チャンネルに変更してください。それから pulseaudio を再起動すれば、pavucontrol でもっと多くのオプションが表示されるようになります。

リアルタイムスケジューリング

rtkit が動作しない場合、PulseAudio がリアルタイムスケジューリングで動作するようにシステムを手動で設定することでパフォーマンスが改善されることがあります。これをするには、以下の行を /etc/security/limits.conf に追加してください:

@pulse-rt - rtprio 9
@pulse-rt - nice -11

その後、使用しているユーザーを pulse-rt グループに追加してください:

# gpasswd -a <user> pulse-rt

pactl "invalid option" error with negative percentage arguments

pactl コマンドに負のパーセンテージを引数としてわたすと 'invalid option' エラーが起こります。標準シェルの '--' 擬似引数を使って、負の引数の前の引数のパースを無効にしてください。例: pactl set-sink-volume 1 -- -5%

Fallback デバイスが反映されない

PulseAudio は本当のデフォルトデバイスを持っていません。代わりに新しいサウンドストリームにのみ適用される "fallback" を使用します。このため以前実行したアプリケーションは新しく設定した fallback デバイスの影響を受けません。

gnome-control-center, mate-media, paswitchAUR がこれを上手く処理できます。もしくは:

1. pavucontrol で古いストリームを手動で新しいサウンドカードに移動する。

2. Pulse を停止して、~/.pulse の "stream-volumes" を消去して Pulse を再起動する。これはアプリケーションボリュームもリセットします。

3. ストリームデバイスの読み込みを無効化する。様々なサウンドカードで様々なアプリケーションを使う場合はあまり好ましくありません。

/etc/pulse/defaults.pa
load-module module-stream-restore restore_device=false

RTP/UDP パケット flood

デフォルト設定では時としてネットワーク上に UDP パケットを大量に送信することがあります [5]。この問題を解決するには paprefs を起動して "Multicast/RTP Sender" を無効化してください [6]

新しいオーディオソースストリームが、BT ヘッドフォンではなく "空" のストリームを自動選択する

シナリオの例: KDE + Arch 上の Firefox 68.0.1 で Youtube ビデオを再起動、停止、早送りすると、PulseAudio でそれに関連付けられた "シンク" が空の状態に設定され、ラップトップのスピーカーからサウンドが出力される可能性があります。Dell 9360 では再現性に一貫性がありません。

修正するには、pulseaudio を強制終了して再起動する必要があるようです。

pulseaudio -k
pulseaudio --start