彻底解决播放时回声录制问题
- 播放开始时立即停止当前录音 - 清空预录音缓冲区和录音数据 - 播放期间完全跳过音频处理 - 播放结束后重置状态并恢复监听 - 添加清晰的状态提示信息
This commit is contained in:
parent
48b99384b7
commit
e6341b8620
@ -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 = "🔊 播放中... 跳过录音处理"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user