在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()
返回空數據,這可能表示音頻中斷。