feat(asr): switch to Qwen streaming and close interrupted providers

This commit is contained in:
stu2not
2026-10-12 16:48:47 +08:00
parent a9769fb9c6
commit ffdd8eaff1
17 changed files with 1250 additions and 368 deletions
@@ -72,6 +72,8 @@ async def handle_start_packet(session: AudioSession, device_id: str, session_id:
from handlers.service_connection_handler import prepare_asr_service
await prepare_asr_service(session, device_id, session_id)
if not session.asr_service.connected:
return
from handlers.service_connection_handler import (
prepare_llm_service,
@@ -122,6 +124,7 @@ async def handle_audio_packet(session: AudioSession, audio_data: bytes):
if session.send_queue.qsize() < 100: # 设置合理的上限
await session.send_queue.put(audio_data)
else:
session.asr_error = "音频队列溢出,录音不完整"
session_logger.warning("unknown", "unknown", "音频队列过大,丢弃部分数据")
@@ -130,17 +133,12 @@ async def handle_end_packet(session: AudioSession, session_key: tuple):
device_id, session_id = session_key
session.end_time = time.perf_counter()
session_logger.info(device_id, session_id, "会话结束")
if session.send_task:
session.send_task.cancel()
try:
await session.send_task
except asyncio.CancelledError:
pass
from handlers.service_connection_handler import end_asr_session
from handlers.transcription_handler import handle_transcription
await end_asr_session(session)
await handle_transcription(session, device_id, session_id)
if not interrupt_handler.is_interrupted(session_key):
await handle_transcription(session, device_id, session_id)
if session.llm_service and hasattr(session.llm_service, "close"):
await session.llm_service.close()
if session.tts_service: