2

96 kbit の mp3 があり、そのファイルを 320 kbit の mp3 にトランスコードするとします。元のビット レートまたは品質をプログラムでどのように検出できますか? 損失の多いアルゴリズムが適用されるたびに、新しい情報が「不要」と見なされて破棄されるため、ジェネレーション ロスが発生します。アルゴリズムがこのプロパティを使用して、オーディオのトランスコーディングを検出するにはどうすればよいでしょうか。

128 kbps LAME mp3 を 320 kbps LAME mp3 にトランスコード (I Feel You、Depeche Mode) 10.8 MB。
代替テキスト

この画像は、このサイトの下部から取得したものです。上記の 2 つのトラックはほぼ同じに見えますが、その違いはこの議論を裏付けるのに十分です。

4

4 に答える 4

4

それを行う 1 つの方法は、信号のスペクトルを分析することです。正確な元のレートを判断できるかどうかはわかりませんが、実際の 320 kbps mp3 とトランスコードされた 96 -> 320 kbps を確実に区別できます。96 kbps の mp3 では、15 kHz 程度でカットされた高周波が使用されます。320 kbps は、約 18 ~ 20 kHz またはそれ以上 (エンコーダーによって異なります) で非ゼロになるはずです。

于 2010-05-26T03:38:18.857 に答える
2

ビットレートはMPEGフレームヘッダーに保存されます。ID3のようなもので元のビットレートを保存しない限り、簡単な方法はありません。

編集:答えを更新しました。元の質問を誤解したようです。

于 2010-05-26T03:20:01.697 に答える
2

元の MP3 を非圧縮形式 (WAV など) に変換してトランスコードし、より高いビットレートで MP3 に再エンコードする場合、変換されたファイルだけでは元のファイルのビットレートを特定することはできません。このプロセスは、統計的に分析できる信じられないほど微妙なオーディオ アーティファクトを生成する可能性があると思いますが、私の意見では、これは非常に困難な作業であり、成功する可能性は低いでしょう。

デコードと再エンコードを行わずに MP3 をアップレートすることさえ可能かどうかはわかりませんが、可能であったとしても、プロセスは新しいファイルで元のビットレートを保持しません。繰り返しになりますが、このプロセスは、元のビットレートを示唆するような奇妙な測定可能なアーティファクトを生成する可能性がありますが、私はそれを疑っています.

更新: 考えてみると、プログラムでそれを行う方法はわかりませんが、何とかこれを検出できる可能性があります。人間の耳は次のように区別することができます (いくつかはともかく)。アップコードされた 96k MP3 には、96k バージョンに存在するすべてのオーディオ アーティファクトが残っています (残念ながら、新しいアーティファクトも含まれています)。

ただし、コードでこれを決定する方法はわかりません。もし私がこれを機能させなければならないとしたら、私はハトを訓練してそれを行うでしょう (冗談ではありません)。

于 2010-05-26T03:31:18.593 に答える
1

スペクトル表示に見られる違いは、おそらく量子化エラーによるものです。低いビットレートのオーディオ ファイルのビット深度 (解像度) を最大にし、アップコンバート (オーバーサンプリング) するときにそのビット深度を維持すると、スペクトル表示はより厳密に一致するはずです。エンコーダーは、量子化エラーによるオーディオ アーティファクトを回避するために、ディザリングも使用した可能性があります。

低いビットレートでビット深度がすでに最大になっている場合は、追加されたポイントが明らかになり、波形にぎざぎざのエッジが表示されます。そうしないと、十分なビット深度があれば、どのポイントがオリジナルで、どのポイントが追加されたかを判断できなくなります。これは、既存のポイント間に均等に新しいポイントを単純にプロットするのではなく、曲線を使用して新しいポイントを投影するハイエンドのアップコンバーターに特に当てはまります。

定義上、サンプル レートは可能な周波数範囲を決定するため、Igor が提案したように、これが元のビットレートを決定する最善の策となります。

于 2010-05-26T06:10:22.617 に答える