2013-01-14 16 views
6

मैं scipy का उपयोग कर एक .wav फ़ाइल पढ़ने की कोशिश कर रहा हूं। मैं यह कर:scipy.io.wavfile "WavFileWarning: खंड समझा नहीं गया" त्रुटि

from scipy.io import wavfile 

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

samples = wavfile.read(filename) 

और मैं इस बदसूरत त्रुटि मिलती है:

/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 

मैं पायथन 2.6.6, numpy 1.6.2, और scipy 0.11.0

Here's एक उपयोग कर रहा हूँ WAV फ़ाइल जो समस्या का कारण बनती है।

कोई विचार? यहाँ क्या गलत है?

+0

'नमूने = wavfile.read (खुला (फ़ाइल नाम, 'आर')) ' – Skyler

+0

कोशिश करें, अभी भी वही त्रुटि मिली है ... – Eric

+0

क्या आप सुनिश्चित हैं कि आपकी .wav फ़ाइल मानक है? क्या यह असम्पीडित है या नहीं? – Skyler

उत्तर

6

मैं WAV फ़ाइल स्वरूप के बारे में कुछ भी पता नहीं है, लेकिन scipy कोड यह scipy तरह लग रहा है की खुदाई हिस्सा है कि फाइल के अंत में मौजूद है से परिचित नहीं है (हिस्सा आईडी bext, में 2,753,632 बाइट्स , अगर यह मदद करता है)। उस खंड को 603 बाइट्स के रूप में घोषित किया गया है, इसलिए यह बाद में एक और खंड आईडी 603 बाइट्स की अपेक्षा करता है - इसे नहीं मिला (फ़ाइल से बाहर चला जाता है) और गिर जाता है।

क्या आपने इसे अन्य डब्ल्यूएवी फाइलों पर सफलतापूर्वक आजमाया है? यह कैसे उत्पन्न हुआ था?

+2

वास्तव में ... यह डब्ल्यूएवी फ़ाइल के साथ एक समस्या थी (भले ही कोई भी ऑडियो प्लेयर उन्हें चला सके)। मैंने दूसरे कार्यक्रम के साथ उत्पन्न डब्ल्यूएवी के साथ कोड की कोशिश की और यह काम किया। समस्याग्रस्त WAV फाइलें बनाई गई थीं ... एप्पल के लॉजिक प्रो, मानक सेटिंग्स के साथ: 16 बिट, 44100 हर्ट्ज, इंटरलीव, कोई दिक्कत नहीं। – Eric

+1

टिप्पणी के लिए धन्यवाद। मैंने अपने WAV फ़ाइलों को उनके प्रारूप में "रूपांतरित" करने के लिए सोक्स का उपयोग किया था। इस प्रकार सोक्स ने गलत वैव फाइलों को सही किया, जबकि ऑडियो डेटा वही रहा। देखें http://stefaanlippens.net/audio_conversion_cheat_sheet –

15

फाइलें अब उपलब्ध नहीं हैं (9 महीने के बाद आश्चर्यजनक नहीं!), लेकिन भविष्य के संदर्भ के लिए सबसे अधिक संभावित कारण यह है कि इसमें अतिरिक्त मेटाडाटा था जो सिक्योरिटी पार्स नहीं कर सकता था।

मेरे मामले में, यह डिफ़ॉल्ट मेटाडाटा (कॉपीराइट, ट्रैक नाम इत्यादि) था जिसे ऑडसिटी द्वारा जोड़ा गया था- आप ऑडैसिटी में फ़ाइल खोल सकते हैं और फ़ाइल का उपयोग कर सकते हैं ... इसे देखने के लिए मेटाडेटा संपादक खोलें। फिर इसे साफ़ करने के लिए 'साफ़ करें' बटन का उपयोग करें, और पुनः प्रयास करें।

current version of scipy निम्नलिखित आरआईएफएफ हिस्सों - 'एफएमटी', 'तथ्य', 'डेटा' और 'सूची' का समर्थन करता है। The Wikipedia page on RIFF में डब्ल्यूएवी फ़ाइल को कैसे संरचित किया गया है, इस बारे में थोड़ी अधिक जानकारी है, उदाहरण के लिए आपके पास एक असमर्थित-लेकिन-लोकप्रिय INFO खंड

+3

ऑडैसिटी का उपयोग करके सभी मेटा टैग को स्ट्रिप करना मेरे लिए काम करता है। – lonesword

1

शामिल हो सकता है मुझे ऑडैसिटी द्वारा प्रस्तुत (अनुमानित) मेटाडेटा के कारण भी यह त्रुटि मिली है। मैंने अपनी WAV फ़ाइल को एक और डीएडब्ल्यू (एबलेटन लाइव) से निर्यात किया, और scipy.io.wavfile बिना त्रुटि के इसे लोड किया।

1

मुझे एक ही त्रुटि थी और जो इसे पढ़ सकता है उसे सफलतापूर्वक रूपांतरित कर सकता है।

मेरी मूल फ़ाइल लॉजिक प्रो से थी। तब मैंने फ़ाइल पढ़ने के लिए audacity का उपयोग किया।