import wave
import numpy as np
import matplotlib.pyplot as pl
import librosa
import numpy as np
framerate = 22050
wav_path = "xxx/LJ001-0001.wav"
# 计算每一帧的能量 256个采样点为一帧
def calEnergy(x) :
hop_length = 256
frame_length = 512
energy = np.array([
sum(abs(x[i:i+frame_length]**2))
for i in range(0, len(x), hop_length)
])
rmse = librosa.feature.rms(x, frame_length=frame_length, hop_length=hop_length, center=True)
return energy, rmse[0]
x, sr = librosa.load(wav_path)
energy, rmse = calEnergy(x)
time = np.arange(0, len(x)) * (1.0 / framerate)
time2 = np.arange(0, len(energy)) * (len(x)/len(energy) / framerate)
pl.subplot(311)
pl.plot(time, x)
pl.ylabel("Amplitude")
pl.subplot(312)
pl.plot(time2, energy)
pl.ylabel("short energy")
pl.xlabel("time (seconds)")
pl.subplot(313)
pl.plot(time2, rmse)
pl.ylabel("short rmse")
pl.xlabel("time (seconds)")
pl.show()
pl.savefig("./engergy.png")
简单的音频能量和rmse计算方法
于 2022-07-15 16:53:17 首次发布