Librosa 音频时域波形对比显示 - Python 代码示例
import librosa
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from scipy.fft import fft
import librosa.display
plt.figure(dpi=600) # 将显示的所有图分辨率调高
matplotlib.rc("font",family='SimHei') # 显示中文
matplotlib.rcParams['axes.unicode_minus']=False # 显示符号
def displayWaveform(sample1, sample2,sample3): # 显示语音时域波形
'''
display waveform of a given speech sample
:param sample_name: speech sample name
:param fs: sample frequency
:return:
'''
samples1, sr1 = librosa.load(sample1, sr=16000)
samples2, sr2 = librosa.load(sample2, sr=16000)
samples3, sr3 = librosa.load(sample3, sr=16000) # 读取音频文件
min_len = min(len(samples1), len(samples2), len(samples3)) # 取三个样本中最短的长度
samples1 = samples1[:min_len]
samples2 = samples2[:min_len]
samples3 = samples3[:min_len]
time = np.arange(0, min_len) * (1.0 / sr1)
plt.figure(figsize=(18, 8))
plt.plot(time, samples1)
plt.title("原音频时域波形",fontsize=18)
plt.xlabel("时长(秒)",fontsize=18)
plt.ylabel("振幅",fontsize=18)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.plot(time, samples2)
plt.title("改进前降噪后音频时域波形",fontsize=18)
plt.xlabel("时长(秒)",fontsize=18)
plt.ylabel("振幅",fontsize=18)
plt.subplots_adjust(hspace=0.5) # 调整子图间距
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.plot(time, samples3) # 传入读取到的音频数据
plt.title("改进后降噪后音频时域波形", fontsize=18)
plt.xlabel("时长(秒)", fontsize=18)
plt.ylabel("振幅", fontsize=18)
plt.subplots_adjust(hspace=0.5)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.show()
if __name__ == '__main__':
sample1 = r'p335_023.wav'
sample2 = r'enhanced_p335_023.wav'
sample3 = r'enhanced_p335_023G_88_0.2559.wav'
displayWaveform(sample1, sample2,sample3)
代码解释:
-
导入必要的库:
librosa: 用于加载和处理音频数据matplotlib: 用于绘制图形numpy: 用于数值计算scipy.fft: 用于快速傅里叶变换librosa.display: 用于显示音频数据
-
设置图形参数:
plt.figure(dpi=600): 设置图形分辨率为 600dpimatplotlib.rc("font",family='SimHei'): 设置字体为 SimHei,以便显示中文matplotlib.rcParams['axes.unicode_minus']=False: 设置负号显示
-
定义
displayWaveform函数:- 该函数接收三个音频样本的路径作为参数
- 使用
librosa.load加载音频文件,并获取样本数据和采样率 - 找到三个样本中最短的长度,并截取所有样本到相同的长度
- 使用
plt.plot绘制波形图 - 设置图形标题、轴标签、字体大小等
- 使用
plt.subplots_adjust调整子图间距 - 使用
plt.show显示图形
-
主程序:
- 定义三个音频样本的路径
- 调用
displayWaveform函数显示波形图
运行代码:
- 确保安装了所有必要的库。
- 将代码保存为
.py文件,例如audio_waveform.py - 在终端中运行代码,例如
python audio_waveform.py
修改和使用:
- 可以修改
sample1,sample2,sample3变量的值,以显示不同的音频样本。 - 可以调整图形参数,例如分辨率、字体大小、颜色等。
- 可以将代码整合到其他程序中,用于分析和处理音频数据。
注意:
- 代码中使用的音频样本文件需要存在于当前目录中。
- 如果使用的是其他音频格式,请调整
librosa.load函数的参数。 - 如果出现错误,请检查代码是否正确,以及是否安装了必要的库。
使用场景:
- 音频信号处理
- 降噪效果评估
- 语音识别
- 音频分析
- 音频编辑
原文地址: https://www.cveoy.top/t/topic/n7Xz 著作权归作者所有。请勿转载和采集!