From 997691cc2b2eb4b5755d11b58e1071f1dc3005ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=BD=AE?= Date: Tue, 23 Sep 2025 14:14:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A0=E5=A3=B0=E9=9F=B3?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84=20all=5Faudio=5Freceived=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- audio_processes.py | 102 +++++++++++++++++++++++---------------------- 1 file changed, 52 insertions(+), 50 deletions(-) diff --git a/audio_processes.py b/audio_processes.py index d1820e5..7847dbd 100644 --- a/audio_processes.py +++ b/audio_processes.py @@ -7,24 +7,26 @@ 使用增强版语音检测器 """ +import base64 +import gzip +import json import multiprocessing as mp +import os import queue -import time import threading +import time +import wave +from dataclasses import dataclass +from enum import Enum +from typing import Any, Dict, List, Optional + import numpy as np import pyaudio -from enum import Enum -from dataclasses import dataclass -from typing import Optional, List, Dict, Any -import json -import wave -import os +import requests + from enhanced_voice_detector import EnhancedVoiceDetector from process_logger import ProcessLogger -import requests -import base64 -import gzip class RecordingState(Enum): """录音状态枚举""" @@ -1437,7 +1439,7 @@ class OutputProcess: if not self.end_signal_received: return False - print(f"🔍 增强播放完成检查开始...") + # print(f"🔍 增强播放完成检查开始...") # 更新状态变量 self.pre_buffer_empty = (len(self.preload_buffer) == 0) @@ -1450,19 +1452,19 @@ class OutputProcess: current_time = time.time() time_since_last_chunk = current_time - self.last_audio_chunk_time - print(f"🔍 增强播放完成检查详情:") - print(f" - end_signal_received: {self.end_signal_received}") - print(f" - llm_generation_complete: {self.llm_generation_complete}") - print(f" - tts_generation_complete: {self.tts_generation_complete}") - print(f" - all_audio_received: {self.all_audio_received}") - print(f" - tts_queue_size: {tts_queue_size}") - print(f" - tts_buffer_size: {len(self.tts_buffer)}") - print(f" - playback_buffer: {len(self.playback_buffer)}") - print(f" - preload_buffer: {len(self.preload_buffer)}") - print(f" - currently_playing: {self.currently_playing}") - print(f" - is_playing: {self.is_playing}") - print(f" - last_audio_chunk_time: {self.last_audio_chunk_time}") - print(f" - time_since_last_chunk: {time_since_last_chunk:.3f}秒") + # print(f"🔍 增强播放完成检查详情:") + # print(f" - end_signal_received: {self.end_signal_received}") + # print(f" - llm_generation_complete: {self.llm_generation_complete}") + # print(f" - tts_generation_complete: {self.tts_generation_complete}") + # print(f" - all_audio_received: {self.all_audio_received}") + # print(f" - tts_queue_size: {tts_queue_size}") + # print(f" - tts_buffer_size: {len(self.tts_buffer)}") + # print(f" - playback_buffer: {len(self.playback_buffer)}") + # print(f" - preload_buffer: {len(self.preload_buffer)}") + # print(f" - currently_playing: {self.currently_playing}") + # print(f" - is_playing: {self.is_playing}") + # print(f" - last_audio_chunk_time: {self.last_audio_chunk_time}") + # print(f" - time_since_last_chunk: {time_since_last_chunk:.3f}秒") # 检查TTS是否正在生成 - 移除自动修正逻辑 @@ -1470,10 +1472,10 @@ class OutputProcess: # TTS正在生成的条件:队列中有任务 或 还有待处理的缓冲区内容 或 TTS生成未完成 tts_is_generating = (tts_queue_size > 0 or len(self.tts_buffer) > 0 or not self.tts_generation_complete) - print(f" - tts_is_generating: {tts_is_generating}") - print(f" - pre_buffer_empty: {self.pre_buffer_empty}") - print(f" - playback_buffer_empty: {self.playback_buffer_empty}") - print(f" - no_active_playback: {self.no_active_playback}") + # print(f" - tts_is_generating: {tts_is_generating}") + # print(f" - pre_buffer_empty: {self.pre_buffer_empty}") + # print(f" - playback_buffer_empty: {self.playback_buffer_empty}") + # print(f" - no_active_playback: {self.no_active_playback}") # 特殊处理1:如果没有任何音频数据,暂时不设置all_audio_received,等待TTS生成 # 注意:这里不自动设置all_audio_received,因为可能TTS还在生成中 @@ -1481,15 +1483,15 @@ class OutputProcess: # 特殊处理2:如果all_audio_received为False但其他条件都满足,强制设置为True # 移除自动修正all_audio_received的逻辑,等待真正的音频数据 - print(f"🔍 播放状态检查(移除自动修正机制):") - print(f" - llm_generation_complete: {self.llm_generation_complete}") - print(f" - tts_generation_complete: {self.tts_generation_complete}") - print(f" - all_audio_received: {self.all_audio_received}") - print(f" - pre_buffer_empty: {self.pre_buffer_empty}") - print(f" - playback_buffer_empty: {self.playback_buffer_empty}") - print(f" - no_active_playback: {self.no_active_playback}") - print(f" - tts_queue_size == 0: {tts_queue_size == 0}") - print(f" - not tts_is_generating: {not tts_is_generating}") + # print(f"🔍 播放状态检查(移除自动修正机制):") + # print(f" - llm_generation_complete: {self.llm_generation_complete}") + # print(f" - tts_generation_complete: {self.tts_generation_complete}") + # print(f" - all_audio_received: {self.all_audio_received}") + # print(f" - pre_buffer_empty: {self.pre_buffer_empty}") + # print(f" - playback_buffer_empty: {self.playback_buffer_empty}") + # print(f" - no_active_playback: {self.no_active_playback}") + # print(f" - tts_queue_size == 0: {tts_queue_size == 0}") + # print(f" - not tts_is_generating: {not tts_is_generating}") # 检查是否所有条件都满足 - 使用更新的状态变量,添加TTS生成状态检查 all_conditions_met = ( @@ -1503,17 +1505,17 @@ class OutputProcess: not tts_is_generating # 新增:确保TTS不在生成中 ) - print(f"🔍 最终条件检查结果:") - print(f" - all_conditions_met: {all_conditions_met}") - print(f" - 各个条件详情:") - print(f" * llm_generation_complete: {self.llm_generation_complete}") - print(f" * tts_generation_complete: {self.tts_generation_complete}") - print(f" * all_audio_received: {self.all_audio_received}") - print(f" * pre_buffer_empty: {self.pre_buffer_empty}") - print(f" * playback_buffer_empty: {self.playback_buffer_empty}") - print(f" * no_active_playback: {self.no_active_playback}") - print(f" * tts_queue_size == 0: {tts_queue_size == 0}") - print(f" * not tts_is_generating: {not tts_is_generating}") + # print(f"🔍 最终条件检查结果:") + # print(f" - all_conditions_met: {all_conditions_met}") + # print(f" - 各个条件详情:") + # print(f" * llm_generation_complete: {self.llm_generation_complete}") + # print(f" * tts_generation_complete: {self.tts_generation_complete}") + # print(f" * all_audio_received: {self.all_audio_received}") + # print(f" * pre_buffer_empty: {self.pre_buffer_empty}") + # print(f" * playback_buffer_empty: {self.playback_buffer_empty}") + # print(f" * no_active_playback: {self.no_active_playback}") + # print(f" * tts_queue_size == 0: {tts_queue_size == 0}") + # print(f" * not tts_is_generating: {not tts_is_generating}") if all_conditions_met: print(f"✅ 所有播放完成条件已满足,进行时间检查...") @@ -2060,7 +2062,7 @@ class OutputProcess: def _filter_parentheses_content(self, text): """过滤文本中的括号内容(包括中文和英文括号)- 从 recorder.py 移植""" import re - + # 移除中文括号内容:(内容) filtered_text = re.sub(r'([^)]*)', '', text) # 移除英文括号内容:(content) @@ -2180,4 +2182,4 @@ class OutputProcess: if __name__ == "__main__": # 测试代码 print("音频进程模块测试") - print("这个模块应该在多进程环境中运行") \ No newline at end of file + print("这个模块应该在多进程环境中运行")