diff --git a/qy_lty/device_interaction/views.py b/qy_lty/device_interaction/views.py index 3a07f22..c3f87f3 100644 --- a/qy_lty/device_interaction/views.py +++ b/qy_lty/device_interaction/views.py @@ -1347,13 +1347,16 @@ class VolcEngineTokenViewSet(viewsets.ViewSet): # 中间识别结果不入库 if not item.get('definite'): continue - if not text.strip(): - continue user_id_in_subtitle = item.get('userId') or '' sequence = item.get('sequence', 0) is_paragraph_end = bool(item.get('paragraph')) + # Mode=1 下 paragraph=True 是独立的空文本终止信号,必须放过去触发 flush + # 仅当文本空 + 又不是终止信号时才跳过 + if not text.strip() and not is_paragraph_end: + continue + # 解析 ParadiseUser 归属 paradise_user_id = None if user_id_in_subtitle == 'bot01': @@ -1383,10 +1386,11 @@ class VolcEngineTokenViewSet(viewsets.ViewSet): user_id_in_subtitle, webhook_task_id, sequence) continue - # 累积到 buffer + # 累积到 buffer(仅在文本非空时;空文本是 Mode=1 的 paragraph 终止信号,不入 buffer 但要触发 flush) buffer_key = f"rtc_subv_buffer:{sender}:{paradise_user_id}" buf = cache.get(buffer_key) or [] - buf.append({'seq': sequence, 'text': text}) + if text.strip(): + buf.append({'seq': sequence, 'text': text}) force_flush = len(buf) > MAX_BUFFER_SEGMENTS if force_flush: