错误:AttributeError: 'numpy.ndarray' object has no attribute 'correlate'
时间: 2023-06-22 18:31:56 浏览: 121
AttributeError: module 'tensorflow.compat.v1' has no attribute '
非常抱歉,之前的代码存在错误。`numpy.ndarray`对象确实没有`correlate`方法,正确的做法是使用`scipy.signal.correlate`函数。请使用以下代码进行自相关分析:
```python
import numpy as np
import matplotlib.pyplot as plt
import scipy.signal as sig
import scipy.io.wavfile as wav
# 读取wav文件
fs, data = wav.read('test.wav')
# 取其中一路声道
signal = data[:, 0]
# 设置自相关函数的最大延迟
max_delay = int(fs / 50) # 最大延迟为20ms
# 计算自相关函数
acf = sig.correlate(signal, signal, mode='full')[-max_delay:]
# 取自相关函数的前半部分
acf_half = acf[:len(acf) // 2]
# 寻找基音周期
period = np.argmax(acf_half) + 1
# 计算基音频率
fund_freq = fs / period
# 绘制基频曲线
plt.plot(acf_half)
plt.xlabel('Delay (samples)')
plt.ylabel('Autocorrelation')
plt.title('Fundamental Frequency = %.2f Hz' % fund_freq)
plt.show()
```
希望这次能够帮助到您,如有其他问题,请随时提问。
阅读全文