MP3デコードの不一致


7

2つの異なるデコーダーが同じMP3に対して2つの異なるサンプル結果を出力することは可能ですか?私はMatlabでmp3をデコードし、2つの列を生成します(おそらく各チャネルに1つ)。AVAssetReader(iOS)を使用して同じファイルからサンプルデータを抽出すると、異なる結果が得られます。WAVファイルで同じコードを試したところ、2つの結果が一致したので、コードは問題ないと思います(Matlabの結果には余分な空白フレームがいくつかありました)。

非科学的に、AVAssetReader MP3の結果からランダムな値を選択し、Matlabの結果でそれらを検索すると、それらは存在する傾向がありますが、常にそうとは限りません。これが単なる偶然なのか、丸め誤差が異なるのか、それとも完全に一致するのかはわかりません。問題は、それらが一致する場合、周囲の数値が互いに異なることです。たとえば、0.0021は両方の結果で発生しますが、Matlabの周囲の数値は-0.0649、0.0147などです(AVAssetReaderの結果で0.0021の近くには表示されません)。

この不一致の原因は何ですか。アプリの整合性に深刻な欠如が生じますか、またどのように修正すればよいですか?ありがとうございました。


MPEG I / IIレイヤー3はデコードアルゴリズムを指定していますが、そのアルゴリズムを使用してすべての結果値が計算される正確な数値精度を指定していることを思い出しません。たぶんエラーバウンドのみ。ドキュメント(ISO / IEC 13818)を確認する必要があります。
hotpaw2 '30 / 09/30

3
あなたのアプリケーションは、ビット正確なMP3デコードを必要とすることを意図していますか?デコーダーの1つが実際にめちゃくちゃにならない限り、iOSデバイスでオーディオを出力しているだけでは、違いが聞こえないでしょう。
Jason R


必ずしもそれほど多くの精度を必要とするわけではありませんが、私のMP3デコードコードが正しいのか、それとも単に意味のない出力をしているのかはわかりませんでした。WAV出力は正確に一致しました。そのため、MP3出力が完全に異なる場合、WAV出力は私を捨てました。@endolith-リンクのおかげで、コードは問題なく、内部処理が違いを引き起こしていると思います。
XSL

回答:


10

2つのデコーダの結果が異なり、規格に準拠している可能性があります。標準の「ISO / IEC 11172-4(パート4)コンプライアンステスト」では、2つのクラスのデコーダーを指定しています。

精度は、デコードされたストリームを参照ストリームと比較することによって測定されます(参照の入力と出力は標準で指定されています)。差のRMSが未満の場合、デコーダは正確であると分類され、未満の場合、「制限された精度」のものとして分類されます。215/12211/12

したがって、異なるプロセッサアーキテクチャで異なるデコーダを使用する場合、または同じデコーダを使用する場合でも、この種の出力の不一致に備える必要があります。アプリケーションがわからない、または意図がわからない場合でも、標準を模倣してエラーのRMSで作業できる場合は、

*)私の目の前には規格のテキストが英語で書かれていないので、規格で使用されている実際の名前は異なる場合があります。


ご協力ありがとうございます。実際には、MP3自体を再生するのではなく、信号に対してさまざまなDSP機能を実行したいだけです。「正しい」結果と見なしたMatlabとは異なるため、取得している値の整合性について心配する必要があるかどうかはわかりませんでした。しかし、標準が2つの結果をまったく同じにする必要はないが、それでも準拠していることを確認すると、コードの結果に自信が持てます。
XSL、2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.