非可逆圧縮によってクリッピングが発生する問題とmp3gain(aacgain)

十数年ずっとmp3・aacエンコードをし続けているのに、元ソースがノンクリッピングでもエンコードした後の音源はクリップすることがあるという致命的な問題をまったく把握できていなかった。何故かあまりそれに関して騒ぎ立てるような情報が自分のアンテナにインプットされてこなかった。

 

この問題を把握するにあたって非常に参考になったリソースを紹介。

 

soundevotee.net

ameblo.jp

note.mu

www.dtmstation.com

そして…

 

Mastered for iTunes

https://www.apple.com/jp/itunes/mastered-for-itunes/docs/mastered_for_itunes-jp.pdf

 

に記載されていることによれば、

 よく用いられるプロセスのひとつがオーバーサンプリングです。オリジナルデータを4倍のサンプルレートでアップサンプリングすると、結果的にアナログへ変換されるデジタル音声信号のクオリティが向上します。この時にオリジナルデータが0dbFSであれば、オーバーサンプリングによりクリッピングが発生する可能性があります。オリジナルのデータが既にクリッピングしていた場合、オーバーサンプリングによってさらに悪化させることになりかねません。これを避けるため、デジタルマスターには若干の余裕(1db程度)を持たせることが推奨されています。

 

なので、wavの段階で波形が0dBに貼りついているような音源はまずアウト、となるとCDから直接aacリッピングするようなケースはほぼアウトですよね…。

 

ただ、mp3/aacエンコードした後、音量を均一化させるために私はmp3gain (aacgain)を使用していて、これで目標標準音量を音量を下げる方向に設定してやると、ノンクリッピングなファイルにすることはできます。

 

ここで気になるのは、エンコードした結果クリッピングしているファイルをmp3gain(aacgain)で補正した結果は本当に音がつぶれていないのか? それとも音がつぶれてしまった後で音量を下げているだけなのか?

 

元ファイルの音量を1~2dB下げてからエンコーダにかけるのと同じような効果が、mp3gain(aacgain)で手軽に得られるのなら、今までこの問題を知らずに作り続けてきたmp3/aacファイルをそのまま使い続けられるのですが。

 

でもこの問題を解き明かしたネット記事が今のところ、見つからないのです。

エンコード前の音量を下げておくという手順の追加は、根本的にクリッピングを解決できますがあまりにもインパクトが大きすぎるので、mp3/aacのスケールファクタで補正する手法で問題ないと安心したいのです。

 

以下、まったく自信のない私の推論。

 

ディザリングや丸め誤差の蓄積によって標本点の音量が元よりも大きくなって0dBを超えてしまった時、mp3/aacフォーマットは0dBよりも大きな音を記録できるのか。圧縮音源にはビット深度の概念がないようなので、それなら最大音量も定義できないように思えるけれども本当はどうなのか。

もしmp3/aacフォーマットが0dBよりも大きな音を「記録できる」が正解なら、スケールファクタを書き換えることで台形潰れ(saturation)していない波形を復元することができるけれども、「記録できない」が正解なら、エンコード前の音量を下げておくしか解決策になり得ないことになります。

 

Firefoxのオプション設定がいつの間にか変わっていた

以前からずっと、firefoxの起動時の設定を「空白ページ」にしつつ、ホームボタンを押したらホームページに設定している複数のタブ(カスタムURL)が開くという運用をしてきたのだけど、そのカスタムURLを変更しようとして異変に気付いた。

最新のfirefoxでは、起動時にカスタムURLを開くか空白ページを開くかのどちらかしか指定できなくされていた。起動が重いから二段構えにしていたのに…。

カスタムURLを残しつつ、起動時にはどのページも開かないという設定は、どうすれば復活できるのでしょう(´;ω;`)

Spotifyで河合奈保子…でも問題が

定額聴き放題にようやく慣れてきました。

近場のCDレンタルからも姿を消しているような旧盤でも、Spotifyにあれば気軽に聴けます。

 

ただ…

open.spotify.com

私の環境で河合奈保子さんの「Summer Delicacy」というアルバムを再生すると、シングルの「疑問符」だけ大音量で再生されてしまいます。他のアルバム曲と音量がそろっていない。

同様に、

open.spotify.com「HALF SHADOW」というアルバムにおいても、シングル(アルバムに収録されているものはテイクが異なるはずなんですが)の「エスカレーション」と「UNバランス」だけ音量が違います。

日本コロムビアといえば老舗中の老舗。なのに、マスタリングの異なるものを混ぜてしまっているのでしょうか。

Spotifyではアルバム再生時にアルバム全曲が統一された音量で聴けるように調整されるのですが、こういうことをされてしまうと無意味になってしまいます。

残念。

 

 

windows10で内部音声を録音する方法 (3)

AudacityでのWASAPIループバック録音に使用するデバイスを、USBオーディオではなくオンボードオーディオにしたほうが音質がよくなった理由を想像してみた。

単純にUSBオーディオ側がWindows XP当時から使用し続けている古い機器だからなのかもしれないけれど、気になったのはWASAPI排他モードで指定できるサンプリングレートが48000Hzのみだったこと(ビット深度も16か24のみ)。再生したい音源は44100Hzなので、オーディオエンジンで48000Hzにリサンプリングされてしまったものがループバックされているという仮説。

オンボードオーディオを指定した場合は、すべてを44100Hzに統一できるので、サウンドの設定で、再生させる音源以外をすべてミュートすれば、オーディオエンジンでのリサンプリングがかからずに済むのかも。

 

 

2019/03/06追記

https://blogs.yahoo.co.jp/nightwish_daisuki/63884815.html

を見る限り、再生側がWASAPI対応でなくても条件が揃えば音質劣化を回避できるようです。

なので、自分が試しているアプローチは有効と考えて良さそうです。

 

windows10で内部音声を録音する方法 (2)

前回の続き。

結論として、ループバック録音に関してはAudacityを使用することにした。

また調査の過程で気づいたこととして、現状のPC環境では、ループバック録音に使用する再生デバイスUSBオーディオ[Roland UA-30]にするよりもオンボードRealtek High Definition Audio]にした方が明らかに音質が良くなることも判明した。しかもイヤホンジャックからの音声出力をミュートして、録音デバイスをすべて無効にしても録音ができることもわかった。

再生側のアプリケーションでWASAPIもASIOも指定することができそうにないため、Windowsのオーディオエンジンを通ることは避けられないけれど、再生デバイスを変更するだけで音質が向上するのは驚きだった。

オンボード側からは音声を出力させていない(背面からケーブルを引き回さないといけないのと、今までUSBオーディオで事足りていたので)ので、ループバック録音するときと普通に音をイヤホン出力するときでいちいち再生デバイスを切り替えないといけなくなったのは面倒だけど、音質が変わるのでこれは許容するしかない。

 

windows10で内部音声を録音する方法

Windows10以降、内部音声の録音はMoo0 音声録音器v1.46を使用していた(このソフトでは何も考えなくても簡単に録音できていた)が、サンプリングレートやビット深度の設定が自由にできないので別の方法を模索した。しかし、Audacityに関しては録音可能とすることができたが、Sound Engine Freeでは録音可能な状態に設定することができなかった。

 

Audacity

www.gigafree.netに書いてある通りにするだけで録音が可能になった。

具体的には、

  1. まず、OS 側で 録音デバイスの設定 を行っておきます。
  2. audacity.exe」を実行します。
  3. メニューバー上の「編集」から「設定」を開きます。
  4. 左メニュー内の「デバイス」をクリック → 右下にある「録音」欄で、録音デバイス&チャンネル を正しく設定しておきます。

と書かれている部分。録音できなかった私の環境では

f:id:behappy510:20190224154856p:plain

Audacityのデバイス設定画面

となっていた(一度も設定を変更していないためWindows10のデフォルトがMMEなのか)。インタフェースのホストがMMEになっていると内部音声の録音ができないっぽいので、上記サイトの通りに「Windows WASAPI」に変更。そうすると、録音デバイスに「スピーカ(USBオーディオバイス)(loopback)」が選べるようになるので選択。

 

この設定でUSBオーディオから出力される音声をAudacityで録音できるようになった。

 

Sound Engine Free v5.23

こちらは録音可能な状態にすることができなかった。

起動し、録音タブをクリックすると

f:id:behappy510:20190224155457p:plain

Sound Engine Free エラーダイアログ

となってしまう。エラーメッセージをもとに参考にしたサイトは

phoenix2016.seesaa.net

ここに書いてある通りにプライバシー設定でマイクを渋々有効にすると、undefined external errorは発生しなくなった。しかし依然として録音ができない。次に参考にしたサイトは

www.gigafree.net

ここに書いてある通りにコントロールパネルから「サウンド」をクリックすると

f:id:behappy510:20190224160048p:plain

サウンドのプロパティ(録音)

のようにステレオミキサーが無効になっていたので有効に変更。それでもSound Engineでは録音可能にならず。

そもそも、この辺りの設定変更を一切しなくてもMoo0やAudacityでは録音ができていたので、Sound Engineは外部入力の録音のみを想定した実装になっていて、内部音声のループバック録音にはそもそも対応していないのかもしれない?

 

 

 

 

 

 

Spotifyでエイス・ワンダー

open.spotify.com

フィジカルのアルバムと上記Spotifyでは1曲目・2曲目の順序が入れ替わっているのはなぜなのだろう。英国版と日本版で曲順が違っていたのかとも思ったけどそれを裏付ける情報にもたどり着けない。単なるミスなのかなぁ。

 

デビュー曲「Stay with me」はアーティストページには表示されないけれど、80年代コンピレーションアルバムの中の曲としてSpotifyでも聞くことができる。