#-*- coding: utf-8 -*-
importosimportwavefrom time importsleepimportnumpy as np
SUCCESS=0
FAIL= 1
#需要添加录音互斥功能能,某些功能开启的时候录音暂时关闭
defZCR(curFrame):#过零率
tmp1 = curFrame[:-1]
tmp2= curFrame[1:]
sings= (tmp1 * tmp2 <=0)
diffs= (tmp1 - tmp2) > 0.02zcr= np.sum(sings *diffs)returnzcrdefSTE(curFrame):#短时能量
amp =np.sum(np.abs(curFrame))returnampclassVad(object):def __init__(self):#初始短时能量高门限
self.amp1 = 140
#初始短时能量低门限
self.amp2 = 120
#初始短时过零率高门限
self.zcr1 = 10
#初始短时过零率低门限
self.zcr2 = 5
#允许最大静音长度
self.maxsilence = 100
#语音的最短长度
self.minlen = 40
#偏移值
self.offsets = 40self.offsete= 40
#能量最大值
self.max_en = 20000
#初始状态为静音
self.status =0
self.count=0
self.silence=0
self.frame_len= 256self.frame_inc= 128self.cur_status=0
self.frames=[]#数据开始偏移
self.frames_start =[]
self.frames_start_num=0#数据结束偏移
self.frames_end =[]
self.frames_end_num=0#缓存数据
self.cache_frames =[]
self.c