feat(asr): switch to Qwen streaming and close interrupted providers
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user