如何使用 Matplotlib 绘制音频文件
简介
绘制和可视化音频文件是音频分析中最重要的过程之一。音频分析是对数字设备记录的音频信号进行转换、探索和解释的过程,以便从音频数据中提取洞察力。
在本文中,我们将使用 matplotlib 绘制音频文件的波形。
先决条件
-
Python 已安装
-
Numpy 已安装
-
Matplotlib 已安装
-
数据分析背景
导入模块和库
作为第一步,让我们导入我们需要的模块和库。
import wave
import matplotlib.pyplot as plt
import numpy as np
进入全屏模式 退出全屏模式
我们将使用 wave 模块和 numpy 来预处理音频。我们将使用 matplotlib 来绘制音频。
加载音频文件
我们将使用的音频文件是一个波形文件。
让我们加载我们想要绘制的波形文件
obj = wave.open('audio_file.wav', 'rb')
进入全屏模式 退出全屏模式
获取音频参数
让我们打印出音频参数,例如通道数、样本宽度等。
我们将使用wave模块的.getparams()
方法
print('Parameters:', obj.getparams())
进入全屏模式 退出全屏模式
输出: 参数:_wave_params(nchannelsu003d1,sampwidthu003d2,framerateu003d22050,nframesu003d81585,comptypeu003d'NONE',compnameu003d'未压缩')
现在让我们获取绘制音频所需的参数。
- 采样频率,这是每秒的采样数
sample_freq = obj.getframerate()
进入全屏模式 退出全屏模式
- 样本数,这是音频文件中样本或帧的总数
n_samples = obj.getnframes()
进入全屏模式 退出全屏模式
- 信号波,这是波幅,也就是声音的强度。
signal_wave = obj.readframes(-1)
进入全屏模式 退出全屏模式
- 音频长度,这是音频的持续时间。
duration = n_samples/sample_freq
进入全屏模式 退出全屏模式
创建numpy对象
让我们从 signal_wave 创建一个 numpy 对象。这将绘制在 y 轴上。
signal_array = np.frombuffer(signal_wave, dtype=np.int16)
进入全屏模式 退出全屏模式
让我们从持续时间创建一个 numpy 对象。这将绘制在 x 轴上
time = np.linspace(0, duration, num=n_samples)
进入全屏模式 退出全屏模式
创建音频图
plt.figure(figsize=(15, 5))
plt.plot(time, signal_array)
plt.title('Audio Plot')
plt.ylabel(' signal wave')
plt.xlabel('time (s)')
plt.xlim(0, time) #limiting the x axis to the audio time
plt.show()
进入全屏模式 退出全屏模式
输出:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--bfzstc4P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/rqiev0iw5017dve5ixg.PNG)
结论
在本文中,我们学习了如何绘制音频文件的波形。除了绘制波形之外,我们可以从音频文件中获得的另一个图是频谱。对于频谱,我们绘制了采样频率与时间的关系。要了解如何绘制频谱,请查看此链接。
积分
音频处理基础(Assembly AI)
音频分析(altexsoft)
更多推荐
所有评论(0)