Sai lệch giải mã MP3


7

Có thể cho hai bộ giải mã khác nhau để đưa ra hai kết quả mẫu khác nhau cho cùng một MP3 không? Tôi đang giải mã một mp3 trên Matlab và nó tạo ra hai cột (có lẽ là một cột cho mỗi kênh). Khi tôi trích xuất dữ liệu mẫu từ cùng một tệp bằng AVAssetReader (iOS), tôi nhận được các kết quả khác nhau. Khi tôi thử cùng một mã với tệp WAV, hai kết quả khớp nhau, vì vậy tôi đoán mã này vẫn ổn (mặc dù kết quả Matlab có thêm một vài khung trống).

Nếu tôi, không khoa học, chọn các giá trị ngẫu nhiên từ kết quả MP3 AVAssetReader của tôi và tìm kiếm chúng trong kết quả Matlab, chúng có xu hướng tồn tại, nhưng không phải lúc nào cũng vậy. Tôi không biết nếu đây chỉ là sự trùng hợp ngẫu nhiên, các lỗi làm tròn khác nhau hoặc nếu chúng thực sự khớp. Vấn đề là, khi chúng khớp nhau, các số xung quanh khác nhau. Ví dụ: 0.0021xảy ra trong cả hai kết quả, nhưng các số xung quanh trên Matlab là -0,0649,0,0147, v.v. (không xuất hiện gần 0,0021 trong kết quả AVAssetReader).

Điều gì có thể gây ra sự khác biệt này, nó có gây ra sự thiếu toàn vẹn nghiêm trọng trong ứng dụng của tôi không và tôi sẽ khắc phục nó như thế nào? Cảm ơn bạn.


Mặc dù MPEG I / II Lớp 3 chỉ định thuật toán giải mã; Tôi không nhớ nó chỉ định độ chính xác bằng số chính xác mà tất cả các giá trị kết quả được tính bằng thuật toán đó. Có lẽ chỉ một lỗi ràng buộc. Bạn sẽ phải kiểm tra tài liệu (ISO / IEC 13818).
hotpaw2

3
Ứng dụng của bạn dự định làm gì đòi hỏi phải giải mã MP3 chính xác? Trừ khi một trong những bộ giải mã thực sự bị rối, bạn sẽ không thể nhận ra sự khác biệt có thể nghe được nếu bạn chỉ xuất âm thanh trên thiết bị iOS.
Jason R


Tôi không nhất thiết yêu cầu độ chính xác cao như vậy, nhưng tôi không chắc liệu mã giải mã MP3 của mình có đúng không hay chỉ đơn giản là xuất ra vô nghĩa. Đầu ra WAV khớp chính xác, đó là lý do tại sao nó khiến tôi thất vọng khi đầu ra MP3 hoàn toàn khác. @endolith - cảm ơn vì liên kết, tôi đoán mã của tôi phải ổn và việc xử lý nội bộ là điều gây ra sự khác biệt.
XSL

Câu trả lời:


10

Có thể hai bộ giải mã sẽ có kết quả khác nhau và tuân thủ tiêu chuẩn. Thử nghiệm tuân thủ tiêu chuẩn "ISO / IEC 11172-4 (phần 4)" chỉ định hai loại bộ giải mã: "chính xác" và "độ chính xác giới hạn" *).

Độ chính xác được đo bằng cách so sánh luồng được giải mã với luồng tham chiếu (đầu vào và đầu ra tham chiếu được chỉ định trong tiêu chuẩn). Nếu RMS của sự khác biệt là dưới đây215/12 bộ giải mã được phân loại là chính xác và nếu dưới đây 211/12 nó được phân loại là "độ chính xác hạn chế".

Vì vậy, nếu bạn sẽ sử dụng các bộ giải mã khác nhau hoặc thậm chí cùng một bộ giải mã trên các kiến ​​trúc bộ xử lý khác nhau, bạn phải chuẩn bị cho loại khác biệt này trong đầu ra. Không biết ứng dụng hoặc ý định của bạn nhưng có lẽ bạn cũng có thể bắt chước tiêu chuẩn và cũng hoạt động với RMS lỗi?

*) Tôi không có văn bản của tiêu chuẩn bằng tiếng Anh trước mặt nên tên thực tế được sử dụng trong tiêu chuẩn có thể khác nhau.


cảm ơn rất nhiều về sự giúp đỡ của bạn. Tôi thực sự chỉ muốn thực hiện các chức năng DSP khác nhau trên tín hiệu của mình, thay vì tự phát MP3. Tôi chỉ không chắc là tôi có nên lo lắng về tính toàn vẹn của các giá trị tôi nhận được hay không vì nó khác với Matlab, mà tôi cho là kết quả 'chính xác'. Nhưng thấy rằng các tiêu chuẩn không yêu cầu hai kết quả giống hệt nhau, nhưng vẫn tuân thủ, khiến tôi tin tưởng hơn vào kết quả mã của mình.
XSL
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.