ハイレゾ音源が聞けるか!?Ubuntu(Lubuntu)でPulseAudioの音質が良くなるかも知れない設定をしてみた。他のLinuxディストリでも
先日、KonaLinux 4.0 blackjackエディションを試して、音質にこだわる人たちの存在とその取り組みを身近に感じた。
JACKやALSAと比べてPulseAudioの音質に関する評判が悪いことも知った。
細かいところはまだ足りないのかも知れないが、調べてみた所、評判が悪いものは古いバージョンのもので、音が途切れるとかノイズが入ると言ったものだった。
しかし、現在の、例えばUbuntu 16.04にインストールされるバージョン8.0ではそんな不具合はほとんど無いのではないかと思う。
インストールしたマシンのパワーやサウンドカードにもよるだろうが。
また出力先としてUSB-DACなど専用のものを使っていないのなら、KonaLinuxとUbuntuの音質の差というのはハードウェアの性能の善し悪しで相殺されてしまう程度のものかも知れない。
それでも、確かにKonaLinuxのJACKで聞くよりも、Ubuntu(Lubuntu)のPulseAudioで聞くともやっとしたくぐもった音になっている感じはした。
PulseAudioでも音声の品質を少しでも上げられないものかと思い、調べてみた。
How To: Enable High Quality Audio in Linux – r3dux.org
PulseAudio/トラブルシューティング - ArchWiki
このあたりを見て、変更してみた。
管理者権限で/etc/pulse/daemon.confを開く。
; resample-method = speex-float-1
; default-sample-format = s16le
; default-sample-rate = 44100
この値がデフォルトで、その場合は設定が必要ないのでコメントアウトされている。
サンプリングレートなどの意味についてはここを参考にした。
【牧野良幸のハイレゾのすゝめ】第1回 ハイレゾとは? bitとkHzの話 | Hi-Res Recopal -ハイレゾレコパル-
「牧野良幸のハイレゾのすゝめ」はこの他にもファイル形式などの解説があって勉強になる。
これを書き換える。
コメントアウトされているものを書き換えると元の値がわからなくなるのでコピーしてその下に新たな値を書いて変更すると良いと思う。
上の項目についてそれぞれ以下の値にしてみた。
resample-method = src-sinc-medium-quality
default-sample-format = s32le
default-sample-rate = 96000
2017/10/22 追記
96000にしてみたところ、PCでの使用は問題ないが、HDMIでテレビに音声出力したところ音が出なくなった。
48000に変更したら問題なく出力できた。
元々、対応していなかったのかも知れない。
追記終わり
/etc/pulse/daemon.confを保存して
pulseaudio -k
として一度PulseAudioを終了する。
Ubuntuでは通常、音が出るアプリケーションが起動している場合には自動的にPulseAudioは再起動されるようだ。
もし駄目なら
pulseaudio --start
をして再起動する。
これでうまくいったかと思っていたのだが、そうではなかった。
別の問題についてログを調べていたらその中に
pulseaudio[2230]: [pulseaudio] resampler.c: Support for resampler 'src-sinc-medium-quality' not compiled in, reverting to 'auto'.
というメッセージを発見した。
どうもresample-methodの設定に失敗しているようなのである。
pulseaudio --dump-resample-methods
で使えるリサンプル・メソッドの一覧が表示される。
trivial
speex-float-0
speex-float-1
speex-float-2
speex-float-3
speex-float-4
speex-float-5
speex-float-6
speex-float-7
speex-float-8
speex-float-9
speex-float-10
speex-fixed-0
speex-fixed-1
speex-fixed-2
speex-fixed-3
speex-fixed-4
speex-fixed-5
speex-fixed-6
speex-fixed-7
speex-fixed-8
speex-fixed-9
speex-fixed-10
ffmpeg
auto
copy
peaks
なんとsrc-sinc-medium-qualityもsrc-sinc-best-qualityもない。
Ubuntu Manpage: pulse-daemon.conf - PulseAudio daemon configuration file
16.04のバージョン8.0だけでなく17.04で提供されているバージョン9.0のマニュアルにも使えるようなことが書かれているのにである。
これについて調べてみたらそのものズバリの記事があった。
ArchLinuxだけでなくUbuntuでもそうなっているようだ。
記事を翻訳しながら読んでみると、どうやらsrc-sinc-best-qualityなどのメソッドはCPUパワーを使う割に音質の向上が見込めないので使うに値しないということで無くなったようなのである。
According to Alexander Patrakov's evaluation, both speex-float-5 and speex-float-10 are same or better than libsamplerate's highest quality.
と書かれているので/etc/pulse/daemon.confで
resample-method = speex-float-5
にしてみた。
speex-float-10でも良いがやはりCPU負荷が高くなるだろうし、それによって得られる効果とのバランスを考えてspeex-float-5にした。
気持ちの問題かもしれないがちょっと良くなった気がする。
確認するのにハイレゾ音源を探してみたが、どうもYouTube動画はハイレゾとうたっているものでもアップロード時に周波数カットやビットレートが下げられてしまうのでハイレゾではないらしい。
「ハイレゾ 音源」で期間を1年以内にしてGoogle検索してみたら以下のページが出てきた。
エビクラシー - ハイレゾ音源配信サイト【e-onkyo music】
私立恵比寿中学のアルバムだそうである。
ファイル形式は「flac 96kHz/24bit」となっている。
ただし、視聴音源の音質もハイレゾになっているのかはわからない。
『フォーエバー中坊』あたりを聞いてみた。
この曲をハイレゾで聞きたいか?と疑問に思っても口にしてはいけない。
音が右に左に移動する感じ良く聞こえ、早口の歌詞もKonaLinuxのblackjackエディションなら聞き取れる感じがした。
残念ながらPulseAudioでは何となく違いがわかる気がするだけではっきりしなかった。
その他のハイレゾ音源の商品について知りたければページ左側の「ハイレゾ音源大賞」を見ると良いと思う。
e-onkyoのページで「ハイレゾ」で検索しても上位に出てくるものはサンプリング・レートが48kHzのものばかりだがハイレゾ音源大賞で紹介されているものはそれより高いものが多いからだ。
関係ない話だが、エレキコミックのやついさんが知らないうちにDJになっていた・・・。
2017年6月度最優秀ハイレゾ音源大賞作品:ゲスト・セレクター、DJやついいちろう (エレキコミック) – ハイレゾ音源大賞
テスト用のハイレゾ音源、どこかにないかな?と思っていたのだが、音質の良さを売りにしているKonaLinuxに入っているログイン音声を含めた、幾つかの1分ほどの長さの音声ファイルはもしかすると高音質なものかも知れない。
あとで調べてみよう。
と思ったらネットでちょっと調べたらこんなサイトがあった。
2L High Resolution Music .:. free TEST BENCH
幾つかの音楽について、複数のサンプリングレート、ビットレートのファイルが用意されている。
さすがにファイルサイズが大きい。
CD音質とのサイズの差がすごい・・・。
PulseAudio設定ではこの他
/etc/pulse/default.paで
load-module module-udev-detect tsched=0
にすると良いというのがあった。
うちの環境Lubuntuではif文を使ってmodule-udev-detectが呼び出されていたのでちょっと形は違うが迷うことは無いと思う。
上で紹介したArchLinuxのPulseAudioのトラブルシューティングによると
PulseAudio サウンドサーバの新しい実装では旧来の割り込みを使用する方法に変わってタイマーベースのオーディオスケジューリングを使っています。
だそうで、これを無効にする設定だそうだ。
今回、これはとりあえず見送ることにした。
また、エコー、ノイズキャンセル機能もある。
同じく、/etc/pulse/default.paで
### Enable Echo/Noise-Cancelation
load-module module-echo-cancel
を追加して、PulseAudioを再起動すると良い。
説明文によるとマイク入力に使うもののようだが、出力でも設定できる。
KonaLinuxのPulseAudioの設定と同じように、アプリケーションから音が出ている状態にしておいて、タスクバーのスピーカーアイコンを右クリックし「"音量コントロール"の設定」から「PulseAudio 音量調節」を開いて、再生タブの音が出ているアプリケーションの項目の右側にあるプルダウンメニューで「内部オーディオステレオ(echo cancelled with 内部オーディオステレオ」を選択する。
これは明らかに音が変わる。
高温の速い変化の音が聞こえなくなる。
あっても良いが高音部のノイズではない音も消えてしまうので使わないことにした。
マイクを使う機会があったら試してみようと思う。
これ以上は専用装置もないPCでやっても無意味だと思うのでやめることにした。
調べていたらこんな興味深い記事も見つけた。
192kHz/24bitのハイレゾ無圧縮音源は本当に聴き分けられるものなのか? - GIGAZINE
MP3のライセンスがまだ有効だった頃にその代わりとして使えると注目されたOgg Vorbisフォーマットの開発者がハイレゾ音源の効果について疑問を投げかけているというのだ。
くわしくは上の記事を見てもらうとして、こんな疑問が湧いてきた。
KonaLinuxのチューンアップは、実は音声が綺麗に聞こえるようにするものではなく、ファイルサイズが大きく再生中の処理についても高負荷のハイレゾ音源について、その負荷によって音の歪みなどの不具合が出るのを避けるためのものではないか?
まさかとは思うがもしそうなら本末転倒である。
記事は2014年のもので音声出力に関わる周辺機器も変わってきているとは思うし、ハイレゾ音源は多くの人たちの支持があるのだから価値はあるとも思うが・・・。
少なくとも2014年あたりやそれ以前のスピーカーやヘッドホン、アンプなどではひずみなどの弊害の方が大きいかも知れないということだ。
当然、新しくても安物のものでは駄目なんだろう。
上の設定は他のLinuxディストリビューションでも有効だと思われる。
Puppy LinuxのPulseAudioはバージョンが古いのでどこまで使えるかわからないが、KonaLinuxの無印版やバージョン2.3、Firefoxなどを使う関係でPulseAudioを導入した場合には同じ設定が使えるだろう。
逆に古いバージョンのPulseAudioだからこそ、上の設定が効いてくるかもしれない。
ただPuppy Linuxなどを入れるような古いPCの場合、CPUの負荷もてきめんに効いてくるだろうからバランスを考えないといけない。
またPuppy Linuxの場合、PulseAudioはインストールされているのにpulseaudioコマンドがないという不思議なことになっているので、Puppy パッケージマネージャでリポジトリのデータベースを更新してPulseAudioを再インストール(多分アップデートになる)する必要がある。
また有志の人がpetパッケージを配布しているのでそれを使う場合もある。
Puppy LinuxのPulseAudioについてはこちら。
あと、できることはカーネルをリアルタイムや低レイテンシのものにすることくらいだろうか。
Ubuntuでは
sudo apt-get install linux-lowlatency
で低レイテンシのカーネルがインストールできる。
ただし、resample-methodを高くしたり、低レイテンシのカーネルを使うと、AbemaTVやYouTubeの動画再生がスムーズにできなくなる場合があるので注意だ。
うちの環境ではLowlatencyカーネルを使うと、AbemaTVのCMから本編への切り替え時に音が繰り返される状態がしばらく続き安定するまでに時間が掛かる。
genericに戻すと問題がなくなる。
何でも低遅延にすれば良いわけではないので注意。
上の設定をしてもまだのっぺりした感じがする人はPulseAudioのイコライザーを導入する方法もある。
ただ、開発は終了していて各バージョン版のバイナリイメージを作るというサポートをしているだけらしいので、不具合がある場合はあきらめるしかない。
例えば、PulseAudio Equalizerを常に使う設定にしておくと、起動するたびにボリュームが最大になる・・・。
これは最終バージョンでも解決されていない。