python 通过麦克风录音 生成wav文件的方法

风景,因走过而美丽。命运,因努力而精彩。南国园内看夭红,溪畔临风血艳浓。如果回到年少时光,那间学堂,我愿依靠在你身旁,陪你欣赏古人的诗章,往后的夕阳。

如下所示:

#!/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文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

您可能有感兴趣的文章
Python自动化运维-使用Python脚本监控华为AR路由器关键路由变化

Python自动化运维-netmiko模块设备自动发现

Python自动化运维—netmiko模块连接并配置华为交换机

Python自动化运维-利用Python-netmiko模块备份设备配置

Python自动化运维-Paramiko模块和堡垒机实战