[真实流程命令]:完成完整链路自测入口,包含真实Provider CLI、播放验收和文档测试
This commit is contained in:
@@ -13,6 +13,7 @@ from .conversation import ConversationContext
|
||||
from .llm import MockLlmProvider, OpenAICompatibleLlmProvider
|
||||
from .models import AudioFrame, ProviderError
|
||||
from .pipeline import VoicePipeline
|
||||
from .real_live_check import run_real_live_check
|
||||
from .runtime import build_live_runtime
|
||||
from .simulation import run_simulated_live
|
||||
from .speech_models import check_speech_models, model_status_errors
|
||||
@@ -40,6 +41,12 @@ def main(argv: list[str] | None = None) -> int:
|
||||
simulate.add_argument("--turns", type=int, default=2, help="Number of simulated turns. Default: 2")
|
||||
simulate.add_argument("--fixture", default=None, help="Replay simulated microphone frames from JSONL")
|
||||
simulate.add_argument("--write-fixture", default=None, help="Write generated simulated microphone frames to JSONL")
|
||||
real_check = subparsers.add_parser("real-live-check", help="Run generated-audio live check with real providers")
|
||||
real_check.add_argument("--turns", type=int, default=2, help="Number of generated live turns. Default: 2")
|
||||
real_check.add_argument("--voice", default="Tingting", help="macOS say voice used for generated microphone input")
|
||||
real_check.add_argument("--wake-text", default="小杰小杰。", help="Generated wake utterance")
|
||||
real_check.add_argument("--question", action="append", default=None, help="Generated user question; can be repeated")
|
||||
real_check.add_argument("--no-playback", action="store_true", help="Synthesize but do not play generated TTS output")
|
||||
smoke = subparsers.add_parser("llm-smoke", help="Call configured OpenAI/NewAPI endpoint")
|
||||
smoke.add_argument("--message", default="用一句中文回复:小杰在线。")
|
||||
smoke.add_argument("--no-stream", action="store_true")
|
||||
@@ -159,6 +166,23 @@ def main(argv: list[str] | None = None) -> int:
|
||||
print(json.dumps(data, ensure_ascii=False, sort_keys=True))
|
||||
return 0 if data["success"] else 1
|
||||
|
||||
if args.command == "real-live-check":
|
||||
config = AppConfig.from_dotenv(args.env_file)
|
||||
try:
|
||||
data = run_real_live_check(
|
||||
config=config,
|
||||
turns=args.turns,
|
||||
voice=args.voice,
|
||||
wake_text=args.wake_text,
|
||||
questions=args.question,
|
||||
play_audio=not args.no_playback,
|
||||
)
|
||||
except (ProviderError, ValueError) as exc:
|
||||
print(json.dumps({"success": False, "error": str(exc)}, ensure_ascii=False, sort_keys=True))
|
||||
return 1
|
||||
print(json.dumps(data, ensure_ascii=False, sort_keys=True))
|
||||
return 0 if data["success"] else 1
|
||||
|
||||
if args.command == "acceptance":
|
||||
result = run_acceptance()
|
||||
print(json.dumps(result, ensure_ascii=False, sort_keys=True))
|
||||
|
||||
Reference in New Issue
Block a user