提取特定长宽的没有坐标的梅尔语谱图并保存的python代码
时间: 2024-02-12 15:07:05 浏览: 87
好的,你想要提取特定长宽的没有坐标的梅尔语谱图并保存。以下是Python代码实现:
```python
import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np
# 加载音频文件
y, sr = librosa.load('audio_file.wav')
# 计算梅尔频谱
n_fft = 2048
hop_length = 512
n_mels = 128
mel_spec = librosa.feature.melspectrogram(y=y, sr=sr, n_fft=n_fft, hop_length=hop_length, n_mels=n_mels)
# 转换为对数刻度
log_mel_spec = librosa.power_to_db(mel_spec, ref=np.max)
# 指定要提取的图像宽度和高度
img_width = 300
img_height = 200
# 裁剪梅尔频谱以匹配指定的图像宽度和高度
mel_spec_cropped = log_mel_spec[:img_height, :img_width]
# 显示并保存裁剪后的图像
plt.figure(figsize=(10, 4))
librosa.display.specshow(mel_spec_cropped, y_axis='mel', x_axis='time', sr=sr, hop_length=hop_length)
plt.colorbar(format='%+2.0f dB')
plt.title('Mel-Spectrogram (Cropped)')
plt.tight_layout()
plt.savefig('cropped_mel_spec.png')
```
在这个实现中,我们首先通过Librosa库计算了梅尔频谱,然后将其转换为对数刻度。接着,我们指定了要提取的图像宽度和高度,然后从梅尔频谱中裁剪出具有相应大小的区域。最后,我们使用Matplotlib库显示和保存裁剪后的梅尔频谱图像。
阅读全文