diff --git a/energy_based_recorder.py b/energy_based_recorder.py index d5358ef..96d438f 100644 --- a/energy_based_recorder.py +++ b/energy_based_recorder.py @@ -169,6 +169,17 @@ class EnergyBasedRecorder: def play_audio(self, filename): """播放音频文件""" try: + # 立即停止当前录音并清空缓冲区 + if self.recording: + print("🔇 播放开始,停止当前录音") + self.recording = False + self.recorded_frames = [] + self.recording_start_time = None + self.last_sound_time = None + + # 清空预录音缓冲区,避免录制播放的音频 + self.pre_record_buffer = [] + # 设置播放状态 self.is_playing = True @@ -198,6 +209,7 @@ class EnergyBasedRecorder: ) print(f"🔊 开始播放: {filename}") + print("🚫 暂停录音处理,避免回声") # 分块播放音频 for chunk in frames: @@ -207,6 +219,7 @@ class EnergyBasedRecorder: playback_stream.close() print("✅ 播放完成") + print("🔄 恢复录音监听") except Exception as e: print(f"❌ 播放失败: {e}") @@ -214,6 +227,8 @@ class EnergyBasedRecorder: finally: # 恢复播放状态 self.is_playing = False + # 重置状态,准备重新监听 + self.energy_history = [] def play_with_system_player(self, filename): """使用系统播放器播放音频""" @@ -332,7 +347,7 @@ class EnergyBasedRecorder: if len(data) == 0: continue - # 如果正在播放,跳过音频处理 + # 如果正在播放,完全跳过音频处理 if self.is_playing: # 显示播放状态 status = "🔊 播放中... 跳过录音处理"