Python Librosa 音频波形可视化:如何使两个波形的横坐标一致
Python Librosa 音频波形可视化:如何使两个波形的横坐标一致
在使用 Python 的 Librosa 库进行音频波形可视化时,有时需要将两个波形的横坐标位置完全一致,以便更直观地比较音频信号的变化。例如,在展示降噪前后音频信号的时域波形时,就需要将两个波形的横坐标范围设置一致。
代码示例
以下是使用 plt.xlim() 函数使两个波形的横坐标位置完全一致的示例代码:
import librosa
import numpy as np
import matplotlib.pyplot as plt
def displayWaveform(sample1, sample2):
'''
显示语音时域波形
:param sample_name: 语音样本名称
:param fs: 采样频率
:return:
'''
samples1, sr1 = librosa.load(sample1, sr=16000)
samples2, sr2 = librosa.load(sample2, sr=16000)
# samples = samples[6000:16000]
print(len(samples1), sr1)
print(len(samples2), sr2)
time1 = np.arange(0, len(samples1)) * (1.0 / sr1)
time2 = np.arange(0, len(samples2)) * (1.0 / sr2)
plt.figure(figsize=(18, 8))
plt.subplot(211)
plt.plot(time1, samples1)
plt.title('原音频时域波形')
plt.xlabel('时长(秒)')
plt.ylabel('振幅')
plt.xlim(time1[0], time1[-1]) # 设置横坐标范围
plt.subplot(212)
#plt.ylim(-0.4, 0.4)
#plt.yticks(np.arange(-0.4, 0.5, 0.2))
plt.plot(time2, samples2)
plt.title('降噪后音频时域波形')
plt.xlabel('时长(秒)')
plt.ylabel('振幅')
plt.xlim(time2[0], time2[-1]) # 设置横坐标范围
plt.subplots_adjust(hspace=0.5) # 调整子图间距
# plt.savefig("your dir\语音信号时域波形图", dpi=600)
plt.show()
代码说明
-
plt.xlim(time1[0], time1[-1])和plt.xlim(time2[0], time2[-1])分别设置了两个子图的横坐标范围,其中time1[0]和time1[-1]分别表示第一个波形的起始时间和结束时间,time2[0]和time2[-1]分别表示第二个波形的起始时间和结束时间。 -
通过设置相同的横坐标范围,可以保证两个波形在同一时间范围内进行比较,从而更直观地观察到降噪前后音频信号的变化情况。
小结
通过使用 plt.xlim() 函数,我们可以轻松地将两个波形的横坐标位置完全一致,以便更直观地比较音频信号的变化。这对于音频处理和分析中的许多应用来说都是一个非常实用的技巧。
原文地址: https://www.cveoy.top/t/topic/n7Mv 著作权归作者所有。请勿转载和采集!