风景,因走过而美丽。命运,因努力而精彩。南国园内看夭红,溪畔临风血艳浓。如果回到年少时光,那间学堂,我愿依靠在你身旁,陪你欣赏古人的诗章,往后的夕阳。
如下所示:
#!/usr/bin/envpython
#-*-coding:utf-8-*-
########################################################################
#
#Copyright(c)2017aibot.me,Inc.AllRightsReserved
#
########################################################################
"""
File:gen_wav.py
Date:2017/03/2412:36:27
Brief:通过麦克风录音生成wav文件
"""
importos
importsys
importwave
importnumpyasnp
fromdatetimeimportdatetime
frompyaudioimportPyAudio,paInt16
classGenAudio(object):
def__init__(self):
self.num_samples=2000#pyaudio内置缓冲大小
self.sampling_rate=8000#取样频率
self.level=1500#声音保存的阈值
self.count_num=20#count_num个取样之内出现COUNT_NUM个大于LEVEL的取样则记录声音
self.save_length=8#声音记录的最小长度:save_length*num_samples个取样
self.time_count=8#录音时间,单位s
self.voice_string=[]
#保存文件
defsave_wav(self,filename):
wf=wave.open(filename,'wb')
wf.setnchannels(1)
wf.setsampwidth(2)
wf.setframerate(self.sampling_rate)
wf.writeframes(np.array(self.voice_string).tostring())
wf.close()
defread_audio(self):
pa=PyAudio()
stream=pa.open(format=paInt16,channels=1,rate=self.sampling_rate,input=True,
frames_per_buffer=self.num_samples)
save_count=0
save_buffer=[]
time_count=self.time_count
whileTrue:
time_count-=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)
print(np.max(audio_data)),"large_sample_count=>",large_sample_count
#如果个数大于COUNT_NUM,则至少保存SAVE_LENGTH个块
iflarge_sample_count>self.count_num:
save_count=self.save_length
else:
save_count-=1
ifsave_count<0:
save_count=0
ifsave_count>0:
save_buffer.append(string_audio_data)
else:
iflen(save_buffer)>0:
self.voice_string=save_buffer
save_buffer=[]
print("Recodeapieceofvoicesuccessfully!")
returnTrue
iftime_count==0:
iflen(save_buffer)>0:
self.voice_string=save_buffer
save_buffer=[]
print("Recodeapieceofvoicesuccessfully!")
returnTrue
else:
returnFalse
returnTrue
if__name__=="__main__":
r=GenAudio()
r.read_audio()
r.save_wav("./test.wav")
以上这篇python 通过麦克风录音 生成wav文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。