librosa.feature.melspectrogram(y=y, sr=sr),返回的是一个二维数据,他的两个维度分别表示的是梅尔滤波器的数量以及时间帧的数量,我怎样才能转化为我上个问题问你的把这组数据转化为时间帧对频率的数据
时间: 2024-04-07 10:30:19 浏览: 121
mfcc.rar_Mel特征参数_mel scale_scale_梅尔频率
要将梅尔谱图数据转换为时间帧对频率的数据,你可以使用`librosa.core.mel_frequencies`函数获取梅尔滤波器对应的频率,然后将其与梅尔谱图数据进行组合。以下是示例代码:
```python
import librosa
import numpy as np
# 假设mel_spec是你的梅尔谱图二维数据
mel_spec = ...
# 获取频率对应的值
sr = 44100 # 采样率
n_fft = 2048 # FFT窗口大小
n_mels = mel_spec.shape[0] # 梅尔滤波器数量
frequencies = librosa.core.mel_frequencies(n_mels=n_mels, fmin=0, fmax=sr/2)
# 将时间帧对应的能量值与频率进行组合
time_frames = np.arange(mel_spec.shape[1]) * (n_fft / sr)
data = np.column_stack((time_frames, frequencies, mel_spec.T))
# 现在你可以使用data进行进一步的处理和分析
```
通过以上代码,你将得到一个包含时间帧、频率和能量的三维数据,其中每一行代表一个时间帧对应的频率和能量值。希望这能满足你的需求!如果还有其他问题,请随时提问。
阅读全文