📜  matplotlib librosa 显示频谱图 - Python (1)

📅  最后修改于: 2023-12-03 14:44:12.126000             🧑  作者: Mango

matplotlib librosa 显示频谱图 - Python

在音频处理中,频谱图是一种可视化工具,显示了音频信号中不同频率成分的强度随时间的变化。Python的 librosa 库提供了方便的功能来计算音频的频谱,并使用 matplotlib 库进行图形绘制。

下面的代码片段演示了如何使用 librosamatplotlib 在 Python 中绘制频谱图。

import librosa
import matplotlib.pyplot as plt

# 读取音频文件
audio_path = 'path_to_audio_file.wav'
audio_signal, sample_rate = librosa.load(audio_path)

# 计算音频信号的频谱
stft = librosa.stft(audio_signal)
spectrogram = librosa.amplitude_to_db(abs(stft))

# 绘制频谱图
plt.figure(figsize=(12, 8))
plt.imshow(spectrogram, cmap='hot', origin='lower', aspect='auto')
plt.colorbar(format='%+2.0f dB')
plt.title('Spectrogram')
plt.xlabel('Time')
plt.ylabel('Frequency')
plt.tight_layout()

# 显示图形
plt.show()

在上述代码中,首先使用 librosa.load() 函数加载音频文件,并返回音频信号及采样率。然后,使用 librosa.stft() 函数计算音频信号的短时傅里叶变换(STFT)来获取频谱数据。将频谱数据转换为以分贝为单位的对数刻度,以便更好地可视化。

接下来,使用 matplotlib.pyplot.imshow() 函数绘制频谱图。cmap 参数指定了使用的颜色映射,这里使用热图。origin 参数设置为 'lower' 表示数据的第一个维度从下方开始,aspect 参数设置为 'auto' 表示图形的纵横比自适应。plt.colorbar() 函数用于添加颜色刻度尺。

最后,使用 plt.title()plt.xlabel()plt.ylabel() 函数设置标题及坐标轴标签。plt.tight_layout() 函数用于调整图形布局以避免重叠。

最后,通过 plt.show() 显示频谱图。

这个代码片段演示了如何使用 matplotliblibrosa 在 Python 中绘制频谱图。你可以根据自己的需求进行进一步的定制,例如调整图形大小、颜色映射、标题等。希望这个简单的介绍对你有帮助!