# 0.预设环境 # import librosa import numpy as np from matplotlib import pyplot as plt import librosa.feature from matplotlib import font_manager # 1.加载信号 wave_path = r"C:\Users\LENOVO\PycharmProjects\pythonProject3\Audio_Data\piano_1.wav" waveform,sample_rate = librosa.load(wave_path,sr=None) # 2.定义函数RMS,功能:计算每一帧的均方根能量 def Calc_RMS(waveform,frame_length,hop_length): if len(waveform) % hop_length !=0: frame_num = int((len(waveform)-frame_length)/hop_length)+1 pad_num = frame_num * hop_length + frame_length - len(waveform) waveform = np.pad(waveform,pad_width=(0,pad_num),mode="wrap") frame_num = int((len(waveform) - frame_length) / hop_length) + 1 waveform_rms=[] # 这是list型 for t in range(frame_num): current_frame = waveform[t*hop_length : t*hop_length+frame_length] current_rms = np.sqrt(np.sum(current_frame**2)/frame_length) # 注意得除以帧的长度 waveform_rms.append(current_rms) return np.array(waveform_rms) # 3.设置参数,每一帧长1024,以50%的重叠率重叠,调用该函数 frame_size = 1024 hop_size = int(frame_size*0.5) waveform_RMS = Calc_RMS(waveform=waveform,frame_length=frame_size,hop_length=hop_size) # 4.绘制图像 my_font=font_manager.FontProperties(fname=r"C:\Windows\Fonts\simsun.ttc") frame_scale = np.arange(0,len(waveform_RMS)) time_scale = librosa.frames_to_time(frame_scale,hop_length=hop_size) plt.figure(figsize=(20, 10)) plt.plot(time_scale, waveform_RMS, color="k",linewidth=3,label="套公式的RMS") plt.legend(prop=my_font) # 5.利用librosa.feature.rms绘制音频的rms waveform_RMS_Librosa = librosa.feature.rms(y=waveform,frame_length=frame_size,hop_length=hop_size).T[1:,0] plt.plot(time_scale,waveform_RMS_Librosa,color="r",linewidth=1,label="librosa自带的RMS") plt.legend(prop=my_font) librosa.display.waveshow(waveform) plt.title("Root_Mean_Square_Energy") plt.show() # 6.比较librosa自带的RMS和套公式的RMS的差异 bias=[] bias.append(abs(waveform_RMS - waveform_RMS_Librosa)) print(f"average_bias:"+str(np.average([bias]))+f"\n bias:{bias}") # 这里要关闭图标才能显示 # []是array,用list{}打出会显示这是个array,{}符号在加上f后可以在引号里直接使用 # print can only concentrate str to str(print里面str后面只能拼接str) print("Congratulation!")
音频&深度学习Lesson2_均方根能量
于 2023-04-07 12:35:45 首次发布