「大きな音と小さな音の差を減らしたい」とき、音量を下げるだけでよいのでしょうか。一定のゲインを掛ける操作では、ピークも平均的な振幅も一緒に下がります。ピークとRMSの比であるクレストファクターは、クリッピングや丸め誤差などがなければ変わりません。
CreatuneチームのAlexです。この記事では自作の440 Hz正弦波を実際にWAVへ書き出し、数値を比較します。音楽の聴感評価やコンプレッサーの性能比較ではありません。
ピークとRMSの「差」を見る
サンプルをフルスケールで正規化した値を x とすると、ここでは次の定義を使います。
peak = max(abs(x))
rms = sqrt(mean(x*x))
crest_dB = 20*log10(peak/rms)
= peak_dBFS - rms_dBFS
このRMSのdBFS表記は、正規化振幅1を0 dBFSとする定義です。正弦波への補正値は加えていません。メーター間で数値を比較する際は、基準もそろえてください。
正弦波の理論値は約3.01 dBです。瞬間的な大きなピークがあり、残りが小さい信号は、同じピークでもより大きな値になり得ます。ただし、曲全体のクレストファクターだけで「ダイナミクスの良さ」や聴きやすさは判断できません。無音区間や測定窓によっても変わります。
自作音源を準備する
Python標準ライブラリだけで、2秒・44.1 kHz・16 bit・モノラルの音を作れます。元ファイルは上書きせず残します。
import math, struct, wave
rate = 44100
samples = [round(0.25 * 32767 * math.sin(2 * math.pi * 440 * n / rate))
for n in range(rate * 2)]
with wave.open("tone440.wav", "wb") as w:
w.setparams((1, 2, rate, 0, "NONE", "not compressed"))
w.writeframes(struct.pack("<" + "h" * len(samples), *samples))
同じ音源に−6 dBだけを適用する
Creatuneの音量変更を開き、作ったファイルを選びます。2026年11月1日の未ログイン公開画面で確認した操作です。画面には、選んだ音声は端末内で処理されると表示されています。
「音量(dB)」を−6 dBにし、保存形式をWAVへ変更してダウンロードします。波形の見た目だけで判断せず、表示値が−6 dBになっていることを確かめます。保存したファイルをここでは volume-minus6.wav と呼びます。
書き出し前後を測る
次のコードは16 bit PCM WAV用です。複数チャンネルではチャンネルごとに計算するので、片側だけに大きなピークがある音源も混ぜずに確認できます。
import math, struct, wave
for name in ["tone440.wav", "volume-minus6.wav"]:
with wave.open(name, "rb") as w:
assert w.getsampwidth() == 2, "16 bit PCM WAVを使用してください"
channels, frames, rate = w.getnchannels(), w.getnframes(), w.getframerate()
raw = w.readframes(frames)
values = struct.unpack("<" + "h" * (len(raw) // 2), raw)
for ch in range(channels):
x = [v / 32768 for v in values[ch::channels]]
peak = max(map(abs, x))
rms = math.sqrt(sum(v * v for v in x) / len(x))
if rms == 0:
print(name, ch + 1, "silence")
continue
print(name, ch + 1, f"{frames/rate:.3f}s",
f"peak={20*math.log10(peak):.3f}",
f"rms={20*math.log10(rms):.3f}",
f"crest={20*math.log10(peak/rms):.3f} dB")
今回の実測は以下です。書き出しは44.1 kHz・2秒のステレオとなり、左右の測定値は同じでした。
| ファイル | ピーク dBFS | RMS dBFS | クレスト dB |
|---|---|---|---|
| 元のモノラル | −12.041 | −15.052 | 3.011 |
| −6 dB後・左右それぞれ | −18.041 | −21.052 | 3.011 |
ゲインの振幅倍率は 10**(-6/20)、約0.501です。分子のピークと分母のRMSに同じ倍率が掛かるため、その比はほぼ一定です。末尾の小さな数値差は量子化などの影響を含みます。
どんな判断に使えるか
全体が大きすぎるだけなら、一定ゲインで下げる操作は目的に合います。一方、「強い一打だけを抑えたい」「小声と大声の差を縮めたい」は別の問題です。時間によってゲインを変えるコンプレッションや音量オートメーションを検討する場面で、ここで確認した音量変更をその代わりと考えないことが大切です。
クレストファクターはLUFSでも、サンプル間ピークを推定するtrue peakでもありません。今回は一つの定常正弦波・減衰設定の検証です。無音を含む音楽、強い増幅、圧縮音源への書き出しでは条件をそろえて再測定し、数値確認と実際の用途での試聴を分けて行ってください。

