python/nimport librosa/nimport matplotlib/nimport numpy as np/nimport matplotlib.pyplot as plt/nfrom scipy.fft import fft/nimport librosa.display/n/n/n/nplt.figure(dpi=600) # 将显示的所有图分辨率调高/nmatplotlib.rc('font',family='SimHei') # 显示中文/nmatplotlib.rcParams['axes.unicode_minus']=False # 显示符号/n/n/ndef displayWaveform(sample1, sample2,sample3): # 显示语音时域波形/n '''/n display waveform of a given speech sample/n :param sample_name: speech sample name/n :param fs: sample frequency/n :return:/n '''/n samples1, sr1 = librosa.load(sample1, sr=16000)/n samples2, sr2 = librosa.load(sample2, sr=16000)/n samples3, sr3 = librosa.load(sample3, sr=16000)/n # samples = samples[6000:16000]/n/n min_len = min(len(samples1), len(samples2),len(samples2))/n samples1 = samples1[:min_len]/n samples2 = samples2[:min_len]/n samples3 = samples3[:min_len]/n/n print(len(samples1), sr1)/n print(len(samples2), sr2)/n print(len(samples3), sr3)/n time = np.arange(0, min_len) * (1.0 / sr1)/n/n #print(len(samples1), sr1)/n #print(len(samples2), sr2)/n #time1 = np.arange(0, len(samples1)) * (1.0 / sr1)/n #time2 = np.arange(0, len(samples2)) * (1.0 / sr2)/n/n plt.figure(figsize=(18, 8))/n #ax1=plt.subplot(211)/n plt.plot(time, samples1)/n plt.title('原音频时域波形',fontsize=18)/n plt.xlabel('时长(秒)',fontsize=18)/n plt.ylabel('振幅',fontsize=18)/n plt.xticks(fontsize=12)/n plt.yticks(fontsize=12)/n #plt.xlim(time1[0], time1[-1]) # 设置横坐标范围/n/n #plt.ylim(-0.4, 0.4)/n #plt.yticks(np.arange(-0.4, 0.5, 0.2))/n plt.plot(time, samples2)/n plt.title('改进前降噪后音频时域波形',fontsize=18)/n plt.xlabel('时长(秒)',fontsize=18)/n plt.ylabel('振幅',fontsize=18)/n #plt.xlim(time2[0], time2[-1]) # 设置横坐标范围/n plt.subplots_adjust(hspace=0.5) # 调整子图间距/n plt.xticks(fontsize=12)/n plt.yticks(fontsize=12)/n # plt.savefig('your dir//语音信号时域波形图', dpi=600)/n/n plt.plot(time, sample3)/n plt.title('改进后降噪后音频时域波形', fontsize=18)/n plt.xlabel('时长(秒)', fontsize=18)/n plt.ylabel('振幅', fontsize=18)/n # plt.xlim(time2[0], time2[-1]) # 设置横坐标范围/n plt.subplots_adjust(hspace=0.5) # 调整子图间距/n plt.xticks(fontsize=12)/n plt.yticks(fontsize=12)/n plt.show()/n/n/nif __name__ == '__main__':/n sample1 = r'p335_023.wav'/n sample2 = r'enhanced_p335_023.wav'/n sample3 = r'enhanced_p335_023G_88_0.2559.wav'/n displayWaveform(sample1, sample2,sample3)/n出现报错Traceback (most recent call last):/n File 'D://graduation_design//contrast.py', line 81, in <module>/n displayWaveform(sample1, sample2,sample3)/n File 'D://graduation_design//contrast.py', line 66, in displayWaveform/n plt.plot(time, sample3)/n File 'D://python//lib//site-packages//matplotlib//pyplot.py', line 2761, in plot/n return gca().plot(/n File 'D://python//lib//site-packages//matplotlib//axes/_axes.py', line 1647, in plot/n lines = [*self._get_lines(*args, data=data, **kwargs)]/n File 'D://python//lib//site-packages//matplotlib//axes/_base.py', line 216, in __call__/n yield from self._plot_args(this, kwargs)/n File 'D://python//lib//site-packages//matplotlib//axes/_base.py', line 312, in _plot_args/n linestyle, marker, color = _process_plot_format(tup[-1])/n File 'D://python//lib//site-packages//matplotlib//axes/_base.py', line 104, in _process_plot_format/n raise ValueError(/nValueError: Unrecognized character e in format string内容:这个错误可能是因为在调用`plt.plot()`函数时,第二个参数传入了一个字符串,而不是数组。请检查一下`sample3`变量的类型和值是否正确,并确保它是一个数组,而不是一个字符串。如果`sample3`是一个字符串,你可以使用`librosa.load()`函数来读取它并转换为一个数组。/n/n/n错误原因分析:/n/n该错误提示在使用 plt.plot() 函数时,传入的第二个参数 sample3 是一个字符串,而不是一个数组。这是因为 plt.plot() 函数需要一个数值数组来绘制图形。/n/n解决方法:/n/n1. 检查 sample3 变量的类型和值,确保它是一个数组,而不是一个字符串。/n2. 如果 sample3 是一个字符串,使用 librosa.load() 函数来读取它并转换为一个数组,例如:/n/npython/n samples3, sr3 = librosa.load(sample3, sr=16000)/n # ... 继续使用 samples3 数组进行绘图/n


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

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