Kona Linux 環境で Spotify など PulseAudio 経由のアプリを再生するとき、初期設定のままだと音声出力が安定重視になり、Diretta ターゲット側の性能を十分に活かせないことがある
今回は、PulseAudio のビット深度とバッファ設定を見直しDiretta 環境に合わせて最適化する手順を整理する
・ビット深度の拡張(16bit → 32bit)
・バッファサイズの短縮(25ms 付近 → 低レイテンシ設定)
安定性を保ちつつ、ハードウェアの性能をより素直に引き出すことを目的とする
※ 自分の設定では、このようになっていた
・ビット深度: s16le(16bit)
・バッファサイズ: 25ms(44.1kHz 換算で 1102 サンプル相当)
・リサンプル精度: speex-float-5
これらは汎用用途向けの無難な設定だが、Diretta 環境では余裕を残したまま動作している状態とも言える
・対象ファイル:/etc/kona/diretta/syncalsa_setting.inf
・変更箇所:periodSizeMin=960 → 768
・バッファを細かくしてレイテンシを抑える
・高精度なリサンプル方式を使う
・不要な変換をできるだけ避ける
・確認コマンド
16bit ではなく 32bit で処理されることで、DAC 側の演算精度を落とさずに済む
・レイテンシ
period_size が大きいと遅延が増える
220 サンプルは 44.1kHz で約 5ms に相当する
・リサンプラー
soxr-vhq は高精度な方式で、標準設定より丁寧な処理が行われる
・format: S32_LE
・period_size の短縮
・buffer_size の縮小
が成立していることを目視で確認できた
設定前
設定後
今回は、PulseAudio のビット深度とバッファ設定を見直しDiretta 環境に合わせて最適化する手順を整理する
1. 概要
Kona Linux において、Spotify などのアプリケーションが使用する PulseAudio の出力設定を、Diretta ターゲットの特性に合わせて調整する・ビット深度の拡張(16bit → 32bit)
・バッファサイズの短縮(25ms 付近 → 低レイテンシ設定)
安定性を保ちつつ、ハードウェアの性能をより素直に引き出すことを目的とする
2. デフォルト設定の課題
Kona Linux の標準的な ~/.config/pulse/daemon.conf では、次のような設定が一般的である※ 自分の設定では、このようになっていた
・ビット深度: s16le(16bit)
・バッファサイズ: 25ms(44.1kHz 換算で 1102 サンプル相当)
・リサンプル精度: speex-float-5
これらは汎用用途向けの無難な設定だが、Diretta 環境では余裕を残したまま動作している状態とも言える
3. 設定変更の手順
実施にあたっての注意点
本設定を適用する前に、以下の条件を満たしているか確認が必要です
カード番号(Index)の固定
Linux では起動のたびにオーディオデバイスの番号(card0, card1...)が入替わることがあります
本設定は、Diretta ターゲットが card 0 として認識・固定されていることを前提としています
デバイスの競合
PC に複数のオーディオデバイス(オンボードサウンド、HDMI 音声、複数の USB-DAC など)が認識されている場合、PulseAudio が意図しないデバイスに出力を振り分けてしまう可能性があります
BIOS で不要なオーディオ機能を無効化するか、OS 側でデバイスを card 0 に固定する設定を事前に行ってください
本設定を適用する前に、以下の条件を満たしているか確認が必要です
カード番号(Index)の固定
Linux では起動のたびにオーディオデバイスの番号(card0, card1...)が入替わることがあります
本設定は、Diretta ターゲットが card 0 として認識・固定されていることを前提としています
デバイスの競合
PC に複数のオーディオデバイス(オンボードサウンド、HDMI 音声、複数の USB-DAC など)が認識されている場合、PulseAudio が意図しないデバイスに出力を振り分けてしまう可能性があります
BIOS で不要なオーディオ機能を無効化するか、OS 側でデバイスを card 0 に固定する設定を事前に行ってください
3-1. ALSA 最小バッファ制限の緩和(Diretta ターゲット側)
まず Diretta ターゲット側の ALSA 設定を変更し、PulseAudio からの低レイテンシ要求を受け入れられるようにする・対象ファイル:/etc/kona/diretta/syncalsa_setting.inf
・変更箇所:periodSizeMin=960 → 768
3-2. PulseAudio 設定の刷新(Host 側)
~/.config/pulse/daemon.conf の内容を、32bit 伝送と低レイテンシを意識した設定へ書き換えるdefault-sample-format = s32le default-sample-rate = 44100 alternate-sample-rate = 48000 resample-method = soxr-vhq default-fragments = 2 default-fragment-size-msec = 10 avoid-resampling = yes・32bit 出力に対応させる
・バッファを細かくしてレイテンシを抑える
・高精度なリサンプル方式を使う
・不要な変換をできるだけ避ける
3-3. 設定反映のための PulseAudio 再起動
設定を保存しただけでは PulseAudio に反映されないため、端末から再起動を行うsystemctl --user restart pulseaudio※ もしエラーが出る場合は、次のコマンドでも再起動が可能
pulseaudio -k
4. 設定反映後の動作検証
Spotify 再生中に ALSA のハードウェアパラメータを確認し、設定が反映されているかを見る・確認コマンド
cat /proc/asound/card*/pcm0p/sub0/hw_params・実行結果例
access: RW_INTERLEAVED format: S32_LE subformat: STD channels: 2 rate: 44100 (44100/1) period_size: 220 buffer_size: 882format が S32_LE になっていれば、PulseAudio から DAC までの経路で 32bit 伝送が成立している
5. 技術的考察
・ビット深度16bit ではなく 32bit で処理されることで、DAC 側の演算精度を落とさずに済む
・レイテンシ
period_size が大きいと遅延が増える
220 サンプルは 44.1kHz で約 5ms に相当する
・リサンプラー
soxr-vhq は高精度な方式で、標準設定より丁寧な処理が行われる
補足:DirettaRenderer への影響について
本設定は PulseAudio を経由するアプリケーション(Spotify、ブラウザなど)にのみ適用されるDirettaRenderer 等の UPnP 再生時は、PulseAudio を介さず直接 ALSA へデータを送るため、この設定変更による影響は受けない
6. 結論
今回の設定変更により、PulseAudio 経由の音声出力は Diretta 環境に合わせた形で動作するようになった その結果は hw_params の数値として確認でき・format: S32_LE
・period_size の短縮
・buffer_size の縮小
が成立していることを目視で確認できた
設定前
設定後
コメント