DTM: なぜ16bitではなく24bit以上で出力しないといけないか?

ネット配信する音声にディザリングをかけてはいけない

謝花ミカ
Aug 3, 2020

音楽や動画を制作するDTMerやYouTuberにとって、圧縮技術を知っておくことはより高品質なコンテンツを提供することに繋がる。今回はビット深度とディザリングについて、そしてコンテンツを配布する際に避けては通れない圧縮についての解説記事だ。

記事は長いので要約すると、非CDメディア向けにはディザなし24bitで出力、CDなど16bit PCMメディア向けにはディザありで出力しようということだ。

量子化とは? — なぜディザが使われてきたか

インターネット上において、録音したそのままの音声をそのまま配布することは難しい。PCM 16bit/44.1kHzすなわち、CD音質の音声のビットレートは1411kbpsに達し、これは3分で32MB近くになる。また、このビットレートでは“ギガ”を使い切った後に低速モードに制限されるときにおいては再生もままならない。楽天モバイルやUQモバイルは1Mbpsとなっているから、411kbpsもオーバーしているのだ。

一方でAACやOpus、MP3といったコーデックにより圧縮すると、大抵64〜192kbps程度(コーデックによる)で高音質なコンテンツを提供できる。

そのため、SoundCloudやYouTube、Apple MusicやSpotifyをはじめとしてほぼ全てのプラットフォームは音声圧縮を行っている

量子化

2bit量子化 — アナログ音声は振幅方向が4段階の数値に置き換えられる (画像出典: Wikipedia Hyacinth/CC BY-SA 3.0)
3bit量子化 — 8段階になり2bitよりも細かい波が表現できる (画像出典: Wikipedia Hyacinth/CC BY-SA 3.0)

音声圧縮の前に避けては通れない話題に“量子化”がある。これはアナログである音声をデジタル(PCM)に変換する際に必ず必要になる処理で、波をデジタルで表す際に必要となる。デジタルは連続ではなく離散的な値をとるので、簡単に言ってしまえば0.1523…を0.2にしてしまうような、四捨五入のようなものだと思ってよい

アナログ音声の縦の方向、つまり振幅をデジタルの世界に持ってくるときに四捨五入するのが、量子化ということになる。

細かければ細かいほど音質がよくなるのは当然であるが、試しに8bitに落とした音声を聞いてみよう。

違うビット深度の音声を聞き比べる

SoundCloudでダウンロード可能になっているので、ガチで比較したい方はダウンロードされると良いだろう

24bit オリジナル
8bit ディザなし
8bit ディザ・ノイズシェーピングあり

全く違うのがわかるだろうか?オリジナルと比べると、8bitは量子化の際にノイズが乗ってしまっており、音量を上げるとFMラジオのようなノイズが聴こえるのがわかる。しかしながら、ディザを適用して8bitに変換した最後の音声は、ノイズが気にならないのがわかるだろう。

こうした量子化はCDの場合、16bit (65536段階) の数値を使っている。この細かさだと、普通は聴覚できるようなノイズはないが、レコーディングエンジアはほんの小さなノイズも防ぐためにディザやノイズシェーピングをかけて、CDの音質を向上させている。

圧縮前の音声にディザリングやノイズシェーピングを行ってはいけない理由

24bit オリジナル音声
8bit ディザなし
8bit ディザ・ノイズシェーピングあり

しかしながら、CD時代には必須とも言えたこうしたディザリングやノイズシェーピングは、圧縮音声がメインとなる現代では不要なものとなりつつある。なぜだろうか?

まずは、オリジナルのスペクトログラムを見て欲しい。これはDAWから出力し、何の処理もしていない原音である。注目すべきは14kHz以下の可聴域だ。14kHzを超えた部分は人間は聴覚しづらくなるため、あまり重要ではないからだ。可聴域の再現性をオリジナルとディザ処理後とで比較してみよう。

ディザなし音声では、下から上まで可聴域含め全ての周波数帯域で色が赤っぽくなっていて、黒と赤のコントラストが目立つ。オリジナル音声と比べると、ノイズフロアが持ち上がり、ダイナミックレンジが狭くなっているのがわかるだろう。

ノイズシェーピングとは

一方で8bitのディザ・ノイズシェーピングをかけた音声のスペクトログラムを見ると、12kHz以下ではオリジナルに近付いたような色になっているのがわかる。このおかげで可聴域のノイズが減らされ、非常に聴きやすい音声になっているのだ。

一方で、14kHz以上がオリジナルにはない赤いラインになっているのがわかるだろうか。これは、ノイズシェーピングによって、可聴域のノイズを人間に聴覚できない超音波域に押し込んだと考えてもらって良い。道路のゴミをホウキで集めて、道の傍らに移動させた格好だ。

ディザとはなんなのか

ディザの説明 (CC BY-SA 3.0: Wikipedia Jalo)

ディザとは何かを知るために、漫画における「トーン」を思い出してみたい。漫画は1bitのモノクロであり、白か黒しか色はないが、トーンによって灰色を表すことができる

ある種の「ノイズ」を加えることで、見せ方を自然にするのがディザである。

示した画像では、赤と青の二色つまり1bitのパターンでしかピクセルを表現していないが、知覚的には紫を認識させることができている。これと同様に、ディザによって、8bitしかなくても、より多くのパターンを人間に知覚させることができる。

こうしたものと同じ考えが、音声での量子化におけるディザリングである。

ディザリングによって16色に減色しても自然に見える一方、拡大すると元画像になかったノイズが現れていることがわかる (CC BY-SA 3.0: Wikipedia Jamelan)

しかしながらこうしたノイズは、音声圧縮の時の邪魔になるのだ。ディザリングで元になかったものが現れたり、ノイズシェーピングで元になかったノイズが高域に押しやられていたりすると、音声圧縮を行った時に「冗長」、つまり余計なデータとしてビットレートを浪費することになる。

ネコの画像を見てみよう。図6で、唐突に緑っぽいドットが現れているのがわかるだろう。これはエラーでもなんでもなく、ディザのアルゴリズムがこの色をここに置くことにしたのだ。そうすれば、全体で見た時に画質がよく見える。ディザをしていない図5と比較すると良い。ネコの喉元の見え方がかなり違う。

しかしながら唐突に現れる緑のドットは、画像圧縮においては圧縮しづらいものになり、例えばJPEGであればこの種の高周波成分はモスキートノイズとなって現れるかもしれない。それと同じことが音声でも起こりうるのだ。

Apple Musicに見習おう

Apple Musicで、認定されたスタジオしか取得できない「Apple Digital Masters」という制度がある。これは、簡単に言ってしまえば、本記事の主旨と全く同じで、「24bit以上でディザなしのマスター音声をアップロードしてくれ」というものである。

その理由はApple Digital Mastersのドキュメントに記載されている。

ディザリング(またはアディング・ディザー)はビット深度を落とす(24-bitから16-bitなど)ためのテクニックで、ダウンサンプリングの際に生じる歪みを減らすことを目的としていますが、歪みが減る代償としてノイズを加えることになります(他の方式としてトランケーションと呼ばれる音情報の切り捨ても行われることがありますが、量子化雑音を生む可能性があります)。

中略

その後エンコーダは、可能な限りの解像度を使用して24-bitソースファイルのダイナミックレンジを保存し、アディング・ディザーを不要にします。この方法の利点は、ディザリング ノイズを加える必要性がなくなるだけでなく、不必要なノイズをエンコードしてリソースを無駄に消費することがないため、エンコーダの効率が向上することです。

前述したように、ディザリングはノイズを加えることで、見た目や聴感をよくするものなのだ。これはビット深度が高ければ本質的には不要なものであり、また音声圧縮を行う際には邪魔ですらある。

24bitで出力したファイルと、16bitのディザ付きで出力したファイルは、確かに人間には判別がつかない。しかしながら、そのファイルを同じようにMP3やAACなどのエンコーダに入れた時、圧縮の効率性が変わってしまうのだ。

24bitで出力したファイルはディザをかけていないから、余計なデータが含まれていない一方、16bitディザ付きのファイルはディザの部分が余計であるため、この部分を圧縮する際に余計な容量を消費する。これは固定ビットレートの際は品質が悪化し、可変ビットレートの際はサイズが増加してしまうことを意味する。

おすすめは24/32bit float、ディザなし

以下の記事でも挙げたように、私は24bit integer (整数)か32bit floating-point (浮動小数点)で音声を出力することを推奨している。録音、ミキシング、マスタリングの全ての過程でだ。Logic Pro X は24bitまでだが、32bitができるDAWなら必ず32bit floating-pointで出すことだ。

それにより量子化誤差は最小に抑えられ、そのファイルをSoundCloudやYouTubeといったサイトにあげれば、エンコード後のファイルは高音質になる。また手元でMP3やAACなどにエンコードする際も、24bitで出力し、そのファイルをそのままMP3やAACエンコーダーに入力することになる。

とにかく、エンコーダでエンコードする時に入力するファイルは24bit以上で食わせろということになる。

※32bit floating-point は0dBFSを超えても音割れせず表現ができるフォーマットではあるが、ターゲットとする圧縮コーデックにおいては音割れが起きうるので、少なくとも-1dBFSのヘッドルームを置くことをおすすめする。なお、整数部分では24/32bit floatともに表現力は同じであるが、32bit floatは中間フォーマットとして音割れを防ぐことができるメリットがあるため推奨している。十分なヘッドルームがあれば、音質は24 int/32 floatの間で変わらない。

ディザが必要な時

最終的に求められているのが非圧縮なPCMまたは可逆圧縮(FLACなど)で、16bit以下の時にはディザが必要となるだろう。例えばCDのマスターを16bitで入稿する時などだ。その場合は迷わずディザをかけよう。

しかしながら、24bitなどのハイレゾを制作する場合は不要だ。

言わずもがな、ネット配信、配布などで圧縮音声を配信する時は悪影響しかないので、ディザが不要というよりは、積極的にやめたほうが良い。これがこの記事で言いたかったことだ。

聴く側に24bitは必要か?

私は必要がないと思っている。その理由は、24bitと16bit (ディザ有無関係なく)は「ほぼ確実に判別できない」と断言できるからだ。「絶対に」と修飾したくなるレベルだが、さすがに科学的には言い切れないのでやめておく。誰でもfoobar2000+foo_abxなどで簡単に試せるので、やってみると良い。

ところで、先ほどの「8bit ディザ・ノイズシェーピングあり」のファイルを聴いてみただろうか?全く違和感なく聴けたと思う。二つを並べられても違いなどわからない。ボリュームを上げて耳が壊れるほどの大音量で聴けば、ノイズが聴き取れるかもしれないが、耳を壊すのはおすすめしないので、試さないほうが良いだろう。

あるいはあなたがかなり若い(高校生くらい)であれば、ノイズシェーピングで14kHz以上に集まったノイズを聴いてすぐに判別できるかもしれない。

それどころか、8bitディザなしでも、唐突に聴いて比較することがなければ、問題なく聴くことができるレベルである。さすがに、違和感がないとまでは言えないが。

CD規格を作るときの有名なエピソードとして、フィリップスが12bit (4096段階)で十分と言ったという話がある。CDはそれよりも余裕のある16bit (65536段階)となっており、コンシューマーレベルでは必要十分と言える。

そもそも量子化誤差によるノイズは音量を上げないと聞き取れない。16bitで歪みを聞き取れるほどのボリューム設定で音楽を聴くと、耳だけでなくオーディオシステムも破壊されるだろう。

--

--

謝花ミカ

理系と文系の学際的領域から社会学、自然科学、工学分野について記事を書く。