Web開発
少ないほど良い:SoundCloudのオーディオが異なる見た目になる理由
Less Is More: Why Audio on SoundCloud Looks Different (developers.soundcloud.com)
要約
SoundCloudは最近、10年以上ぶりにAACエンコーダーをアップグレードし、知覚オーディオ品質が向上しました。しかし、スペクトログラムで見ると、17kHzで急激にエネルギーがカットされているように見えます。これは、人間の聴覚感度が2-5kHzで最も高く、17kHz以上はほとんど知覚できないため、ビットレート最適化のために最もコストのかからない高周波帯域をカットし、可聴範囲の信号精度を向上させるための意図的なトレードオフであることを説明しています。
全文翻訳
少ないほど良い:SoundCloudのオーディオが異なる見た目になる理由2026年6月18日 Joe Reid著昨年、SoundCloudは10年以上ぶりにAACエンコーダーをアップグレードしました。新しいエンコーダー(Fraunhoferのlibfdk_aac)は、私たちが追跡するすべてのメトリックにおいて、より高い知覚オーディオ品質を提供します。しかし、スペクトログラムを見ると、予期しないことに気づくかもしれません。シナリオはこうです:ロスレスマスターをアップロードします。SoundCloudからトラックをダウンロードしてスペクトラムアナライザーで開きます。20kHzまでエネルギーがあった場所に17kHzでハードシェルフがあります。古いエンコーダーはこれらの周波数を保持していました。新しいエンコーダーはそれらを削除します。これはダウングレードのように見えます。実際は逆です。理由はこちらです。ロスレス対ロッシーロスレスファイル(WAV、FLAC)は、すべてのサンプルをそのまま保持します。入ったものはそのまま出てきます、ビット単位で。決定なし、妥協なし。ロッシー圧縮(AAC、MP3、Ogg)は異なるゲームです。エンコーダーはターゲットファイルサイズを達成するために何かを捨てる必要があります。問題は情報が失われるかどうかではありません。失われます。問題は、何を選択して失うかです。すべてのビットをカウントするSoundCloudがアップロードをAACに圧縮すると、エンコーダーはオーディオのチャンクごとに固定数のビットを受け取ります。それを周波数帯域に分割します。帯域あたりのビット数が多いほど、より忠実な再現が得られます。少ないほど歪みが大きくなります。すべてに十分なビットはありません。エンコーダーはどこにそれらを使うかを選ばなければなりません。スライダーを操作するビットレートが下がると、量子化された信号は元の周波数分布からさらに離れます。しかし、ローパスフィルターを左に引くと興味深いことが起こります:エンコーダーは上位周波数を諦め、それ以外はよりシャープになります。それがトレードオフです:ほとんど聞こえないものをドロップし、聞こえる場所でよりクリーンな信号を得る。なぜ上位周波数なのか?人間の聴覚はフラットではありません。私たちは2〜5kHzの間で最も敏感です。高周波数では感度が著しく低下し、ほとんどの大人は理想的なリスニング条件下でも17kHzを超える音を確実に知覚できません。このため、最も高い周波数はビットレート最適化の最も効率的な機会の1つを提供します。スペクトルの最上部でのわずかな削減により、エンコーダーはより広い範囲の可聴コンテンツ全体で精度を向上させることができます。スペクトログラムはすべての周波数を平等に扱いますが、私たちの耳はそうではありません。エンコーダーは、グラフがどのように見えるかではなく、人がどのように聞くかに基づいて設計されています。エンコーダーは、コストが最も少ない場所でカットします。なぜ低音をカットしないのかと尋ねるかもしれません。低周波数はエンコードにほとんどビットを必要とせず、聞くだけでなく感じることもできます。スペクトルの最上部は、これまでのところ最も安価な犠牲です。実際のオーディオでこれがどのように見えるか古いエンコーダーと新しいエンコーダーで処理されたポップミックスを見てみましょう。このプロットは、エンコードされたオーディオと元のオーディオとの差を示しています。赤はエネルギーが削除されたことを意味し、青はエンコーダーが何かを追加した(アーティファクト)ことを意味します。新しいエンコーダー(右)は1つの明確な犠牲を払います:意図的にカットした上部の赤い帯域。その下は、ほとんど何もありません。古いエンコーダー(左)は別の話です:高音域の中間(最もよく聞こえる範囲で失われた信号)に点々と赤い部分があり、低音域に青いパッチ(エンコーダーが作り出したアーティファクト)があります。それはあらゆる場所で同時に戦っています。フィルターの有無によるエンコーダーの比較を示す棒グラフで同じ話を示します:フィルターオフ(赤)の場合、エラー率は耳が最も鋭い中間範囲全体で高くなります。フィルターオン(青)の場合、それらの帯域はより多くのビットを受け取り、エラーは減少します。フィルターはまさにやるべきことをやっています:認識できないトップを、よりクリーンなミドルと交換しています。しかし、256kbpsについてはどうでしょうか?これはもっともな質問です。256kbpsでは、ほぼすべてのものに十分なビットがあります。フル帯域幅は問題なく機能すると期待するでしょう。そして、それはほぼ機能します。しかし、「ほぼ」でも、複雑なパッセージの中間範囲でエンコーダーが難しい選択を迫られることになります。私たちが使用しているエンコーダー(Fraunhoferの実装であるlibfdk_aac)は保守的です:256kbpsでも、約17kHzで穏やかなロールオフを適用します。改善は低ビットレートの場合よりも小さいですが、それでも測定可能です。256kbpsでこれが正しい判断でしょうか?本当に議論の余地があります。しかし、それは恣意的ではありません。Fraunhoferは何十年にもわたる広範なリスニングテストでこれらのカットオフポイントを検証しました。しきい値が存在するのは、訓練されたリスナーが確実に違いを識別できず、解放されたビットが残りの信号を測定可能に改善したからです。聞いて判断するグラフを一日中見せることもできます。代わりにブラインドテストを行います。同じオーディオの3つのクリップ。オリジナルと256kbpsでエンコードされた2つ:1つはローパスフィルターあり、もう1つはなし。どれがどれかわかりますか?ローパスフィルターが適用されているのはどれですか?結論あなたのトラックは壊れていません。見た目よりも音が良いだけです。← API認証情報とターミナル、およびGitHub上のOpenAPI