Python Librosa: 音频波形可视化与降噪对比
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.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.plot(time, samples3)
plt.title('改进后降噪后音频时域波形', fontsize=18)
plt.xlabel('时长(秒)', fontsize=18)
plt.ylabel('振幅', fontsize=18)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.subplots_adjust(hspace=0.5) # 调整子图间距
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用于数值计算。 - 设置绘图参数: 设置绘图分辨率、字体、显示中文和符号。
- 定义
displayWaveform函数:- 该函数接受三个音频文件路径作为参数。
- 使用
librosa.load加载音频文件,并获取音频信号和采样率。 - 找到三个样本中最短的长度,并将所有样本截取到相同长度。
- 使用
matplotlib.pyplot.plot绘制三个样本的时域波形。 - 设置图标题、坐标轴标签、字体大小等参数。
- 使用
plt.subplots_adjust调整子图之间的间距。
- 主程序:
- 定义三个音频文件路径。
- 调用
displayWaveform函数,绘制三个样本的时域波形。
使用方法:
- 将代码保存为 Python 文件(例如
waveform_comparison.py)。 - 将三个音频文件(
p335_023.wav、enhanced_p335_023.wav、enhanced_p335_023G_88_0.2559.wav)放置在与 Python 文件相同的目录下。 - 在终端运行
python waveform_comparison.py。
代码将生成一个窗口,显示三个音频样本的时域波形图,方便对比降噪前后音频的差异。
原文地址: https://www.cveoy.top/t/topic/n7Xv 著作权归作者所有。请勿转载和采集!