对于一个经过分帧、加窗处理后的长度为N音频序列时域特征--短时能量与短时平均幅值_java,其短时能量可以定义为

时域特征--短时能量与短时平均幅值_java_02

有时候也用短时能量幅值来代替短时能量

时域特征--短时能量与短时平均幅值_java_03

短时能量/短时能量幅值用途:语音检测(有语音时,能量大,无语音时,能量小),清浊音分类(浊音的短时能量普遍大于清音)

相关代码如下

 

import soundfile as sfimport matplotlib.pyplot as pltimport numpy as npy, sr = sf.read('q1.wav')# 为演示方便,采用无重叠分帧frame_size = 160num_frames = len(y) // frame_sizeenergy_p = np.zeros(num_frames)energy_a = np.zeros(num_frames)for index in range(0, num_frames):    energy_p[index] = np.cumsum(y[index * frame_size:(index+1) * frame_size] ** 2)[-1]    energy_a[index] = np.cumsum(np.abs(y[index*frame_size:(index + 1) * frame_size]))[-1]time = np.arange(0, frame_size * num_frames) * (1 / sr)plt.subplot(211)plt.plot(time, y[: frame_size * num_frames])plt.ylabel('Amplitude')plt.subplot(212)plt.plot(time, np.repeat(energy_p, frame_size))plt.show()
相应的语音波形以及对应的短时能量波形如下图所示。

时域特征--短时能量与短时平均幅值_java_04

https://mp.weixin.qq.com/s/0jKryrA7kQgm3WJzOCGxZA