header

ビット・レート変更時の注意点

ビット下げ時の必須作業「ディザリング」

PCMデータの編集時に注意すべきことの一つが、縦軸(ビット・レート)横軸(サンプリング・レート)ともに、方眼紙の解像度で拾いきれなかった信号の正しい処理です。 ヨコ軸(サンプル・レート)の話は別記事に譲るとして、この項ではタテ軸(ビット・レート)に話を絞ります。

別記事「ビット・レートとバス幅」にも書いたように、アナログ信号のデジタル化に際し瞬間瞬間の電圧値を測定するとき、信号レベルは方眼紙のタテ軸のマスのいずれかに落とし込まなければなりません。
入力信号のレベルに「ドンピシャ」で合う位置にマス目があればいいのですが、無限の解像度を持つアナログ信号の入力に対してそれを望むのは難しい話です。やむなく、手近なマス目に落とし込みながら値を記録していくことになります。

さて、こうして近い方のマス目に丸め込む(あるいは無理矢理押し込む)という作業を続けるとどうなるかというと、この誤差は累積し、最終的には元は存在しなかった信号を「捏造」することになります。この捏造された信号は、レベルこそ低いとはいえ、再生音量を上げると聞き取れますし、肝心の楽音をマスキングします。
後述するように、逆にこの現象を逆手にとれば、本来のビットレートでは再現できないほど微小な音をよい具合に「捏造」することで収録可能にしてしまうというウルトラCも可能です。
これはオカルトでもなんでもなく、数字で説明できます。

マス目への落とし込みが必要になる場面

オーディオ信号を方眼紙のマス目に落とし込む作業、つまり前述のような捏造が生じえる場面はいくつか存在します。主なものは、

  1. 生音を録音するとき
    = 無限の解像度を持つアナログ信号をA/Dコンバータで方眼紙に落とし込むとき
  2. デジタル領域でビット・レートを落とすとき
    = ソースよりも解像度の荒い方眼紙に波形を落とし込むとき

結論から言うと、このような誤差は信号に意図的にノイズを加えることで回避できます。
一見すると矛盾するようですが、適切なノイズを加えることで、信号の精度がむしろ保たれるのです。

上記「1.生音を録音するとき」については、コンバータ自体が持っているフロアノイズがこの役割を果たすので、普段意識する必要はありません。今日の最もハイエンドのA/Dコンバータにおいても同様です。

以降、「2. デジタル領域でビット・レートを落とすとき」について説明します。

ディザリングとは

デジタル領域内でビット・レートを落とすとき、誤差の累積による信号捏造を回避すべく、意図的にノイズを加える作業のことを「ディザリング」や「ディザ」といいます。その際に加えるノイズが「ディザ・ノイズ」です。

音楽制作(DAW)に限らず、データ処理では広く用いられる概念です。
Wikipediaによると、語句の起源は第二次世界大戦時にまで遡るそうです。弾道計算に使用されていた機械式計算機が、不安定な爆撃機内で使用したときの方が正確な数値をはじき出したとか…

では実際に、プラグインで生成した1kHzのトーンをディザリングを行わずにCD相当の16ビットに変換した場合、どうなるかを見てみましょう。

※実験手順をご覧になりたい方は、旧ページをご参照ください。

書き出し前

1kHzトーンが-96dBFSより小さい状態で、16ビットに書き出した場合

1kHzトーンが-96dBFS以上の状態で、16ビットに書き出した場合

ちなみに、-96dBFSは、16ビットで表現できる最小値です。
それ以下の信号は16bitでは表現できないので、基本的に消えてしまいます。
※ただしディザリングを行わない場合。

それに対し、-96dBFS以上の信号は大量のノイズを生じさせます。
ディザを伴わないビット長変換が下位ビットの単純な「切捨て」によって行われるため、-96dBFS付近の信号に対して大量の誤差が生じます。

続いて、先ほどの1kHzトーンにディザ・ノイズを加えてから16bitに変換してみます。

平らなノイズフロアが生じましたが、少なくとも不要なスパイクは発生しなくなりました。 周波数分布の面で、どちらがアナログに近く、耳に優しく自然かは自明でしょう。

※なぜノイズを加えることで信号精度が保たれるのか?についての大雑把な説明は、旧ページの末尾をご覧ください。

ディザ・ノイズの種類

ディザに使用するノイズは、先の例のように周波数の分布が均一(フラット)である必要はありません。
楽音にとってさほど重要でない帯域にノイズを集中させ、埋もれさせたくない帯域をクリアに保つことも可能です。(このようにディザ・ノイズの周波数分布を調整することをNoise shapingと言います)

参考までに、SONARで再生や書き出しを行う際に選択可能なディザ・ノイズのスペクトラム一覧を記載します。

音源によって最適なディザ・ノイズの種類は異なり、一概に万能といえるものはありません。試行錯誤の段階で、ディザ・ノイズやビット・クォンタイズ(後述)をリアルタイムで変更できるプラグインが一つあると便利です。(PSP audioware: X-Dither、等々)

ディザ・ノイズを選択する際に一つだけ注意すべき点があります。 制作の行程で、後々ビット・レートを落とす作業が複数回生じるとわかっているとき…たとえば、マスター書き出し以外に、バウンス、フリーズ・トラックなどを16/24ビットで行う場合は、なるべくフラットなディザ・ノイズを選択するべきです。というのも、帯域の偏ったディザ・ノイズを複数回かけると、同一帯域に累積したノイズが楽音に影響を及ぼす可能性があるからです。

-96dBFSの壁を破るウルトラC

ここで一つ実験をしてみましょう。
-100 dBFSの1kHzトーンに、Pow-r3というタイプのディザ・ノイズを加えてみます。 Pow-r3は、音程感が希薄な高域にノイズを偏らせる代わりに、ボーカルなど中心になりやすいパートの芯をつかさどる3~4kHz付近にディップのあるノイズ・パターンです。

上図からわかるように、本来-96dBFSまでしか収録できないはずの16ビット録音において、-120 dBFS程度のトーンを再生することに成功しています。 このトーンはスピーカの音量を上げれば、実際に聞き取ることもできます。(当然ノイズも聴こえますが…)

これまで見てきたように、ビット・レートを落とすときは、なにかしらのディザ処理を行うことが必須です。ノイズを加えるという行為に抵抗を感じられるかも知れませんが、それを怠ることによる弊害の方が、はるかに大きいことは理解しておくべきです。
マスター・バス (32ビット浮動小数点数)の出力をCDマスタリング時に16/44.1に変換する場合なども例外ではありません。

有効ビット長の測定

16/24ビットの音声ファイルがDAWのバスを流れるとき、信号は一旦32ビット浮動小数点数に変換されることは、別記事「ビット・レートとバス幅」で、またビット・レートを下げるときは、必ずディザ処理を行う必要があることは前節で説明しました。

実は、1つだけ特殊な条件下でディザリングを行わない方がよい場合があります。それは、バスを流れる音声がすでに「クォンタイズされている」ことが、あらかじめ判っているときです。

無限の解像度を持つアナログ音声を16/24ビットで取り込むとき、録音するマス目ににドンピシャで対応するマス目がなければ、丸め込みによる誤差が大なり小なり生じることは、先に書いたとおりです。

逆に、すでに16/24ビットでサンプリングされた値を32ビットに変換するときは、ドンピシャで対応するマス目が存在します。
こうして変換されたデータをまた16/24ビットに書き戻すとき「信号レベルになにも変更を加えていない」場合に限り、きっちり元の16/24ビットの値に戻ります。 このように32ビットの信号でありながら、すべてのデータがより短いデータ長にドンピシャで対応している状態を、値が「クオンタイズされている」と言います。 MIDIシーケンサにおいて、拍で指定した解像度にノート・オンのタイミングをぴったり合わせる機能としてお馴染みの用語です。

では、ディザが不要になる具体的な状況とはどんなものでしょう?

  • DAWに取り込んだファイルを、そのまま元のビットレートで書き戻した。
  • 部分カットやタイミングの編集などのみを行い、元のビットレートで書き戻した。

ここでいう「カット以外の変更を加えていない」とは、タイミング(ヨコ軸)は変更してもよいが、音量(タテ軸)は一切変更されていないことを意味します。
トラックのフェーダを通してわずか0.1dBでもレベルを増減した場合、レベルを表す元の数値に対して非整数倍の掛け算を行うことになります。すると途端に16/24ビットの解像度では表現できない数値が現れ、これを16/24ビットに書き戻す際は、再び近似値に丸め込む必要が生じます。クロスフェード、エフェクト処理を行った場合も同様です。

このように、信号に音量変化がない場合に限り、ディザリングは元々不要なノイズを加えることになり、反って音質面でデメリットが生じます。

ディザが必要かどうか目視で判断できる「ビット・メータ」

ここまでの話を面倒と思われるかも知れませんが、実は難しく考える必要はありません。ディザ処理が必要かどうかは、ファイルの書き出し前に目視確認すればよいのです。そのためのツールが「ビット・メータ」です。

「ビット・メータ」は一部DAWには標準で付属します。筆者が愛用しているSONARも近年のバージョンはそのものズバリ「Bitmeter」というプラグインがあります。

ここでは汎用性を持たせるため、フリーのVSTプラグイン「Bitter」を紹介します。
http://www.stillwellaudio.com/plugins/bitter/

Bitterをバスの最終段に立ち上げると、その地点を流れる信号が各ビットを使用している割合をバー・グラフで表示します。
通常はマスター・バスなど、出力直前の最終段に挿して使用します。また、ビット・メータ挿入以降のフェーダを動かすと意味がなくなるため、注意が必要です。

上図は、CDからリッピングした16ビット/44.1kHzのファイルをそのまま再生したときの様子です。信号は32ビット浮動小数点数のバスを通っているにも関わらず、すでに16ビットにクオンタイズされていることがわかります。

では、このトラックの入力ゲインを0.1dB下げるとどうなるでしょう?

元のファイル(信号レベル)に対して非整数倍の掛け算が行われ、途端に32ビット浮動小数点数でしか表現できない値が連続するようになりました。

入力ゲインを0に戻すと、再び16ビットにクォンタイズされた状態に戻ることがわかります。

このBitterは、ご覧のようにSample Clip、Intersample Clipもカウントしてくれる、大変便利なツールです。ファイル書き出し前の最終確認用に使用されることをお勧めします。

ビット・メータは、他のVSTプラグイン内の「バイパス」を有効にしたときや入出力レベルを0にしたときなど、本当に文字通りバイパスしているのかを調べる場合にも有効です。信号に変更を加えなさそうな設定でも、思いのほか入出力の信号が一致しないことがあります。一見信頼性が高く、かつ単純な作業をしているように見えるDAW標準付属のプラグインとて例外ではありません。

ディザが必要かどうか迷う場面

最後に、ディザ処理を行うべきかどうか、原則が適用されず判断を迫られる場面をいくつか考えてみましょう。

  1. CDからリッピングしたファイルで、クロスフェードのみを使ってミックス・テープを作る場合
    フェーダは動かさず、クロス・フェードのみを使用した場合、バスを通る信号のうち16ビットにクォンタイズされていないのはフェード部分のみです。(もちろん、トラックのゲインを変えていないことが前提です) 曲の大部分の品質を維持するには、あえてディザ処理を行わないというのも手です。
  2. CDからリッピングしたファイルに、軽いピーク・リミッタをかける場合
    ピーク・リミッタが、コンプレッションをかけたサンプル以外は透過的に通すことが前提です。
    先の例と同様、リミッタによりレベルを下げられた一部のサンプルを除き、信号レベルは元のままです。
    この場合、先の「Bitter」で確認すると、曲の大部分は16ビット分のバー・グラフが立ち、たまにリミッタが動作する瞬間のみ17以上のビットを示すバー・グラフがわずかに振れるのが見られます。