在Python中,使用PyAudio库处理音频中断需要监听音频流中的特定事件,例如音频帧结束或音频流停止。以下是一个简单的示例,展示了如何使用PyAudio处理音频中断:
import pyaudio
import time
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
p = pyaudio.PyAudio()
stream = p.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()
p.terminate()
with wave.open('output.wav', 'wb') as wf:
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
在这个示例中,我们首先导入了所需的库,并设置了音频参数。然后,我们使用p.open()
方法打开一个音频流,以便从麦克风读取音频数据。
接下来,我们使用一个for循环来读取音频帧,并将它们添加到一个名为frames
的列表中。当循环结束时,我们停止音频流并关闭它。
最后,我们使用wave
库将录制的音频保存到名为output.wav
的文件中。
要处理音频中断,您可以在循环中添加一个条件来检查是否应该停止录音。例如,您可以使用一个变量来跟踪录音时间,并在达到RECORD_SECONDS
时停止录音。此外,您还可以监听其他事件,例如stream.read()
返回空数据,这可能表示音频中断。