ALSA設定の微調整でUbuntu 24.04の音の歪みを修正する

Ubuntu 24.04 での音の歪みは、アプリケーション、PipeWire、WirePlumber、ALSA、カーネルドライバ、またはオーディオハードウェア自体など、複数のレイヤーで発生する可能性があります。実際的な対処法としては、まず影響を受けているデバイスを特定し、次にバッファまたはデバイスの設定を 1 つずつ変更していくことです。標準的な Ubuntu 24.04 デスクトップでは、PipeWire は ALSA の上に位置し、WirePlumber が ALSA デバイスを管理しているため、ほとんどのユーザーはシステムのデフォルトの ALSA 設定を置き換える前に、WirePlumber を介して公開されている ALSA プロパティを調整する必要があります。

Ubuntu 24.04 には当初 PipeWire 1.0.4 が同梱されていましたが、Ubuntu の現在の Noble パッケージでは、より新しい 0.5 の設定形式ではなく、WirePlumber 0.4.17 が引き続き使用されています。このバージョン情報は重要です。なぜなら、WirePlumber 0.4 では Lua の断片が の下に使用されているからです~/.config/wireplumber/main.lua.d/。現在のアップストリームのドキュメントに記載されている新しいwireplumber.conf.d構文は、WirePlumber 0.5 以降に適用されます。設定をコピーする前に、インストールされているバージョンを確認してください。

公式資料: Ubuntu 24.04 LTS リリースノート、Ubuntu の Noble アップデート用 WirePlumber パッケージ、WirePlumber 0.4 ALSA 設定リファレンス、およびALSA PCM プラグインリファレンス。

クイックリファレンス:最初に試すべきこと

症状最初の実地点検微調整の可能性
CPU負荷時にパチパチという音がする正しいシンクであることを確認し、ドロップアウトに注意してください。1024フレームまたは2048フレームなど、より大きなALSA周期サイズをテストしてください。
USB DACのうち1台のみで歪みが発生するALSA/PipeWireノードを正確に特定するそのルールは当該ノードにのみ適用し、グローバルルールは避けてください。
デバイスがアイドル状態から復帰する際のノイズ数秒間の沈黙の後、再生してくださいその特定のノードのサスペンドタイムアウトを増やすか、無効にする。
ALSAのみを使用するレガシーアプリケーションにおける問題点aplay明示的な PCMを使用してアプリをテストします/を使用してユーザー~/.asoundrcごとに設定しますplugdmix
1サンプルレートでの歪み44.1kHzと48kHzの素材をテストするサポートされているハードウェアレートを優先し、必要に応じて PipeWire にリサンプリングさせる

1. ALSAハードウェアとオーディオスタックを特定する

まず、再生デバイスの一覧を表示し、どのオーディオサーバーがアクティブになっているかを確認してください。それがスピーカーだと決めつけないでくださいhw:0,0。HDMI、USBヘッドセット、ウェブカメラ、ドッキングステーションなどは、起動のたびにカード番号が変わる可能性があります。

aplay -l
wpctl status
pactl info
wireplumber --version
pipewire --version
Ubuntuターミナルで、オンボードのアナログデバイスとHDMI再生デバイスを使用したaplay -lの出力を表示しています。

キャプション:このaplay -lリストでは、オンボードのアナログ再生デバイスとHDMIを分離することで、ALSAの調整を誤ったカードに適用してしまうことを防ぎます。

Ubuntu 24.04ではpactl info、「PulseAudio (on PipeWire)」と表示されるのは正常です。PulseAudio互換インターフェースはPipeWireによって提供されています。標準のUbuntu 24.04/Nobleでは、wireplumber --version別のビルドをインストールしていない限り、通常は0.4.xシリーズが表示されます。

2. 設定を変更する前に歪みを確認してください。

ランダムなウェブ動画から変化を判断するのではなく、再現性のあるテストを使用してください。短いWAVファイルspeaker-testや、よく知られた音楽トラックを使用すると、前後比較がより意味のあるものになります。また、アナログ出力、HDMI、Bluetooth、USBのいずれにおいても問題が均等に発生するかどうかを確認してください。影響を受ける経路が1つだけの場合は、その経路に修正を絞り込んでください。

speaker-test -c 2 -t wav
aplay /usr/share/sounds/alsa/Front_Center.wav

USB デバイスの場合、カーネルはストリーム情報を の下に公開します/proc/asound/。正確なパスはカードによって異なるため、/proc/asound/cardsカード番号を盲目的にコピーするのではなく、まずそのパスを確認してください。

UbuntuターミナルにALSA PCMストリーム情報が表示されています。これには、48000Hzのサンプリングレート、2つのチャンネル、およびS16_LEフォーマットが含まれています。

キャプション:ALSAストリーム情報からは、再生ストリームのアクティブなサンプルレート、チャンネル数、サンプルフォーマットがわかります。カード番号はハードウェアに依存します。

3. 現在のユーザー設定をバックアップする

編集を行う前に、既存のALSAまたはWirePlumberのオーバーライド設定を保持してください。/usr/shareパッケージのアップグレードによってシステムファイルが置き換えられる可能性があるため、ユーザーレベルの変更は、以下のファイルを編集するよりも安全です。

cp -a ~/.asoundrc ~/.asoundrc.backup 2>/dev/null || true
mkdir -p ~/.config/wireplumber/main.lua.d
cp -a ~/.config/wireplumber/main.lua.d ~/.config/wireplumber/main.lua.d.backup 2>/dev/null || true

以前に WirePlumber 0.5 用のガイドから設定をコピーした場合は、標準の Ubuntu 24.04 でテストする前に、その設定を削除するか、邪魔にならない場所に移動してください。WirePlumber 0.4 と 0.5 では設定形式が異なります。

4. WirePlumber 0.4 を使用して ALSA バッファの動作を調整する

Ubuntu 24.04 では、WirePlumber が ALSA を基盤とする PipeWire ノードを作成および構成するため、これは通常、ALSA レベルで最も重要な調整となります。WirePlumber のアップストリームのドキュメントでは、これをサンプルapi.alsa.period-size単位の周期サイズ、これをapi.alsa.headroomハードウェア ポインタとソフトウェア ポインタ間の追加バッファリングとして説明しています。ほとんどの USB デバイスはバッチ デバイスとして扱われ、周期サイズは割り込み周波数とバッファリング動作の両方に影響します。

ユーザールールを作成する:

nano ~/.config/wireplumber/main.lua.d/51-alsa-tuning.lua

wpctl status問題のある出力ノードのみを対象とするルールを使用します。まず、またはを使用してノード名を取得しますpw-cli list-objects Node。次に、この例を応用します。

local rule = {
  matches = {
    {
      { "node.name", "matches", "alsa_output.*" },
    },
  },
  apply_properties = {
    ["api.alsa.period-size"] = 1024,
    ["api.alsa.headroom"] = 0,
  },
}

table.insert(alsa_monitor.rules, rule)

1024を万能の魔法の値として扱わないでください。これは保守的なテストポイントです。歪みが続く場合は、512、1024、2048をそれぞれ比較してください。周期を大きくすると、一部のシステムではスケジューリングの遅延に対する許容度が向上しますが、レイテンシが増加します。周期を小さくするとレイテンシは減少しますが、割り込み頻度が増加し、負荷の高いマシンではアンダーランが発生する可能性があります。ワークロードに対して安定して動作する最小値を維持してください。

デバイスでメモリマップド I/O が壊れている場合、WirePlumber は も公開しますapi.alsa.disable-mmap。アップストリームのドキュメントでは、これは互換性フォールバックとして明示的に説明されており、読み書きアクセスが遅くなるため、歪みが mmap の動作と明らかに相関している場合を除き、有効にしないでください。

["api.alsa.disable-mmap"] = true,

デバイス固有のオプションとしては、次のものがありますsession.suspend-timeout-seconds。DACがスリープ解除されるたびにポップノイズや歪みが発生する場合は、タイムアウト時間を長くするか、0そのノードのサスペンドを無効にすることで、原因を特定できます。サスペンドを無効にするとALSAデバイスがビジー状態になるため、これはデフォルトの推奨事項ではなく、トレードオフとなります。

5. アプリケーションが実際にALSAを直接使用する場合にのみ、.asoundrcを使用してください。

ユーザーごとの設定は、~/.asoundrcPipeWire をバイパスして ALSA PCM を直接開く古いアプリケーションに役立ちます。また、固定サンプル レートやソフトウェア ミキシングの動作をテストする場合にも役立ちます。ただし、ALSA のデフォルト設定をグローバルに上書きすると、PipeWire ALSA プラグインに干渉する可能性があるため、可能な場合は を置き換えるのではなく、名前付き PCM を使用してくださいpcm.!default。

例えば、ALSAのdmixプラグインは明示的なrate、、、値をサポートしています。名前付きテストPCMは次のようになりますperiod_size。buffer_size

pcm.stable_test {
    type plug
    slave.pcm "stable_dmix"
}

pcm.stable_dmix {
    type dmix
    ipc_key 2048
    ipc_key_add_uid true
    slave {
        pcm "hw:0,0"
        rate 48000
        period_time 0
        period_size 1024
        buffer_size 4096
    }
}

hw:0,0を実際のカードとデバイスに置き換えてくださいaplay -l。その後、システムデフォルトを変更せずにテストしてください。

aplay -D stable_test /usr/share/sounds/alsa/Front_Center.wav
Ubuntu上のGNU nanoで、ハードウェアPCM、48000Hzのレート、周期サイズ1024、バッファサイズ4096のユーザー.asoundrcファイルを編集している。

キャプション:ユーザーごとに、.asoundrc制御されたテストのために固定のALSAパラメータを定義できます。直接hwターゲットを使用すると、自動フォーマット変換がバイパスされるため、慎重に使用する必要があります。

ALSAプロジェクトでは、dmixスレーブ定義で値を指定しない限り、基本構成は固定されていると指摘されています。一方、plugプラグインはフォーマットとレートの変換を実行できます。そのため、名前付きplugPCMと個別に調整されたdmixPCMを組み合わせる方が、すべてのプログラムでハードウェアを直接開くよりも実験において安全です。

6. ユーザーオーディオサービスを再起動して再テストします。

WirePlumberのルールを変更した後は、ユーザーオーディオスタックを再起動してください。その際、オーディオをアクティブに使用しているアプリケーションを先に閉じてください。

systemctl --user restart wireplumber pipewire pipewire-pulse

次に、変更前に使用したのと同じテスト素材を再度実行します。設定 > サウンドを開き、想定される出力デバイスとプロファイルが選択されていることを確認してください。

Ubuntuの設定画面のサウンドパネルで、アナログステレオ出力プロファイルで選択された内蔵スピーカーが表示されている。

キャプション:オーディオサービスを再起動した後、歪みが解消されたかどうかを判断する前に、Ubuntuが意図した出力デバイスとプロファイルを正しく選択していることを確認してください。

調整がうまくいったかどうかを判断する方法

  • 同じテストファイルを繰り返し再生しても、ノイズ、雑音、音切れ、短い音切れは一切発生しません。
  • デバイスがアイドル状態から復帰すると、歪みは再発しない。
  • 通常のデスクトップアプリケーション、ブラウザ、ビデオ通話は、想定される出力デバイスを引き続き使用します。
  • レイテンシーは、お客様の用途においては許容範囲内です。音楽再生は、ライブモニタリングやゲームよりもバッファリングが多少発生しても問題ありません。
  • ログアウトして再度ログインしたり、再起動したりした後も、修正後の状態は安定して維持されます。

ALSAの調整が適切な解決策ではない場合

症状が明らかにハードウェアのクリッピング、ケーブルの緩み、アナログ入力の過負荷、USBハブの故障、またはスピーカーの不良である場合は、バッファを増やし続けないでください。また、ミキサーのレベルも確認してくださいalsamixer。100%付近の音量でのみ発生する歪みは、スケジューリングの問題ではなく、ゲインに関連している可能性があります。

カーネルまたはファームウェアのアップデート後に問題が発生した場合は、複雑なオーディオルールを作成する前に、GRUBメニューからサポートされている別のカーネルをテストしてください。Bluetoothのみが影響を受けている場合は、ALSAの周期設定ではなく、Bluetoothコーデック/プロファイルに注目してください。HDMIのみが影響を受けている場合は、まずHDMIプロファイルとレシーバー/モニターを確認してください。

ロールバックチェックリスト

  • 削除または名前変更~/.config/wireplumber/main.lua.d/51-alsa-tuning.lua。
  • バックアップから復元する~/.asoundrcか、テスト専用ファイルを削除してください。
  • 再起動wireplumber、pipewireおよびpipewire-pulse。
  • 再度実行してwpctl status、speaker-testデフォルトの動作に戻ったことを確認してください。

結論

Ubuntu 24.04 の場合、システム全体を.asoundrc置き換えるのではなく、WirePlumber 0.4 ALSA ルールを対象を絞って適用することから始めます。正確な出力ノードを特定し、一度に 1 つのプロパティを変更し、変更のたびに同じテストオーディオを比較します。1024 などの周期サイズは妥当な診断の出発点ですが、正しい値はデバイスとワークロードによって異なります。テストで特定の動作が指摘されている場合は、予約disable-mmap、変更の中断、カスタムdmixPCM を使用してください。

コメントを残す

SLES 15マシンをSUSE Managerオフラインに登録する方法

SLES 15マシンをSUSE Managerオフラインに登録する方法

同期チャネル、ブートストラップリポジトリ、アクティベーションキー、および検証済みのSaltブートストラップワークフローを使用して、インターネットアクセスなしでSLES 15をSUSE Managerに登録します。

Ubuntu 24.04でサスペンド後にWi-Fiが切断される問題を解決する方法

Ubuntu 24.04でサスペンド後にWi-Fiが切断される問題を解決する方法

Ubuntu 24.04 でサスペンド後に Wi-Fi が切断される問題のトラブルシューティング: アップデート、無線ブロックと NetworkManager の確認、省電力テスト、ログの検査、修正の検証。

ALSA設定の微調整でUbuntu 24.04の音の歪みを修正する

ALSA設定の微調整でUbuntu 24.04の音の歪みを修正する

ALSAデバイスを診断し、WirePlumberのバッファ、サンプルレート、および直接ALSA設定を安全に調整することで、Ubuntu 24.04におけるパチパチ音、ブーンというノイズ、および歪んだ音を修正します。

セキュアブートを使用したSLES 15へのカスタムカーネルモジュールのインストール方法

セキュアブートを使用したSLES 15へのカスタムカーネルモジュールのインストール方法

カスタムSLES 15カーネルモジュールに署名する方法、MOKに証明書を登録する方法、セキュアブートでモジュールをロードする方法、結果を検証する方法、およびカーネルのアップデートを処理する方法を学びます。

SLES 15 KVM仮想化設定およびVM自動起動ガイド

SLES 15 KVM仮想化設定およびVM自動起動ガイド

SLES 15 上に KVM をセットアップし、libvirt のネットワークとストレージを設定し、仮想マシンを作成し、自動起動を有効にし、ホストの再起動後に確実に起動することを確認します。

How to Configure a WireGuard Point-to-Site VPN Server on Debian 12

How to Configure a WireGuard Point-to-Site VPN Server on Debian 12

Configure a WireGuard point-to-site VPN on Debian 12 with wg-quick, IPv4 forwarding, nftables NAT, client profiles, systemd startup, and verification.

How to Harden SLES 15 for STIG Compliance: A Safe OpenSCAP Workflow

How to Harden SLES 15 for STIG Compliance: A Safe OpenSCAP Workflow

Audit SLES 15 against the current DISA STIG, review OpenSCAP findings, test remediations, and document exceptions before production rollout.

SUSE Linux Enterprise Server で SAP HANA のメモリ制限を設定する方法

SUSE Linux Enterprise Server で SAP HANA のメモリ制限を設定する方法

SUSE Linux Enterprise Server 上で SAP HANA のグローバルおよびステートメントメモリ制限を設定する方法、HANA の制限を SUSE MemoryLow と比較する方法、そして各変更を安全に検証する方法を学びましょう。

Gooroom OSのブラウザ分離設定を安全に設定する方法

Gooroom OSのブラウザ分離設定を安全に設定する方法

Gooroom OSのブラウザ分離の仕組みを学び、信頼できるURLとブロックされたURLのポリシーを準備し、GPMSの設定を調整し、構築したシステムの設定を確認します。

Harmonica OSのシステム要件と互換性ガイド(旧型ノートパソコン向け)

Harmonica OSのシステム要件と互換性ガイド(旧型ノートパソコン向け)

インストール前に、HamoniKR 8.0のシステム要件、Lite版とフルエディションの要件、および古い64ビットノートパソコンとの互換性に関する実用的チェックを確認してください。