使用Python绘制宽带语谱图需要设置参数NFFT为framesize,overlapSize为1.0/3*framesize,并将overlapSize转化为整数,编写代码
时间: 2024-05-08 18:17:39 浏览: 117
Spectrogram-of-a-voice-data.rar_matlab 宽带谱图_spectrogram分析_宽带语谱图_
以下是使用Python绘制宽带语谱图的示例代码:
```python
import numpy as np
import scipy.signal as signal
import matplotlib.pyplot as plt
import librosa
# 设置参数
framesize = 1024
overlapSize = int(1.0/3*framesize)
# 读取音频文件
audio_file = 'example.wav'
y, sr = librosa.load(audio_file, sr=44100)
# 计算语谱图
f, t, Sxx = signal.spectrogram(y, fs=sr, window='hamming', nperseg=framesize, noverlap=overlapSize, mode='magnitude')
# 绘制语谱图
plt.pcolormesh(t, f, np.log10(Sxx), cmap='jet')
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()
```
在上述代码中,我们使用了`librosa`模块来读取音频文件,并使用`signal.spectrogram`函数计算语谱图。其中,`nperseg`参数被设置为`framesize`,`noverlap`参数被设置为`overlapSize`。最后,使用`plt.pcolormesh`函数绘制语谱图,其中`np.log10(Sxx)`用于将幅度谱转化为对数幅度谱,以便更好地展示频谱信息。
阅读全文