import pyaudio
import wave
# 设置录音参数
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 1024
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
# 初始化录音对象
audio = pyaudio.PyAudio()
# 打开音频流进行录音
stream = audio.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()
audio.terminate()
# 保存录音结果到WAV文件
with wave.open(WAVE_OUTPUT_FILENAME, 'wb') as wf:
wf.setnchannels(CHANNELS)
wf.setsampwidth(audio.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
print("录音已保存到", WAVE_OUTPUT_FILENAME)
# 播放录音
wf = wave.open(WAVE_OUTPUT_FILENAME, 'rb')
# 初始化音频播放对象
audio_player = pyaudio.PyAudio()
# 打开音频流进行播放
stream = audio_player.open(format=audio_player.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
print("开始播放录音......")
# 读取音频数据并播放
data = wf.readframes(CHUNK)
while data:
stream.write(data)
data = wf.readframes(CHUNK)
print("播放结束.")
# 停止音频流
stream.stop_stream()
stream.close()
audio_player.terminate()
Python实现录音+播放
最新推荐文章于 2024-07-05 21:32:30 发布
![](https://img-home.csdnimg.cn/images/20240611030827.png)