14段音乐音频频谱代码
时间: 2023-07-03 10:32:02 浏览: 287
单片机音乐频谱源代码
4星 · 用户满意度95%
下面是一个使用Python语言和librosa库来进行音频频谱分析的代码示例。此代码将读取“music.wav”文件,生成14个频段的音频频谱,并将其绘制成图表。
```python
import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np
# 读取音频文件
audio_file = 'music.wav'
y, sr = librosa.load(audio_file)
# 计算音频的短时傅里叶变换(STFT),并转换为分贝单位
D = np.abs(librosa.stft(y))**2
S = librosa.feature.melspectrogram(S=D)
# 将频谱转换为分贝单位
S_dB = librosa.power_to_db(S, ref=np.max)
# 将频谱分成14个频段
n_bands = 14
freqs = librosa.core.fft_frequencies(n_fft=2048)
freq_bands = np.linspace(0, sr/2, n_bands+1, dtype=int)
bin_bands = [np.where((freqs >= freq_bands[i]) & (freqs <= freq_bands[i+1]))[0] for i in range(len(freq_bands)-1)]
S_bands = np.array([np.mean(S_dB[bin_bands[i][0]:bin_bands[i][-1]+1,:], axis=0) for i in range(n_bands)])
# 绘制频谱图
plt.figure(figsize=(10, 4))
librosa.display.specshow(S_bands, sr=sr, x_axis='time', y_axis='mel', cmap='coolwarm')
plt.title('Mel Spectrogram')
plt.colorbar(format='%+2.0f dB')
plt.tight_layout()
plt.show()
```
请注意,该代码需要安装以下库:
- librosa
- matplotlib
- numpy
您需要将“music.wav”替换为您自己的音频文件路径。此代码将生成一个14个频段的音频频谱图,每个频段的中心频率在相等间隔的Mel刻度上。
阅读全文