feat(voice): start replies from stable streaming partials
This commit is contained in:
@@ -36,7 +36,7 @@ class _StubTTSProvider(TTSProvider):
|
||||
|
||||
def test_media_runtime_voice_v2_uses_streaming_sidecar_for_partial_and_final_asr_stable():
|
||||
reply_starts: list[tuple[str, str | None, float]] = []
|
||||
turns: list[str] = []
|
||||
turns: list[tuple[str, str]] = []
|
||||
|
||||
class _BatchASRProvider(ASRProvider):
|
||||
name = "batch-asr"
|
||||
@@ -131,7 +131,7 @@ def test_media_runtime_voice_v2_uses_streaming_sidecar_for_partial_and_final_asr
|
||||
plan_reply=lambda session_id, text, metadata, kind: None,
|
||||
record_latency=lambda session_id, metric, latency_ms: None,
|
||||
process_turn=lambda session_id, transcript_text, language, barge_in, metadata: (
|
||||
turns.append(transcript_text)
|
||||
turns.append((str((metadata or {}).get("reply_phase") or "final"), transcript_text))
|
||||
or VoiceAITurnDecisionOut(
|
||||
language=language or "ru",
|
||||
intent="schedule",
|
||||
@@ -191,7 +191,7 @@ def test_media_runtime_voice_v2_uses_streaming_sidecar_for_partial_and_final_asr
|
||||
|
||||
phases = [phase for _, phase, _ in reply_starts]
|
||||
finalize_started_at = next(ts for name, ts in streaming_provider.events if name == "finalize")
|
||||
assert turns == ["need work schedule"]
|
||||
assert [text for phase, text in turns if phase == "final"] == ["need work schedule"]
|
||||
assert "open" in [name for name, _ in streaming_provider.events]
|
||||
assert "close" in [name for name, _ in streaming_provider.events]
|
||||
assert phases[:2] == ["ack", "main"]
|
||||
|
||||
Reference in New Issue
Block a user