加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
my_audio.py 1.72 KB
一键复制 编辑 原始数据 按行查看 历史
yqmc 提交于 2023-04-03 20:41 . first commit
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)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化