2013-01-14 21 views
6

Tôi đang cố gắng đọc tệp .wav bằng scipy. Tôi làm điều này:scipy.io.wavfile cung cấp lỗi "WavFileWarning: chunk not understand"

from scipy.io import wavfile 

filename = "myWavFile.wav" 
print "Processing " + filename 

samples = wavfile.read(filename) 

Và tôi nhận được lỗi xấu xí này:

/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/io/wavfile.py:121: WavFileWarning: chunk not understood 
    warnings.warn("chunk not understood", WavFileWarning) 
Traceback (most recent call last): 
    File "fingerFooler.py", line 15, in <module> 
    samples = wavfile.read(filename) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/io/wavfile.py", line 127, in read 
    size = struct.unpack(fmt, data)[0] 
struct.error: unpack requires a string argument of length 4 

Tôi đang sử dụng Python 2.6.6, 1.6.2 NumPy, và scipy 0.11.0

Here's một tệp wav gây ra sự cố.

Mọi suy nghĩ? Có gì sai ở đây?

+0

thử 'samples = wavfile.read (mở (tên tệp 'r'))' – Skyler

+0

Đã thử, vẫn gặp lỗi tương tự ... – Eric

+0

bạn có chắc tệp .wav của mình là chuẩn không? là nó không nén hay không? – Skyler

Trả lời

6

Tôi không biết gì về định dạng tệp WAV, nhưng đào vào mã scipy có vẻ như scipy không quen thuộc với đoạn hiện diện vào cuối tệp (ID chunk là bext, 2753632 byte trong , nếu điều đó có ích). Chunk đó được khai báo là 603 byte để nó đọc qua nó mong đợi một đoạn mã 603 byte sau đó - nó không tìm thấy nó (hết tập tin) và rơi xuống.

Bạn đã thử nó trên các tệp WAV khác thành công chưa? Cái này được tạo ra như thế nào?

+2

Thật vậy ... Đã xảy ra sự cố với tệp WAV (mặc dù bất kỳ trình phát âm thanh nào có thể phát chúng). Tôi đã thử mã với các WAV được tạo bằng một chương trình khác và nó hoạt động. Các tệp wav có vấn đề đã được tạo trong ... Logic Logic Pro, có cài đặt chuẩn: 16bit, 44100Hz, Xen kẽ, không hoà sắc. – Eric

+1

Cảm ơn nhận xét. Tôi đã sử dụng sox để "chuyển đổi" các tệp wav của tôi sang định dạng mà họ đã có. Do đó sox đã sửa các tệp wav sai, trong khi dữ liệu âm thanh vẫn giữ nguyên. Xem http://stefaanlippens.net/audio_conversion_cheat_sheet –

15

Các tệp không còn khả dụng nữa (không đáng ngạc nhiên sau 9 tháng!), Nhưng để tham khảo trong tương lai, nguyên nhân có khả năng nhất là siêu dữ liệu có thêm siêu dữ liệu không thể phân tích cú pháp.

Trong trường hợp của tôi, đó là siêu dữ liệu mặc định (bản quyền, tên bản nhạc vv) được thêm bởi Audacity- bạn có thể mở tệp trong Audacity và sử dụng Tệp ... Mở Trình chỉnh sửa siêu dữ liệu để xem nó. Sau đó, sử dụng nút 'Xóa' để xóa nó và thử lại.

current version of scipy hỗ trợ các đoạn RIFF sau - 'fmt', 'fact', 'data' và 'LIST'. The Wikipedia page on RIFF có thông tin chi tiết hơn về cách tệp WAV được cấu trúc, ví dụ: bạn có thể đã bao gồm đoạn INFO không được hỗ trợ nhưng phổ biến

+3

Tước tất cả các thẻ meta bằng cách sử dụng tính hiệu quả làm việc cho tôi. – lonesword

1

Tôi cũng gặp lỗi này do (có lẽ) siêu dữ liệu do Audacity giới thiệu. Tôi đã xuất tệp wav của mình từ một DAW khác (Ableton Live) và scipy.io.wavfile tải nó mà không có lỗi.

1

Tôi đã gặp lỗi tương tự và có thể chuyển thành công thành nội dung có thể đọc.

Tệp gốc của tôi là từ Logic Pro. Sau đó, tôi đã sử dụng audacity để đọc tệp.

Các vấn đề liên quan