Skip to content

True Peak 安全性 ​

True Peak 安全性とは、マスター済みファイルが再構成、コーデック変換、配信再生の後にクリップしないよう、十分な余裕を残す考え方です。

サンプルピークは、デジタルファイルに保存された値だけを示します。再生機器やエンコーダーは、そのサンプル間を補間して連続した波形に戻します。この再構成された波形が、保存されたサンプルピークを超えることがあります。サンプルの上にはみ出すこの部分を、サンプル間ピーク(ISP、inter-sample peak)と呼びます。つまり、サンプル上は安全に見えるマスターでも、変換後に歪む可能性があります。

LOUDNESS · TRUE PEAKIDLE
サンプル間ピーク — マスターが再生時にクリップする理由

ドットは正弦波のサンプル、曲線はその解析的な波形です。山の頂点がサンプル間に来ると、保存された値より高いピークが生じます。その差は周波数と位相で変わり、ナイキスト周波数に近づくほど単調に増えるわけではありません。解析的なピークと、オーバーサンプリングしたメーターの推定値を比較してください。サンプルピークを 0 dBFS に近づけると、サンプル間の超過が生じ、ヘッドルームの足りないコンバーターや後段の処理でクリップする可能性があります。

サンプルピーク
-0.3 dBFS
周波数(×ナイキスト)
0.4

なぜサンプルピークだけでは足りないのか ​

デジタル音声ファイルは滑らかな曲線ではなく、離散的なサンプル点の列です。DAC(デジタル/アナログ変換器)やエンコーダーはその点を補間して連続波形に戻し、戻した波形は保存された点より高くなることがあります。

True Peak 計測では、信号をオーバーサンプリングしてからピークを調べることで、このリスクを推定します。2 つの読み値がどれだけ離れるかは、素材によって変わります。

信号サンプルピーク(dBFS)True Peak(dBTP)
サンプルレートの 1/4 の周波数で位相 45° のサイン波-3.01-0.09
矩形波(振幅 0.5)-6.02-4.11
mixed-stems.wav-1.1+0.2
drum.wav-0.7+1.4

下の 2 行は、サンプル上は 0 を下回っていても、再構成すると 0 を超えるファイルです。drum.wav は -0.7 で安全に見えますが、再構成するとおよそ 2 dB 高くなります。

特に問題になりやすい場面は次のとおりです。

状況リスク
不可逆エンコードMP3・AAC・Opus などへの変換で新しいピークが生まれることがある。
強いリミッティング密度の高いマスターほど、再構成時の飛び出しに弱い。
ストリーミング側の正規化配信プラットフォーム側で再エンコード/再処理を通る場合がある。
再生機器側0 dBFS ぎりぎりの素材を苦手とする再生チェーンが存在する。

実用的なシーリング ​

シーリングは、リミッターが通過を許す最大レベルです。一般的なリリース時のシーリングは -1 dBTP 前後です。dBTP は decibels true peak の略で、dBFS と同じデシベル尺度を再構成後の波形上で測ったものです。コーデック変換に対する余裕を広く取りたい場合は -2 dBTP を使うこともあります。逆に、納品先が明確で管理された環境であれば、もう少しタイトなシーリングを採用することもあります。エンジンの club と cd ターゲットは、-9 LUFS と -0.3 dBTP の組み合わせです。コーデックへの余裕を削って密度を取る設定で、streaming・broadcast・podcast は -1 です。

シーリングはラウドネスのターゲット値ではなく、あくまで安全マージンです。静かなファイルでもピークが危険なことはありますし、大きいファイルでも True Peak の範囲内に収まっている例は珍しくありません。

METERS · LOUDNESSIDLE
ラウドネス計測 — LUFS・True Peak・レンジ

バーは再生中の瞬時ラウドネスを追い、パネルは時間ごとのラウドネスです。インテグレーテッド LUFS は全体を表す一つの数値、True Peak はサンプル間も含むピークの推定値、LRA はラウドネスの動く幅を表します。ウィンドウを切り替えると、速い瞬時メーターと滑らかな短時間メーターを比べられます。どちらもウィンドウが埋まってから値を出すため、短時間の曲線はクリップの 3 秒後から始まります。

ウィンドウ

リミッターのルックアヘッド ​

True Peak リミッターは、ピークが到達する前に動き出す必要があります。ルックアヘッドはそのための先読み時間です。短すぎると速いピークを取り逃しやすく、長すぎるとレイテンシが増え、トランジェント感も変わってきます。

オフラインのマスタリングであれば、数 ms 程度のルックアヘッドは通常問題になりません。ライブ処理やインタラクティブ用途では、レイテンシの影響が大きくなる点に注意します。

リミッターの既定値は次のとおりです。

設定既定値
ceilingDb-1
lookaheadMs1.0
releaseMs50
oversampleFactor4

libsonare で測る ​

True Peak メーターもリミッターも、既定は 4 倍オーバーサンプリングで、1・2・4・8・16 を指定できます。シーリングへのリミッティングは、チェーンのステージ maximizer.truePeakLimiter が行います。

typescript
import { init, meteringPeakDb, meteringTruePeakDb, masteringChain } from '@libraz/libsonare';

await init();

const samplePeak = meteringPeakDb(samples, sampleRate);
const truePeak = meteringTruePeakDb(samples, sampleRate);      // 4 倍オーバーサンプリング
const finer = meteringTruePeakDb(samples, sampleRate, 8);      // 1、2、4、8、16 から指定

const limited = masteringChain(samples, sampleRate, {
  maximizer: { truePeakLimiter: { ceilingDb: -1, lookaheadMs: 1, oversampleFactor: 4 } },
});
// 結果は limited.samples に入ります。drum.wav では limited.outputTruePeakDbtp が -1.0 になります
python
import libsonare as sonare

audio = sonare.Audio.from_file("song.wav")
sample_peak = audio.peak_db()
true_peak = audio.true_peak_db()                      # oversample_factor=4
finer = audio.true_peak_db(oversample_factor=8)

limited = sonare.mastering_chain(
    audio.data, audio.sample_rate,
    {"maximizer": {"truePeakLimiter": {"ceilingDb": -1, "lookaheadMs": 1, "oversampleFactor": 4}}},
)
bash
sonare meter song.wav   # ネイティブ CLI のみ: サンプルピークと True Peak(--oversample で倍率を指定)
sonare mastering-processor song.wav --processor maximizer.truePeakLimiter \
  --params ceilingDb=-1,lookaheadMs=1 -o limited.wav

マスタリングデモの Studio モードでも、同じシーリングとルックアヘッドを調整できます。

実装メモ

安全確認の考え方は True Peak メータリングと同じです。オーバーサンプリングで再構成波形を近似し、密になった格子上で最大値を評価します。元のサンプル点だけをクランプするリミッターでは、サンプル間オーバーが残ってしまうため、ガードは入力バッファではなくオーバーサンプリング後の信号経路を監視する必要があります。

ルックアヘッドとリリースは独立には決められません。ルックアヘッドはピーク到達前に減衰を始める時間を与え、リリースはユニティゲイン(増減なしの状態)に戻る速さを決めます。リリースが短すぎるとモジュレーション(音色の揺れ)が出やすく、長すぎるとトランジェントが鈍り、稼げるラウドネスヘッドルームも減ります。実用値は、コーデック変換への安全性、トランジェント保持、体感上のゲイン変化の折り合いで決まります。

関連: True Peak、LUFS、ラウドネスマッチング