トゥルーピークの限界と非情な現実

トゥルーピークの限界と非情な現実

トゥルーピークって難しいよね

ラウドネス測定法とペアで出てくるのが、トゥルーピークです。VUやサンプルピーク(一般にdBFSで指示される値)とは、どうやら異なる概念のように見えます。作品中は-1dBTPを上限に、、、とかガイドラインは決まっているものの、その実、トゥルーピークは何なのかを理解している!と胸を張って言える人はそんなにいないんじゃないでしょうか。そんなあなた!今日から、トゥルーピークのタツジンになれます。

※この投稿をあらかじめ読んでおくことをお勧めします。



そもそもサンプルピークとは

トゥルーピークを説明する前に、サンプルピークのおさらいから。これまでは、一般にデジタルのピークと言えば、サンプルピーク、つまり0dBFSを上限とするdBFSで表す値でした1。サンプルピークとは、その名の通り、ある区間(あるいは作品中)の最大サンプル値を指します。サンプル値とは、デジタルで記録されている信号の大きさです。例えば以下のような関係にあります。

白い点が各サンプル値、赤でマークしているところがこの区間での最大サンプル値、サンプルピークです。
ちなみに、サンプルピークが0dBFSを越えてしまうと表現することができず、(ほとんどの場合)0dBFSとして記録されます2。これがいわゆるクリップというやつです。先の画像をクリップさせるとこのようになります。

さっきは滑らかな波だったのが、赤で囲っている点がクリップしてしまって、平らになってしまっています。元の波形に対してこのようなクリップを起こすと、波形が変化するので、強烈な歪みが発生します。これは避けなければなりません。


ついでにFFTの見方を簡単に説明すると、横軸が周波数、縦軸が周波数成分の信号の強さを示しています。元々の波形は441Hzのサイン波(純音)なので、FFTは横軸の441Hzの部分だけに縦軸の出力があるはずですが、クリップした波形は441Hz以外の部分にも出力があります。441Hzだけの信号のはずが、違う周波数にも出力が出てしまっている、つまりこれが、歪んでいる、ということです。

従来は、サンプルピークがデジタル信号の絶対的尺度として考えられてきていて、0dBFSを越えてなければ大丈夫という認識でした。理論的にも、デジタルは0dBFSまで記録できているのだから0dBFSを越えなければ問題無い、というのはもっともなように感じます。しかし、昨今のDACの仕組みを考えると一概にそう言えないことが分かってきました。ここで新しい概念となるトゥルーピークが必要になります。

10dBFSを越えて表現できるFloat形式はありますが、DACへ出力する際には0dBFSを上限に切り捨てられてしまうため、やはり0dBFSが実質的な上限なのです。

2いにしえのADC/DACでは、ピークを越えたときに、0dBFSとして記録せず、-∞dBFSになったりするものもありますが、近年はほとんど見られないので、まあ気にしないで大丈夫です。筆者もそういうのを見たのはここ10年で1度きりです。

サンプルピークとトゥルーピーク

デジタル上ではサンプル値以外のデータは記録されていません。それでは、サンプル値のまま、最終的にDACから出力されているのでしょうか?言い変えると、サンプルピークは、波形の最大値となるのでしょうか?

サンプル値は、ある一定の間隔(サンプリングレート)で波形を記録しています。記録するタイミングが、果たして波形のピークを捉えているかどうかは、実は分からないのです。例えば、以下の例が考えられます。


この2つの波形は、どちらもサンプルピーク値(白点)が一緒です。しかし、前者は波形のピークを記録できており、後者はピークではないところを記録しています。つまり、サンプルピークが一緒なのに、それぞれの実際の波形の最大値は異なるのです。この、実際の波形の最大値を示すのがトゥルーピークです。

繰り返しになりますが、デジタル上ではサンプル値以外のデータは無いため、このままではトゥルーピークは分かりません。そのため、トゥルーピークを得るために使われるのがオーバーサンプリングという技術です。オーバーサンプリングはサンプリングレートを大きくすることを意味しています。要は、波形の最大値がサンプル点でないなら、サンプル点を増やしちゃおうってことです。

上図はさっきの図からサンプリングレートを4倍にしています。つまり、サンプル点が4倍になっています。きちんと波形の最大値をサンプル点が捉えていますね。いわゆるトゥルーピークメーターやトゥルーピークリミッターも同じことをしています。サンプル値を示すdBFSに対して、トゥルーピーク値はdBTPになります。

サンプルピークは波形の最大値を捉えていないかもしれないので、トゥルーピークメーター等で0dBTPを上回らないように、作品を管理しましょう。めでたしめでたし…?

トゥルーピークは本当に波形の最大値?

さて、ここまでがよくあるトゥルーピークの説明です。多分、このあたりまでは何となく理解されている方も多いことでしょう。しかし、話は簡単にいきません。トゥルーピークが波形の最大値を捉えているかどうか、言い換えれば増やしたサンプル点が波形の最大値を捉えているかどうかは、実は分からないのです。

トゥルーピークはラウドネス測定法においてサンプリングレートを4倍にして、つまり4倍オーバーサンプリングを行って観測するよう推奨されています。今日のトゥルーピークメーターも同様の処理を行っています。しかし、この4倍オーバーサンプリングは、その処理の仕方によって結果が異なる、つまりトゥルーピークメーターによって指し示す値が異なることが起こり得ます。一般に4倍オーバーサンプリングでは、以下手法を用います。

  1. サンプル間にゼロを3つ挿入

  2. ローパスフィルタを通す
    9.LPF

ゼロのサンプルがローパスフィルタを通すことで、元々のサンプルよりも高い値になるのは、ちょっと想像しにくいかもしれません。元々のサンプル間にゼロを挿入するだけでは、元々のサンプルの位置によって急峻な値の変動が起きる、つまり高周波信号(折り返し歪み)を内包してしまうわけです。

ローパスフィルタはこの折り返し歪みを除去しています。

折り返し歪みを除去することによって、高周波成分が無くなります。結果として、ゼロのサンプルは元のサンプルを補間するような位置に移動します。トゥルーピークメーターはこれらのサンプルを読み取っているわけですね。

ちなみにトゥルーピークとサンプルピークの差は信号の周波数が高ければ高いほど大きくなります。信号の周波数が高いというのは、それだけ波形の傾きが急峻ということですから、次のサンプル値への移動量が大きくなり、補間した場合の移動量も大きくなります。

ここで問題となるトゥルーピーク、つまりどのようにゼロのサンプルが移動するかはローパスフィルタの設計に依存します。数多あるトゥルーピークメーターが使用しているローパスフィルタの設計は統一されていないので、トゥルーピークメーターによってトゥルーピーク値の差が発生します。

更に言えば、トゥルーピークリミッターも同様に独自のローパスフィルタを使用してオーバーサンプリングを行い、トゥルーピークがスレッショルドを越えない様にリミッティングを行っているため、トゥルーピークリミッターの設定と、トゥルーピークメーターが指す値が異なるというのも当然のように発生します。あるトゥルーピークリミッターの設定と、あるトゥルーピークメーターの結果を見比べるのは一種の相性問題を見ているだけなのです。

実際に各トゥルーピークメーターのばらつきを見てみましょう。サンプリングレート44.1kHz時の11025Hzのサイン波は、サンプルピークとトゥルーピークにおいて約3dBの差を持ちます。流石にこの信号は各トゥルーピークメーターで似た値を示します。

では、サンプルピークとトゥルーピークの差は、3dBが最悪値なのでしょうか。これは、ローパスフィルタの設計により異なります。ローパスフィルタの設計法から逆算して、最悪値を示すような信号を入れてみます。そうすると、各トゥルーピークメーターで違った値を示すようになります。

もっと意地悪な信号を入れてみると、トゥルーピークメーターがバグったりします。



トゥルーピーク≠トゥルーピーク

え?じゃあなんでローパスフィルタを業界で統一しないの?と疑問に思うはずです。確かに、ローパスフィルタを統一すれば、トゥルーピークメーター毎でトゥルーピークは同じ値になりますし、また、トゥルーピークリミッターの設定と同じ値になります。しかし、本当に注意すべきは、トゥルーピークメーターが指し示す値ではなく、DACが出力する際に歪まないかどうかなのです。4倍オーバーサンプリングは今日のDACが行う処理を考えると、不十分であり、また不完全なのです。

図の通り、あくまで4倍オーバーサンプリングはDACの前段の一部分の処理を模倣しているにすぎません。この4倍オーバーサンプリングでさえ、DACによってローパスフィルタの設計は様々なのです。また、このDACの処理はあくまで一例であり、世の中には様々な処理が存在します。それら全てを完璧にシミュレートするのは不可能であるものの、少なくとも4倍オーバーサンプリングを行うことで予期せぬクリップを出来る限り無くそうというのが、今日のトゥルーピークの立ち位置です。

ラウドネス測定法は4倍オーバーサンプリングしたトゥルーピークと実波形のピーク差は最悪値で0.688dBとしているため、現在は-1dBTPを納品規定としていることが多いです。ただし、これは先のトゥルーピークメーターのばらつきやバグを見ればわかる通り、完全なものではありません。しかも、サンプルピークとトゥルーピークの関係と同じように、高周波になればなるほどトゥルーピークと実波形の差も大きくなります。過度なリミッティングやマキシマイズを行って波形が矩形波に近くなる、つまり高周波成分を含むと、トゥルーピークと実波形の差によって、-1dBTPであってもクリップを引き起こす可能性が高まるのです。

また、クリップが起きるかどうかはDACによって異なるということが、更にこの問題をややこしくします。トゥルーピークがある値を越えたからと言ってクリップする/しないとも限らないのです。

実例を示してみます。あるDACで11025Hzのサイン波を-3dBFS(0dBTP)で再生すると、元の波形通りとなります。

では0dBFS(3dBTP)ではどうでしょうか。波形の最大値付近の形状が平らに近くなっており、クリップしていることを示しています。

NOS DACにしてみましょう。NOS(No Over Sampling)の名の通り、そもそもオーバーサンプリング処理を行わないDACです。つまりサンプル値通りに再生するわけですね。波形の形状は矩形波になり、後段のアナログLPFによるオーバーシュートが発生していますが、クリップはしていないようです。

また別のDACにしてみましょう。今度はクリップしていないようです。

DACチップのローパスフィルタの設計やそれぞれのヘッドマージンは公開されていない上に、後段のアナログローパスフィルタの設計やヘッドマージンはDACによって異なるために、このような現象が起きます。

このように今日のDACの出力というのは推定することさえ不可能に近く、あるDACで信号が歪むか歪まないかは、実際に再生するまで分からないのです。

トゥルーピークに限らないピーク増大

そんなDAC、一つ一つまで分からないし、スタジオのオーディオインタフェースで歪んでなければ良いんじゃねー?納品規定は-1dBTP以下って言われてるし、それ守ってれば大丈夫でしょ、と思われるかもしれません。それに、少し気の利いたエンジニアは複数のDACで検聴を行っていることでしょう。

トゥルーピークは、あくまで再生時のオーバーサンプリング処理のみに着眼していました。しかしながら、今日の再生形態では、再生時に行われる処理というのはオーバーサンプリングだけに限らないのです。非可逆圧縮によるリッピング/ストリーミング、ラジオ送出、あるいはワイヤレスイヤフォンによるBluetoothオーディオコーデックへの変換等々。後処理によってピークがサンプルピークから増大するのはトゥルーピークだけではないのです。そして、処理による増大するピークの量というのは、リミッティングやマキシマイズの深さに明確な相関性を持ちます。

手持ちのライブラリからIntegrated Loudnessが-4LUFS、-7LUFS、-14LUFSの音源(44.1kHz)をいくつか取り上げて、それぞれ想定される処理前後のピーク値の違いをグラフにしました。ちなみに、Spotifyのデータを解析すると、日本のヒットチャートにおいて、-7LUFSは概ね中央値です。

なお、算出にはffmpegを用いた関係上、RAWでも48kHzに変換後に算出されるため0dBになりませんが、まあこれはスマートフォンでよくあるサンプリングレートの非整数倍変換に読みかえてください。

  • 非可逆圧縮によるピーク増大

非可逆圧縮においては、コーデックごとの独自のアルゴリズムによる処理が行われています。特に大きな相関を持つのは、ここでもローパスフィルタの仕様であり、ビットレートが低ければ低いほどピークは増大する傾向にあります。

明らかにIntegrated Loudnessが-4LUFSグループの方がピークが増大します。また、ピークの増大量は3dBを越えるものも多いです。対して、-14LUFSグループでは、大きくとも2dB程となります。

  • ラジオ送出プロセッサによるピーク増大

ラジオ、特にFMラジオでは、送出プロセッサにより極めて複雑で特殊な処理が行われています。その処理の中でも今回は位相回転(オールパスフィルタ)を取り上げてみます。

ある特定の音源、例えば管楽器や男性の声というのは、上下非対称波形になりやすいという性質があります。

このような非対称波形では、ピークが片側にだけ寄ってしまうため、対称波形と同じ音量を出すためには送出パワーが余計に必要になってしまいます。そのため、非対称波形を対称波形にするために、オールパスフィルタによる位相回転が行われます。これは、位相のみを回転させ、周波数ごとの増減は行わない処理です。先の非対称波形にオールパスフィルタをかけるとこのように対称波形に近くなります。

しかしながら、このオールパスフィルタは過度にリミッティングやマキシマイズされた音源に対しては、極めて相性が悪く、ピークが増大します。オールパスフィルタの設計は、一般に公開されていませんので、適当に2種用意してみました。

こちらもやはり、Integrated Loudnessが-4LUFSグループの方がピークが増大する傾向にあります。

  • Bluetoothオーディオコーデックへの変換によるピーク増大

先の非可逆圧縮によるピーク増大と重複する部分がありますが、音源に対する処理と、再生時に対する処理で明示的に区別するために、別立てとしました。Bluetoothオーディオコーデックも非可逆圧縮と同じように、処理の過程でピークの増大が発生します。

同様にIntegrated Loudnessが-4LUFSグループの方がピークが増大する傾向にあります。

当たり前ですが、このピーク増大により0dBFSを越えてしまえばクリッピングが発生します。0dBFSを越えずともピーク増大によりDACで歪む可能性が高まります。トゥルーピークにしろ、処理過程によるピーク増大にしろ、過度なリミッティングやマキシマイズは予期せぬ歪みが発生する可能性を飛躍的に高めてしまうのです。

消費者側にできること

誠に残念ながら、音源制作における歪み管理は、有史以来完璧に行えるものではありません。今回はデジタル音源のみを取り上げましたが、レコードの時代から歪みによる回収騒ぎというのは幾度となく行われてきました。もっともレコードの時代は、音源の段階で歪んでいるというのは稀で、大抵はカッティングレベルによるものですから再生機器の調整で何とかなったもの。また、カッティングレベルの高さというのは再生のS/Nに直結しますから、カッティングレベルが高い盤であっても再生できる機器というのは重宝され、消費者責任の部分も割合として高めであり、まあ納得できるものでした。

しかしながら、今日のデジタル時代における音圧競争による歪み発生は、そもそも音源からして歪んでいるのです。これは明確に制作側の無責任さの現れであり、本来クレームに該当するものですが、これを真摯に受け止める体制というのは現在ありません。そして、これまた誠に残念なことに、大きく歪む音源というのは、当たり前のようにリリースされています。本来消費者が行うべきことではないですが、以下のようなことで歪みの発生を抑える必要があります。

  • 非可逆圧縮時にはあらかじめレベルを6dB下げる

上述の通り、非可逆圧縮時のピーク増大は、理論的には無限大ですが、現実的には6dB程度が上限になります。6dB下げておくことで歪み発生の可能性を最小限にすることができます。

  • 非可逆圧縮に用いるエンコーダはFloat対応のものを使用する

詳細は割愛しますが、本来非可逆圧縮はFloat処理にて行われるので、Float対応のエンコーダで圧縮を行えば、もし圧縮過程でピーク増大が発生して0dBFSを越えてしまったとしても、後々ピークを復元できる可能性があります。

もちろん、そのまま再生する際にクリップさせないためにはデコーダもFloat対応であり、後述する再生アプリでのレベル下げを併用する必要があります。現在はFloat対応のデコーダの数は少ないですが、今後増えていくことが予想されるため、Float対応のエンコーダを用いることは損ではありません。

レベル下げもあわせて、非可逆圧縮にはFoobar2000の使用をお勧めします。例えばMP3では、Encoderの設定をカスタムにしてLameのコマンドラインに「–gain -6.0」を追加すれば、-6.0dBのレベル下げを適用してFloat対応のエンコードができます。



  • ラウドネス・ノーマライゼーション機能を有効にする

トゥルーピークによる歪み発生は、ラウドネス値が高い音源に発生しやすい傾向にあるため、ラウドネス・ノーマライゼーションを有効にし、レベルを下げることが対策になります。また、歪みの発生以外にもラウドネス値が大幅に異なる楽曲間でのボリューム調整の手間が軽減できるので、常に有効にするのがお勧めです。

  • 再生アプリのデジタルボリュームを6dB下げる

ラウドネス・ノーマライゼーション基準値以下のラウドネス値が低い楽曲でもピークでリミッティングが行われており、トゥルーピークによる歪みが発生する可能性があります。この場合、ラウドネス・ノーマライゼーションによるレベル調整による歪み抑制は期待できないため、再生アプリ側で明示的に6dB下げることで、トゥルーピークの歪み発生の可能性を下げることができます。

ラウドネス・ノーマライゼーションとデジタルボリュームの自動化は、ストリーミングならまだしも、ローカルファイルの運用は中々難しいのですが、Roonでは簡単に設定で行うことで可能です。特にラウドネス値の算出も取り込み解析時に自動的に行ってくれるため、便利です。

なお、ワイヤレスイヤフォンでは、Bluetoothがイヤフォン側のボリュームと連動してしまうため、送出ボリュームだけを下げることが現実的に不可能です。ラウドネス・ノーマライゼーションを上手く利用する必要があります。

デジタルでレベルを下げることでビット落ち(S/N比の悪化)を懸念するかもしれませんが、今どきの処理精度において、この程度のレベル下げでビット落ちは発生しません。例えビット落ちが発生したとしても、クリッピングによる歪みに比べればマシです。0.01dBのクリップでさえ、1bitのビット落ちよりも悪影響が出ます。

ただし、以上のことは完全にクリップしてしまっている音源には効果がありません。そういうものを修正するにはiZotope RX等のレストレーションソフトが必要になります。

制作側ができること

検聴過程において、様々な環境で聞き比べるというのはどのエンジニアでもやっていることでしょう。しかしながら、これは今日の消費者の視聴環境を想定した歪みの検聴には役に立たないことがほとんどです。

20年前までは、据え置きのCDプレイヤーやコンポが再生機器でありました。これらの使用年数は、家電製品協会のレポート[家電製品使用年数調査報告書(2017年度版), PDF]によれば、平均約7年です。まあサンプル数が少ないですが、筆者の実感からしても妥当のように感じます。また、製品の市場シェアも一部の製品に偏っていましたので、市場で代表的なコンポを検聴チェックに用いて、5-6年のスパンで入れ替えるというのは理にかなっていました。

ポータブルプレイヤー、スマートフォンの台頭により、情勢は大きく変わりました。長くても2-3年スパンで新製品が登場し、目まぐるしくシェアが移り変わります。そして、ストリーミングサービスやワイヤレスイヤフォンの登場もあり、それぞれの処理過程を想定して膨大な組み合わせの歪み管理を行うことは、現実的に不可能です。ある環境では歪みが発生して、ある環境では歪みが発生しないということが当たり前に起きる時代になってしまったのです。

それでもクオリティ管理として、できる唯一のことがあります。それは、過度なリミッティングやマキシマイズをやめるか、もし、それを行うにしても大幅なピークマージンを取ることです。-1dBTPを目安にして良いのは、ピークノーマライズしたIntegrated Loudnessがせいぜい-14LUFS以下の音源です。それよりも高い音源、特に-7LUFSを越えるような音源は-6dBTPを目安にしなければ消費者側で歪みが発生する可能性が飛躍的に高まります。

非可逆圧縮においてFloat対応エンコーダ、デコーダが普及すれば、例え圧縮過程においてピークが増大したとしても再生時にラウドネス・ノーマライゼーションを有効にするか、アプリ側のボリュームを下げることでクリップ歪みの発生を抑えることができます。しかしながら、主流になりつつあるストリーミングサービスのエンコーダ/デコーダのFloat対応率は壊滅的です。

また、モニタースピーカーにDSPが内蔵され、モニター内部でもデジタル処理が行われることが一般になってきました。DSP内では帯域分割やレベル調整のために、上述した位相回転やオーバーサンプリングが行われています。フルスケールで突っ込むことはあまりないですが、それでも、環境によって歪みの出方が異なる場合があります。エンジニア間のファイルの受け渡しであっても、こっちでは歪んでなくて、あっちでは歪んでるということが起こり得るのです。

過度なリミッティングやマキシマイズの歪みを一種の表現として用いるのを個性とするならば、消費者に出来るだけそのまま伝えるよう努力すべきでしょう。しかし、その歪み方は、ピークマージンが無ければないほど、環境による違いが大きくなってきます。モニター環境で聞こえている歪み方と同じようにリスナーが聞いている可能性は著しく低いのです。そのような処理が必須でリスナーに同じように聞かせたいのであれば、せめて6dBほどピークマージンを取ることです。

どんな熟練エンジニアであっても、凄腕プロデューサーであっても、どんなに進化したプラグインであっても、素晴らしい解像度を持ったモニターでも、環境による歪みの違いを回避する手段は一つしかありません。過度なリミッティングやマキシマイズを行ったらレベルを下げるほかないのです。

おまけ:DSDのピーク

こっからは完全趣味の話だ!誰もDSDのピークとか気にしてないだろ!
DSDってのは知っての通り2値信号だから、サンプルピークってのは、存在してないんだな。強いて言うなら常に1=フルスケールなわけだ。これだとレベル管理ってのができないから、これもやはりローパスフィルタを通すことで振幅を取り出してレベルを観察するわけだ。

DSDの場合、PCMと異なり、変調率100%の時がフルスケールではない。変調率が50%の時をフルスケールとして0dB SACDとして規定している。いうなれば、ローパスフィルタをかけたときに、[-1,1]が変調率100%ならば、[-0.5, 0.5]が0dB SACDなわけだな。0dB SACD = 0dBFSとされている。

もっとも、0dB SACDがフルスケールであってもピークの最大値ではないのが、DSDのミソ。実際には+3.1dB SACDまで、つまり変調率75%まで認められている。値にすれば[-0.71, 0.71]だな。

これまたローパスフィルタが出てくるから察しの通り、観測に用いるもの、もしくはDACによって実際のピークは大きく異なる!Scarlet Book(SACD標準規格書, PDF)が規定しているローパスフィルタは正直ザルだ。+3.1dB SACD以下のチェックを通ってしまいリリースされているもので、実際に再生するときには+3.1dB SACDを越えるものというのはわずかながら存在する。手持ちのライブラリで5%ぐらい。つまり、これまたDACによって歪んだり歪まなかったりする音源があるというわけだな。

いまどきDSDを再生するなんて言う人は、ほんとにマニアだろうから、DSDを完璧に再生できるDACを探し求めるというのもありだろう。でも、寡聞にしてそんなものは知らない!今どきのDACは中でPCM変換してるし、DSDネイティブを謡っているDACでも実はPCM変換したほうが性能が良いってのが当たり前の時代だ。

残るは、DSDの意義、つまりADCからダイレクトにDACまで一切のデジタル処理を介さず再生することを尊重するかどうかだが、これまた疑問で、PCM変換を介さずに制作されたDSD音源はほんのごく一部だし、そもそも完全ネイティブDSDのADCは現行機種には無い!

つまりだ、DSDはその意義はとうの昔に失われ、一つのフォーマットの器でしかないわけだな。もちろん、DSD音源の中には、素晴らしい音源も存在するし、現在ではマスターの劣化が激しく、SACD/DSDとしてリリースされたのが最上というのもあるわけだ。では、DSDを再生するときはどうすればいいか。潔くPCMに変換して再生すればいい!

上記の通り、PCMに変換する際、ピークが増大する恐れがあるから、設定は+6dB SACD = 0dBFS(+0dB)設定にするほか、やはりこれも再生時に-6dBするのが良い。もちろん、PCM変換する際の処理によって音は変わってくるから、好みのものにできるよう、自由度が高いシステムが良いぞ。Roon+HQ Playerの組み合わせがお勧めだ!