def startAccord(self, Times=100):
# ??????
pa = PyAudio()
if not self.SAMPLING_RATE:
setAudio(self)
stream = pa.open(format=paInt16, channels=1, rate=self.SAMPLING_RATE, input=True,
frames_per_buffer=self.NUM_SAMPLES)
save_count = 0
save_buffer = []
while True:
#????
if Times != 100:
Times -=1
# ??NUM_SAMPLES???
string_audio_data = stream.read(self.NUM_SAMPLES)
# ???????????
audio_data = np.fromstring(string_audio_data, dtype=np.short)
# ????LEVEL??????
large_sample_count = np.sum( audio_data > self.LEVEL )
if self.debug:
print np.max(audio_data)
# ??????COUNT_NUM??????SAVE_LENGTH??
if large_sample_count > self.COUNT_NUM:
save_count = self.SAVE_LENGTH
else:
save_count -= 1
if save_count < 0:
save_count = 0
if save_count > 0:
# ??????????save_buffer?
save_buffer.append( string_audio_data )
else:
# ?save_buffer??????WAV???WAV????????????
if len(save_buffer) > 0:
filename = "tmp.wav"
cacheFile = save_wave_file(self, filename, save_buffer)
save_buffer = []
stream.close()
if self.debug:
print "saved audio stream"
return cacheFile
break
if Times < 0:
stream.close()
return False
break
评论列表
文章目录