[SciPy-Dev] Suggested Change to io.wavfile

Matthew Brett matthew.brett at gmail.com
Fri Aug 10 15:51:04 EDT 2012


Hi,

On Thu, Aug 9, 2012 at 8:08 AM, Brian Hone <brianhone at gmail.com> wrote:
> Hi folks,
>
> I'm running into a wavfile read error which appears to be caused by
> slight problems in wavfile meta-data.  (Specifically, the meta-data
> mis-reports the number of frames).  Unfortunately, 2/3 of the wav files
> I've randomly sampled have this problem, and most audio packages just
> deal with it.
>
> I notice from a search that a lot of people have this problem with
> io.wavfile.read:
>
> /usr/lib/python2.7/site-packages/scipy/io/wavfile.pyc in read(file)
>      125             else:
>      126                 fmt = '<i'
> --> 127             size = struct.unpack(fmt, data)[0]
>      128             fid.seek(size, 1)
>      129     fid.close()
>
>
> Here's a fix - just calculate the actual file length and use the minimum
> or the file length and the meta-data reported length.
>
> 113,121c113
> <
> <     ## Calculate the actual file length in case meta-data is incorrect
> <     current_pos = fid.tell()
> <     fid.seek(0,2)
> <     actual_file_length = fid.tell()
> <     fid.seek( current_pos )
> <     total_length = min( fsize, actual_file_length )
> <
> <     while (fid.tell() < total_length):
> ---
>  >     while (fid.tell() < fsize):

Thanks for posting.  I see we don't have a nominated maintainer for
io.wavfile - Ralf - is that right?

https://github.com/scipy/scipy/blob/master/doc/MAINTAINERS.rst.txt

Does anyone who uses wav files feel able to comment here?

Brian - please consider a test and a pull request?  Please do email
again if that's hard to do.  Do you think we should omit a warning or
make this fix optional, perhaps with the fix set as the default
behavior?

Thanks again,

Matthew



More information about the SciPy-Dev mailing list