代码拉取完成,页面将自动刷新
import wave
from pyaudio import PyAudio, paInt16
CHUNK = 1024 # wav文件是由若干个CHUNK组成的,CHUNK我们就理解成数据包或者数据片段。
FORMAT = paInt16 # 表示我们使用量化位数 16位来进行录音
CHANNELS = 1 # 代表的是声道,1是单声道,2是双声道。
RATE = 16000 # 采样率 一秒内对声音信号的采集次数,常用的有8kHz, 16kHz, 32kHz, 48kHz
RECORD_SECONDS = 5 # 录制时间可以随便改,这里设定了10秒
def save_wave_file(pa, filename, data):
wf = wave.open(filename, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(pa.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b"".join(data))
wf.close()
def get_audio(filepath):
isstart = str(input("是否开始录音? (y/n)"))
# isstart = str("是")
if isstart == str("y"):
pa = PyAudio()
stream = pa.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("*" * 10, "开始录音:请在5秒内输入语音")
frames = [] # 定义一个列表
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): # 循环,采样率 44100 / 1024 * 5
data = stream.read(CHUNK) # 读取chunk个字节 保存到data中
frames.append(data) # 向列表frames中添加数据data
print("*" * 10, "录音结束\n")
stream.stop_stream()
stream.close() # 关闭
pa.terminate() # 终结
save_wave_file(pa, filepath, frames)
elif isstart == str("n"):
exit()
else:
print("无效输入,请重新选择")
get_audio(filepath)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。