录制音频代码如下所示。
# 导入音频相关模块
import pyaudio
import wave
# 设置录音时间
RECORD_SECONDS = 80
# 设置量化PyAudio 内置缓存大小
CHUNK=1024
# 设置量化位数,这里设置量化位数是16bit,字节
FORMAT =pyaudio.paInt16
# 设置声道数
CHANNELS=1
# 设置采样率
RATE=16000
# 生成PyAudio 对象
p=pyaudio.PyAudio()
stream =p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)
print("开始录音...")
frames=[]
for i in range(0,int(RATE/CHUNK*RECORD_SECONDS)):
data=stream.read(CHUNK)
frames.append(data)
print("结束录音")
stream.stop_stream()
stream.close()
p.terminate()
wf=wave.open('test1.wav','wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
# 把列表中数据写入文件
wf.writeframes(b''.join(frames))
wf.close()
(1)代码开头设置了录音时间、PyAudio内置缓存大小、量化位数、声道数和采样率这几个常量,这种通过变量保存各种参数的数值,然后通过变量进行参数设置的方式,可有效防止在代码量过多、多处用到参数设置时出现数据出错、数据不一致、维护量变大等问题。
(2)在 stream =p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK) 语句中通过设置 input=True 把音频数据流对象设置为输入模式,也就时录音模式,其他参数可参考前面的介绍。
(3)音频文件播放或录制过程中,每秒钟产出的字节数等于采样率、声道数和量化位数三个数值的乘积;音频文件的帧记录了一个声音单元,其长度(字节数)等于量化位数和声道数的乘积。如果每次读取计算循环次数。
(4)以上代码的主要逻辑是:通过PyAduio生成一个音频数据流对象(stream),并通过传递参数设定数据流对象的量化位数、声道数、采样率、录音状态和内置缓存等属性,然后按照录制时间大小确定循环次数,在每次循环中通过数据流把录音读入并存放到变量中(data=stream.read(CHUNK)),然后依次存放到列表变量frames中,最后通过wave对象把列表中数据保存在文件中。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
表单数据校验 jquery-validation The jQuery Validation Plugin provides drop-in validation for your existing forms, while making all kinds …