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()

代码说明

  1. plt.xlim(time1[0], time1[-1])plt.xlim(time2[0], time2[-1]) 分别设置了两个子图的横坐标范围,其中 time1[0]time1[-1] 分别表示第一个波形的起始时间和结束时间,time2[0]time2[-1] 分别表示第二个波形的起始时间和结束时间。

  2. 通过设置相同的横坐标范围,可以保证两个波形在同一时间范围内进行比较,从而更直观地观察到降噪前后音频信号的变化情况。

小结

通过使用 plt.xlim() 函数,我们可以轻松地将两个波形的横坐标位置完全一致,以便更直观地比较音频信号的变化。这对于音频处理和分析中的许多应用来说都是一个非常实用的技巧。

Python Librosa 音频波形可视化:如何使两个波形的横坐标一致

原文地址: https://www.cveoy.top/t/topic/n7Mv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录