Tauon Music Boxのオーディオ設定で再サンプリングを避けるにチェックを入れると、以下のようなダイアログが表示される。
Tip: To get samplerate to DAC you may need to check some settings, see: https://github.com/Taiko2k/Tauon/wiki/Audio-Specs

この記事の大部分は、ちょっと高音質で聴きたいな、と思ったニワカが適当にググって調べて実行したものなの。また、以下のブログからの引用、実行なので、以降はこちらを見ていただいても良い。
- PipeWire - ArchWiki
- PulseAudio から PipeWire に切り替える方法
- Void LinuxのオーディオサーバーをPulseAudioからPireWireに切り替えてみた | クロの思考ノート
- LinuxにDolbyクラスの高音質を。|十円玉ドットコム
やり方、結果から導かれる考えの信憑性は生成AI以下なので注意。
過去(適当な記憶。今から2010年あたり?)
これまで、何度かLinux環境でのハイレゾ1再生と高音質のためには、 リアルタイムカーネルとか JACK Audio Connection Kitの設定とかやってみたことはある。
リアルタイムカーネルは、ただ適当に使っている私にはカーネルが変わったところでどうこうはないけど、やはりディストリビューションによってはリアルタイムカーネルが見つからなかたり、アップデートでコケたりすることがあったので無理に入れなくなった。
また、jack
といったサウンドサーバーに変えると、bluetoothでは再生できなかったり、対応しているアプリがあったりなかったり、ラッパーとかあるんだけど、それまでの
PulseAudioのシームレスさと比べると煩雑で止めてしまった。
現在(2025年のにわかな知識)
Linuxカーネルのリアルタイム化は
「リアルタイムLinux」がメインラインカーネルに完全統合–20年に及ぶ開発を振り返る - ZDNET Japanから引用すると
「リアルタイムLinux」(「PREEMPT_RT」)がついに、ようやくメインラインカーネルに統合された。
リアルタイムLinuxのコードは、次の「Linux 6.12」カーネル以降、すべてのLinuxディストリビューションに組み込まれる。
とあるので、もう気にする必要はない。
先程の リアルタイムカーネルのリンク先でも
Linuxカーネルをリアルタイム化するための最後の拡張機能が、カーネル v6.12にて取り込まれました。リアルタイム(RT)カーネルには応答性をあげるための仕組みがいくつかありますが、それらは通常のカーネルにおいてもデフォルトで有効化されている
とある。
サウンドサーバーも今やマルチメディア フレームワークである PipeWireが普及して、PulseAudio、JACK、ALSA、GStreamer アプリケーションをシームレスにサポートしてくれるようになっている。
環境確認
カーネルバージョン
カーネルバージョンはuname -r
で確認できる。ちなみに自分が使っているの
Pop!_OS、まとめて取得したいならneofetch
の後継アプリfastfetch
のほうが情報は多い。
$ uname -r
6.12.10-76061203-generic
$ fastfetch
///////////// arimasou16@pop-os
///////////////////// -----------------
///////*767//////////////// OS: Pop!_OS 22.04 LTS x86_64
//////7676767676*////////////// Host: S5
/////76767//7676767////////////// Kernel: Linux 6.12.10-76061203-generic
/////767676///*76767/////////////// Uptime: 11 hours, 55 mins
///////767676///76767.///7676*/////// Packages: 2380 (dpkg), 6 (flatpak-system), 89 (flatpak-user)
/////////767676//76767///767676//////// Shell: zsh 5.8.1
//////////76767676767////76767///////// Display (DELL S2721QS): 3840x2160 @ 60 Hz in 27" [External] *
///////////76767676//////7676////////// Display (GSM5AB8): 3840x2160 @ 60 Hz in 22" [External]
////////////,7676,///////767/////////// DE: GNOME 42.9
/////////////*7676///////76//////////// WM: Mutter (X11)
///////////////7676//////////////////// WM Theme: Pop
///////////////7676///767//////////// Theme: Pop [GTK2/3/4]
//////////////////////'//////////// Icons: Pop [GTK2/3/4]
//////.7676767676767676767,////// Font: Noto Sans (10pt) [GTK2/3/4]
/////767676767676767676767///// Cursor: Pop (24px)
/////////////////////////// Terminal: tilix 1.9.4
///////////////////// Terminal Font: PlemolJP Console NF (16pt)
///////////// CPU: AMD Ryzen 5 5500U (12) @ 4.06 GHz
GPU: AMD Lucienne [Integrated]
Memory: 13.39 GiB / 28.29 GiB (47%)
Swap: 512.00 KiB / 20.00 GiB (0%)
Disk (/): 236.30 GiB / 459.52 GiB (51%) - ext4
Disk (/mnt/hdd1): 1.92 TiB / 5.46 TiB (35%) - ntfs3
Disk (/mnt/hdd2): 6.30 TiB / 7.28 TiB (87%) - ntfs3
Disk (/recovery): 2.87 GiB / 3.99 GiB (72%) - vfat
Local IP (wlo1): 192.168.0.163/24
Locale: ja_JP.UTF-8
PipeWire動作確認
-
インストール確認
pactl info
サーバー名 に
PulseAudio (on PipeWire
となっているか見る。なっていればインストール済み。 -
起動確認
wpctl status
デバイスやクライアントが認識されているか
-
上記で十分だと思うが、サービススタースの確認
systemctl --user status pipewire.service pipewire-pulse.socket wireplumber.service
それぞれ
active (running)
になっているか
pactl info
実行結果
$ pactl info
サーバー文字列: /run/user/1000/pulse/native
ライブラリプロトコルバージョン: 35
サーバープロトコルバージョン: 35
Is ローカル: はい
クライアントインデックス: 484
タイルサイズ: 65472
ユーザー名: arimasou16
ホスト名: pop-os
サーバー名: PulseAudio (on PipeWire 1.0.3)
サーバーバージョン: 15.0.0
デフォルトサンプル仕様: float32le 2ch 48000Hz
デフォルトチャンネルマップ: front-left,front-right
デフォルトシンク: alsa_output.usb-Feixiang_USB_HIFI_Audio-01.iec958-stereo
デフォルトソース: alsa_input.usb-Ruision_UVC_Camera_20200416-02.mono-fallback
クッキー: aa7a:4152
サンプルレート設定変更後はデフォルトサンプル仕様: float32le 2ch 96000Hz
となる。
wpctl status
実行結果
$ wpctl status
PipeWire 'pipewire-0' [1.0.3, arimasou16@pop-os, cookie:2860138834]
└─ Clients:
31. WirePlumber [1.0.3, arimasou16@pop-os, pid:3061]
32. WirePlumber [export] [1.0.3, arimasou16@pop-os, pid:3061]
35. pipewire [1.0.3, arimasou16@pop-os, pid:3062]
85. xdg-desktop-portal [1.0.3, arimasou16@pop-os, pid:3587]
86. GNOME Volume Control Media Keys [1.0.3, arimasou16@pop-os, pid:3886]
87. GSConnect [1.0.3, arimasou16@pop-os, pid:4075]
88. GNOME Shell Volume Control [1.0.3, arimasou16@pop-os, pid:3687]
89. Chromium input [1.0.3, arimasou16@pop-os, pid:5229]
90. system76-scheduler [1.0.3, root@pop-os, pid:1437]
91. Mutter [1.0.3, arimasou16@pop-os, pid:3687]
92. Firefox [1.0.3, arimasou16@pop-os, pid:6898]
93. speech-dispatcher-dummy [1.0.3, arimasou16@pop-os, pid:8681]
94. Thunderbird [1.0.3, arimasou16@pop-os, pid:17809]
95. Firefox [1.0.3, arimasou16@pop-os, pid:6898]
112. wpctl [1.0.3, arimasou16@pop-os, pid:64806]
Audio
├─ Devices:
│ 45. USB HIFI Audio [alsa]
│ 46. UVC Camera [alsa]
│ 47. Renoir Radeon High Definition Audio Controller [alsa]
│ 48. Family 17h (Models 10h-1fh) HD Audio Controller [alsa]
│
├─ Sinks:
│ 36. Family 17h (Models 10h-1fh) HD Audio Controller Line Output + Second Line Output + Headphones [vol: 0.59]
│ * 49. USB HIFI Audio デジタルステレオ (IEC958) [vol: 0.53]
│ 52. Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 4 Output [vol: 1.00]
│ 53. Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 3 Output [vol: 1.00]
│ 54. Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 2 Output [vol: 0.31]
│ 55. Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 1 Output [vol: 0.98]
│
├─ Sink endpoints:
│
├─ Sources:
│ 39. Family 17h (Models 10h-1fh) HD Audio Controller Digital Microphone [vol: 1.00]
│ 41. Family 17h (Models 10h-1fh) HD Audio Controller Front Stereo Microphone + Headphones Stereo Microphone [vol: 1.00]
│ 50. USB HIFI Audio アナログステレオ [vol: 1.00]
│ * 51. UVC Camera モノ [vol: 1.00]
│
├─ Source endpoints:
│
└─ Streams:
98. speech-dispatcher-dummy
99. output_FL > USB HIFI Audio:playback_FL [active]
100. output_FR > USB HIFI Audio:playback_FR [active]
Video
├─ Devices:
│
├─ Sinks:
│
├─ Sink endpoints:
│
├─ Sources:
│
├─ Source endpoints:
│
└─ Streams:
Settings
└─ Default Configured Node Names:
0. Audio/Sink bluez_output.00_23_13_02_1F_28.1
1. Audio/Source alsa_input.usb-Ruision_UVC_Camera_20200416-02.mono-fallback
systemctl --user status pipewire.service pipewire-pulse.socket wireplumber.service
実行結果
$ systemctl --user status pipewire.service pipewire-pulse.socket wireplumber.service
● pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-04-16 20:58:05 JST; 12h ago
TriggeredBy: ● pipewire.socket
Main PID: 2862 (pipewire)
Tasks: 3 (limit: 34560)
Memory: 12.2M
CPU: 58.580s
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
└─2862 /usr/bin/pipewire
4月 16 20:58:05 pop-os systemd[2847]: Started PipeWire Multimedia Service.
● pipewire-pulse.socket - PipeWire PulseAudio
Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.socket; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-04-16 20:58:05 JST; 12h ago
Triggers: ● pipewire-pulse.service
Listen: /run/user/1000/pulse/native (Stream)
CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/pipewire-pulse.socket
4月 16 20:58:05 pop-os systemd[2847]: Listening on PipeWire PulseAudio.
● wireplumber.service - Multimedia Service Session Manager
Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-04-16 20:58:05 JST; 12h ago
Main PID: 2866 (wireplumber)
Tasks: 5 (limit: 34560)
Memory: 6.5M
CPU: 888ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
└─2866 /usr/bin/wireplumber
### サンプルレート確認
DACでサポートされているサンプルレートを取得するgrep -E 'Codec|Audio Output|rates' /proc/asound/card*/codec#*
。
$ grep -E 'Codec|Audio Output|rates' /proc/asound/card*/codec#*
/proc/asound/card0/codec#0:Codec: ATI R6xx HDMI
・・・省略・・・
/proc/asound/card2/codec#0:Node 0x25 [Audio Output] wcaps 0x41d: Stereo Amp-Out
/proc/asound/card2/codec#0: rates [0x560]: 44100 48000 96000 192000
現在、使用されているサンプルレートを確認するgrep rate: /proc/asound/card?/pcm??/sub?/hw_params
。
$ grep rate: /proc/asound/card?/pcm??/sub?/hw_params
/proc/asound/card1/pcm0p/sub0/hw_params:rate: 44100 (44100/1)
PipeWireサーバー上で動作しているノードとデバイスの統計情報をリアルタイムに表示するpw-top
。
pw-top
S ID QUANT RATE WAIT BUSY W/Q B/Q ERR FORMAT NAME
S 28 0 0 --- --- --- --- 0 Dummy-Driver
S 29 0 0 --- --- --- --- 0 Freewheel-Driver
S 42 0 0 --- --- --- --- 0 Midi-Bridge
R 49 512 44100 83.5us 12.5us 0.01 0.00 0 S24LE 2 44100 alsa_output.usb-Feixiang_USB_HIFI_Audio-01.iec958-stereo
R 98 941 44100 50.1us 21.4us 0.00 0.00 4 S16LE 1 44100 + speech-dispatcher-dummy
S 50 0 0 --- --- --- --- 0 alsa_input.usb-Feixiang_USB_HIFI_Audio-01.analog-stereo
S 51 0 0 --- --- --- --- 0 alsa_input.usb-Ruision_UVC_Camera_20200416-02.mono-fallback
S 52 0 0 --- --- --- --- 0 alsa_output.pci-0000_04_00.1.HiFi__hw_Generic_9__sink
S 53 0 0 --- --- --- --- 0 alsa_output.pci-0000_04_00.1.HiFi__hw_Generic_8__sink
S 54 0 0 --- --- --- --- 0 alsa_output.pci-0000_04_00.1.HiFi__hw_Generic_7__sink
S 55 0 0 --- --- --- --- 0 alsa_output.pci-0000_04_00.1.HiFi__hw_Generic_3__sink
S 36 0 0 --- --- --- --- 0 alsa_output.pci-0000_04_00.6.HiFi__hw_Generic_1__sink
S 41 0 0 --- --- --- --- 0 alsa_input.pci-0000_04_00.6.HiFi__hw_Generic_1__source
S 39 0 0 --- --- --- --- 0 alsa_input.pci-0000_04_00.6.HiFi__hw_acp__source
サンプルレートを高音質化する(ArchWiki)
PipeWire - ArchWikiだと1ファイルだけ変えれば変更されるとあるが、実際その通りとなった。
~/.config/pipewire/pipewire.conf
- #default.clock.rate = 48000
- #default.clock.allowed-rates = [ 48000 ]
+ default.clock.rate = 96000
+ default.clock.allowed-rates = [ 96000, 48000 ]
変更したら、systemctl --user restart pipewire.service pipewire-pulse.socket wireplumber.service
Sound quality (resampling quality) の項目で、違いが良く分からない音質(リサンプリング品質)の変更があるが、そもそもサンプルレートの変更でも違いが分からない上に変にCPUの負荷を上げるようなことはしたくなかったので、以下の設定は止めた。
~/.config/pipewire/client.conf.d ディレクトリとファイルは存在しなかったので新規作成。
~/.config/pipewire/client.conf.d/resample.conf
stream.properties = {
resample.quality = 14
}
LinuxにDolbyクラスの高音質を。
このサイトでの B.1.Pipewire + Pipewire-pulseの場合の設定。 を参考に以下の設定も行なったが、結局違いや、grep rate: /proc/asound/card?/pcm??/sub?/hw_params
での結果から違いはなかったので、この変更も止めた。
設定の意味や違いが分かる人はトライしてほしい。
~/.config/pipewire/pipewire.conf
## Properties for the DSP configuration.
- #default.clock.rate = 48000
- #default.clock.allowed-rates = [ 48000 ]
- #default.clock.quantum = 1024
- default.clock.min-quantum = 16
- #default.clock.max-quantum = 2048
- #default.clock.quantum-limit = 8192
+ default.clock.rate = 96000
+ default.clock.allowed-rates = [ 192000, 96000, 48000 ]
+ default.clock.quantum = 1024
+ default.clock.min-quantum = 32
+ default.clock.max-quantum = 8192
+ default.clock.quantum-limit = 8192
・・・中略・・・
context.exec = [
#{ path = <program-name> [ args = "<arguments>" ] }
#
# Execute the given program with arguments.
#
# You can optionally start the session manager here,
# but it is better to start it as a systemd service.
# Run the session manager with -h for options.
#
#{ path = "/usr/bin/pipewire-media-session" args = "" }
#
# You can optionally start the pulseaudio-server here as well
# but it is better to start it as a systemd service.
# It can be interesting to start another daemon here that listens
# on another address with the -a option (eg. -a tcp:4713).
#
#{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }
+ { path = "pactl" args = "load-module module-always-sink" }
]
~/.config/pipewire/pipewire-pulse.conf
- #pulse.default.frag = 96000/48000 # 2 seconds
- #pulse.default.tlength = 96000/48000 # 2 seconds
- #pulse.min.quantum = 256/48000 # 5ms
- #pulse.default.format = F32
- #pulse.default.position = [ FL FR ]
+ pulse.default.frag = 192000/48000 # 2 seconds
+ pulse.default.tlength = 192000/48000 # 2 seconds
+ #pulse.min.quantum = 256/48000 # 5ms
+ pulse.default.format = F32
+ pulse.default.position = [ FL FR ]
~/.config/pipewire/pipewire.conf.d/20-virtual-pipe-source.conf ファイルは存在しなかったので新規作成。
~/.config/pipewire/pipewire.conf.d/20-virtual-pipe-source.conf
context.modules = [
{ name = libpipewire-module-pipe-tunnel
args = {
tunnel.mode = source
pipe.filename = "/tmp/virtualdevice"
audio.format = F32LE
audio.rate = 192000
audio.channels = 2
audio.position = [ FL FR ]
stream.props = {
node.name = VirtualMic
}
}
}
]
結果
~/.config/pipewire/pipewire.conf のdefault.clock.rate
、default.clock.allowed-rates
を変更した結果の話。
grep rate: /proc/asound/card?/pcm??/sub?/hw_params
で確認していくと、Tauon Music Boxや
Feishinで再生していると96kHzになる。FirefoxのYoutubeだと48kHzで表示される。
default.clock.rate
はデフォルトだから48kHz(もしくはコメントアウトしたまま)にして、default.clock.allowed-rates
にCDより上の数値があれば良いのかと思いきや、96kHzハイレゾの曲を再生しても48kHzのままなのでdefault.clock.rate
は96kHzとした。
Feishinの再生設定には、以下のような項目がある。
サンプルレート 設定とメディアのサンプル周波数が異なる場合に使用する出力サンプルレートを選択します

そこが48kHzのままでも、曲のサンプレートに関係なく96kHzで表示される。
mpvだけが、44.1kHz
、48kHz
、96kHz
と曲のサンプルレートごとに表示された。
オーディオサーバーやアプリでの制御とか絡み合うので複雑なんだろう。またgrep rate: /proc/asound/card?/pcm??/sub?/hw_params
の確認・表示の意味もよく判ってない。
で、肝心の高音質したのかどうか…いや全く違いが分からない…そもそも 自分の耳がハイレゾ対応かどうかABX Comparatorで判定するで違いが分からなかったのだから当たり前だ。
それに、以下の動画を見て、もうflacもハイレゾではなくロスレスを購入しているので、正直、サンプルレートだビットがどうとか、実はどうでもいい。
- (200) 【解説】ハイレゾ音源は本当に超高音質なのか? CDとの徹底比較で解説してみた 〜ハイレゾの楽しみ その1〜 - YouTube
- (200) ハイレゾは本当に音が良いのか - YouTube
- 【オーディオ】ハイレゾよりずっと重要な重低音
サブウーファーでのスピーカー増設が一番聴覚上違いがあった(当たり前だが)。恐らくサンプルレートの変更よりもオーディオサーバーの変更jack
とかの方が聴覚上の違いはありそうだ。
追記 2025-04-18
とか思ったら、互換ライブラリはインストール済みだった。純正?のものとどれだけの違いがあるのか分からないが、もうやるべきことはやった、という感じだ。
$ sudo apt search pipewire-jack
Identified face as arimasou16
Identified face as arimasou16
ソート中... 完了
全文検索... 完了
pipewire-audio-client-libraries/jammy,jammy,now 1.0.2~1707732619~22.04~b8b871b all [インストール済み]
transitional package for pipewire-alsa and pipewire-jack
pipewire-jack/jammy,now 1.0.2~1707732619~22.04~b8b871b amd64 [インストール済み、自動]
PipeWire JACK plugin
追記ここまで
-
ここでのハイレゾとは、
44.1kHz/24bit
量子化ビット数がCDスペックより高いか96kHz /16bit
サンプリング周波数がCDスペックより高いを定義している。 一般社団法人 日本オーディオ協会 | ハイレゾ | ハイレゾロゴ | 定義と運用 ↩︎