You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Librosa为立体声音频生成梅尔频谱图?

如何为立体声音频生成梅尔频谱图?

当然可以改写这段代码来支持立体声音频!其实librosa本身就支持加载多通道音频,咱们只需要调整几个地方就能分别处理左右声道,或者合并生成频谱图。先提一句原代码里的小笔误:你写的lr.display应该是librosa.display,先修正这个再来看立体声的处理方案。

方案1:分别可视化左右声道的梅尔频谱图

这个方案适合你需要单独查看每个声道特征的场景,能清晰对比左右声道的音频差异:

import librosa, librosa.display
import matplotlib.pyplot as plt
import numpy as np

# 加载立体声音频,指定mono=False保留多通道数据
file = "C:/Users/User/Desktop/sound.wav"
y, sr = librosa.load(file, sr=48000, mono=False)
# 此时y的形状为(2, n_samples),索引0对应左声道,索引1对应右声道

# 创建子图来分别展示两个声道的频谱
channels = ['左声道', '右声道']
fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(10, 8))

for i, (ax, channel_name) in enumerate(zip(axes, channels)):
    # 提取当前声道的音频数据
    y_channel = y[i]
    # 生成梅尔频谱
    S = librosa.feature.melspectrogram(y=y_channel, sr=sr, n_mels=128, fmax=12000)
    # 转换为分贝刻度
    S_dB = librosa.power_to_db(S, ref=np.max)
    # 绘制频谱图
    img = librosa.display.specshow(S_dB, x_axis='time', y_axis='mel', sr=sr, fmax=12000, ax=ax)
    ax.set_title(f'Mel-频谱图 - {channel_name}')
    ax.set_xlabel('时间')
    ax.set_ylabel('梅尔频率')

# 为所有子图添加统一的颜色条
fig.colorbar(img, ax=axes, format='%+2.0f dB')
plt.tight_layout()
plt.show()

方案2:合并声道生成单张梅尔频谱图

如果你只需要一个综合的频谱图,不需要区分声道,可以把两个声道的音频数据取平均,当作单声道数据处理:

import librosa, librosa.display
import matplotlib.pyplot as plt
import numpy as np

file = "C:/Users/User/Desktop/sound.wav"
# 加载立体声音频
y, sr = librosa.load(file, sr=48000, mono=False)
# 合并左右声道:计算两个通道的平均值
y_merged = np.mean(y, axis=0)

# 后续步骤和原单声道代码一致,使用合并后的音频数据
S = librosa.feature.melspectrogram(y=y_merged, sr=sr, n_mels=128, fmax=12000)
S_dB = librosa.power_to_db(S, ref=np.max)
librosa.display.specshow(S_dB, x_axis='time', y_axis='mel', sr=sr, fmax=12000)
plt.colorbar(format='%+2.0f dB')
plt.title('Mel-频谱图(合并声道)')
plt.tight_layout()
plt.show()

其他实现方法

如果不想依赖librosa,也可以尝试这些工具:

  • torchaudio:PyTorch生态下的音频处理库,原生支持多通道音频的梅尔频谱计算,适合深度学习相关的场景;
  • soundfile + scipy:先用soundfile加载多通道音频,再借助scipy的信号处理模块手动实现梅尔滤波组的计算,不过需要编写更多底层代码;
  • 手动实现:基于numpy和matplotlib完全手动完成梅尔频谱的计算,但工作量大,仅推荐有特殊定制需求的场景使用。

内容的提问来源于stack exchange,提问作者Gandalf69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 16:12:30