import pyaudio
import wave
# 设置录制参数
chunk = 1024
sample_format = pyaudio.paInt16
channels = 2
sample_rate = 44100
record_seconds = 5
output_file = 'output.wav'
def play_audio():
wf = wave.open(output_file, 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
stream.close()
wf.close()
p.terminate()
def record_audio():
# 初始化PyAudio对象
p = pyaudio.PyAudio()
# 打开音频流
stream = p.open(format=sample_format,
channels=channels,
rate=sample_rate,
frames_per_buffer=chunk,
input=True)
frames = []
# 录制声音
for i in range(0, int(sample_rate / chunk * record_seconds)):
data = stream.read(chunk)
frames.append(data)
# 停止录制
stream.stop_stream()
stream.close()
# 保存录制的声音为WAV文件
wf = wave.open(output_file, 'wb')
wf.setnchannels(channels)
wf.setsampwidth(p.get_sample_size(sample_format))
wf.setframerate(sample_rate)
wf.writeframes(b''.join(frames))
wf.close()
# 释放PyAudio对象
p.terminate()
if __name__ == '__main__':
record_audio()
play_audio()