pyaudio:用于音频输入。
wave:用于音频文件的读写。
import wave, pyaudio
p = pyaudio.PyAudio()
# 获取设备上的所有麦克风设备
info = p.get_host_api_info_by_index(0)
num_devices = info.get('deviceCount')
for i in range(0, num_devices):
if p.get_device_info_by_host_api_device_index(0, i).get('maxInputChannels') > 0:
# print(p.get_device_info_by_host_api_device_index(0, i))
print(f'麦克风设备--{p.get_device_info_by_host_api_device_index(0, i).get("name")}')
# 设置录音参数
FORMAT = pyaudio.paInt16 # 表示使用16位整数格式
CHANNELS = 2 # 声道,1为单声道,1为双声道(立体声)
RATE = 44100 # 采样率,44100为CD音质的标准采样率
CHUNK = 1024 # 缓存区大小,每次读取音频的帧数
AudioTimeLong = 10 # 录音时长
# 开启音频媒体流
stream = p.open(
format=FORMAT,
channels=CHANNELS,
rate=RATE,
frames_per_buffer=CHUNK,
input=True
)
print('开始录音')
frames = []
for _ in range(0, int(RATE / CHUNK * AudioTimeLong)):
data = stream.read(CHUNK)
frames.append(data)
print('结束录音')
# 关闭媒体和释放资源
stream.stop_stream() # 停止媒体流
stream.close() # 关闭媒体流
p.terminate() # 释放PortAudio资源
# 将音频数据流写入到文件中
with wave.open(r'E:\桌面\dm0.wav', 'wb') as wf:
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))

528

被折叠的 条评论
为什么被折叠?



