gpt4 book ai didi

python - 将wav文件读入python

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:37 25 4
gpt4 key购买 nike

我正在尝试读入一个 wav 文件以在其上运行 fft 但我一直遇到 scipy 的错误。

import matplotlib.pyplot as plt
from scipy.io import wavfile as wav
import scipy
from scipy.fftpack import fft
import numpy as np

rate, data = scipy.io.wavfile.read('a1.wav')
fft_out = fft(data)
#matplotlib inline
plt.plot(data, np.abs(fft_out))
plt.show()
print 'exit'

我遇到的错误是:

Traceback (most recent call last):
File "test.py", line 9, in <module>
rate, data = scipy.io.wavfile.read('a1.wav')
File "/usr/local/lib/python2.7/site-packages/scipy/io/wavfile.py", line 275, in read
return fs, data
UnboundLocalError: local variable 'data' referenced before assignment

我认为这可能是 anaconda 的错误,所以我删除了 anaconda,但我仍然遇到这个问题。

如果有更好的方法来读取 wav 文件以便我可以对它们运行 ffts,请告诉我!谢谢!

最佳答案

如果您查看特定wavefile.read() 的代码here在 Github 上,您会看到 data 仅在函数的一个位置设置:

        elif chunk_id == b'data':
if not fmt_chunk_received:
raise ValueError("No fmt chunk before data")
data = _read_data_chunk(fid, format_tag, channels, bit_depth,
is_big_endian, mmap)

所以当 Python 解释器运行代码时,这个条件永远不会满足,我们得到了赋值前引用异常。

wav 文件由一个标题和后面的一系列 block 组成。有不同类型的大块。例如,一个可以携带有关数据格式的信息,另一个是采样率,然后是包含数据的信息。在这种情况下,似乎是Scipy的read newer遇到了这个datachunck,所以很可能是wav文件有问题,也可能是一些较新的格式,Scipy 的实现尚不支持。

关于python - 将wav文件读入python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41782128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com