[Pipeline 状态机]:完成TurnController重构,包含wake到standby闭环和错误恢复
This commit is contained in:
@@ -21,7 +21,7 @@ from owner_voice_pet.events import (
|
||||
)
|
||||
from owner_voice_pet.llm import MockLlmProvider
|
||||
from owner_voice_pet.models import AudioFrame, AudioSegment, Transcript
|
||||
from owner_voice_pet.runtime import LiveVoiceRuntime
|
||||
from owner_voice_pet.assistant_pipeline import VoiceAssistantPipeline
|
||||
from owner_voice_pet.transport import MemoryAudioTransport
|
||||
from owner_voice_pet.tts import SineTtsProvider
|
||||
from owner_voice_pet.vad import EnergyVadProvider, VadRecorder
|
||||
@@ -82,7 +82,7 @@ class RecordingReporter:
|
||||
self.errors.append(f"{stage}:{code}:{message}")
|
||||
|
||||
|
||||
def make_runtime(texts: list[str], context: ConversationContext | None = None) -> tuple[LiveVoiceRuntime, QueueSttProvider, MockLlmProvider, MemoryAudioTransport, RecordingReporter]:
|
||||
def make_runtime(texts: list[str], context: ConversationContext | None = None) -> tuple[VoiceAssistantPipeline, QueueSttProvider, MockLlmProvider, MemoryAudioTransport, RecordingReporter]:
|
||||
frames = []
|
||||
for idx, _text in enumerate(texts):
|
||||
base_id = idx * 5
|
||||
@@ -95,7 +95,7 @@ def make_runtime(texts: list[str], context: ConversationContext | None = None) -
|
||||
tts = SineTtsProvider()
|
||||
reporter = RecordingReporter()
|
||||
event_bus = PipelineEventBus()
|
||||
runtime = LiveVoiceRuntime(
|
||||
runtime = VoiceAssistantPipeline(
|
||||
config=AppConfig(llm_api_key="secret", speech_provider="cloud", post_playback_drain_ms=0),
|
||||
transport=transport,
|
||||
wakeword=KeywordWakeWordProvider(),
|
||||
@@ -113,6 +113,8 @@ def make_runtime(texts: list[str], context: ConversationContext | None = None) -
|
||||
class LiveRuntimeTests(unittest.TestCase):
|
||||
def test_repeated_runtime_runs_two_turns_and_returns_to_standby(self) -> None:
|
||||
runtime, stt, llm, transport, reporter = make_runtime(["第一问", "第二问"])
|
||||
self.assertIsInstance(runtime, VoiceAssistantPipeline)
|
||||
self.assertIsNotNone(runtime.controller)
|
||||
summary = runtime.run(max_turns=2)
|
||||
|
||||
self.assertEqual(summary.completed_turns, 2)
|
||||
|
||||
Reference in New Issue
Block a user