import librosa as librosa import pycharts import numpy as np from scipy.fft import rfft, irfft from scipy.io import wavfile import matplotlib.pyplot as plt # 读取音频文件 fs, audio = wavfile.read("C:/Users/H-XUE49/Desktop/语音信号/实验一/雷声.wav") # 将音频转换为单声道信号 audio = np.mean(audio, axis=1) # 计算时间轴 time = np.arange(len(audio)) / fs # 绘制时间波形图 pycharts.plot(time, audio, xlabel="Time (s)", ylabel="Amplitude", title="Time domain waveform of audio signal") # 计算音频信号的自相关函数 autocorr = np.correlate(audio, audio, mode="full") # 取自相关函数的一半作为倒谱 r = autocorr[len(autocorr)//2:] # 计算倒谱 cepstrum = irfft(np.log(np.abs(r))) # 绘制倒谱图 pycharts.plot(np.arange(len(cepstrum)) / fs, cepstrum, xlabel="Time (s)", ylabel="Cepstrum", title="Cepstrum of audio signal")为什么显示ValueError: File format b'ID3\x03' not understood. Only 'RIFF' and 'RIFX' supported.请修改错误
时间: 2023-06-16 22:07:09 浏览: 151
这个错误提示是因为在读取音频文件时,使用的是 `wavfile.read` 函数,但是该函数只支持 WAV 格式的音频文件,而你的音频文件可能不是 WAV 格式的,所以需要使用其他的库来读取音频文件。
例如,如果你的音频文件是 MP3 格式的,可以使用 `pydub` 库将其转换为 WAV 格式,然后再使用 `wavfile.read` 函数读取。
另外,你的代码中有一个语法错误,应该将导入语句放在一行中,而不是分开写。修改后的代码如下:
```python
import librosa
import pycharts
import numpy as np
from scipy.fft import rfft, irfft
from scipy.io import wavfile
import matplotlib.pyplot as plt
# 读取音频文件
audio, fs = librosa.load("C:/Users/H-XUE49/Desktop/语音信号/实验一/雷声.mp3", sr=None, mono=True)
# 计算时间轴
time = np.arange(len(audio)) / fs
# 绘制时间波形图
pycharts.plot(time, audio, xlabel="Time (s)", ylabel="Amplitude", title="Time domain waveform of audio signal")
# 计算音频信号的自相关函数
autocorr = np.correlate(audio, audio, mode="full")
# 取自相关函数的一半作为倒谱
r = autocorr[len(autocorr)//2:]
# 计算倒谱
cepstrum = irfft(np.log(np.abs(r)))
# 绘制倒谱图
pycharts.plot(np.arange(len(cepstrum)) / fs, cepstrum, xlabel="Time (s)", ylabel="Cepstrum", title="Cepstrum of audio signal")
```
阅读全文