/** * The phrase the proof speaks. Deliberately plain, common words: the point is * to prove the pipeline runs end to end, not to benchmark a small model on * vocabulary it was never going to get right. */ export declare const VOICE_PROOF_PHRASE = "the quick brown fox jumps over the lazy dog"; /** How much of the phrase must survive the round trip to count as proof. */ export declare const VOICE_PROOF_MIN_WORD_OVERLAP = 0.5; /** Injectable process seam, matching providers/local.ts. */ export type ProofEngineRunner = (input: { readonly binary: string; readonly args: readonly string[]; readonly stdinText?: string | undefined; readonly timeoutMs: number; }) => Promise<{ stdout: string; }>; export interface VoiceRoundTripProofOptions { readonly ttsEngine: string; readonly ttsBinary: string; readonly ttsModelPath: string; readonly sttEngine: string; readonly sttBinary: string; readonly sttModelPath: string; readonly phrase?: string | undefined; readonly runner?: ProofEngineRunner | undefined; readonly timeoutMs?: number | undefined; /** Injectable so a test needs no temp directory. */ readonly scratchDir?: string | undefined; } /** What the proof did, in enough detail to report it honestly either way. */ export interface VoiceRoundTripProof { readonly proved: boolean; /** Which stage ran last: `synthesize`, `transcribe`, or `compare`. */ readonly stage: 'synthesize' | 'transcribe' | 'compare'; readonly phrase: string; /** What the managed STT actually returned. Shown verbatim. */ readonly transcript?: string | undefined; /** Fraction of the phrase's words that came back. */ readonly wordOverlap?: number | undefined; /** The exception text when a stage failed. */ readonly error?: string | undefined; /** One sentence a surface can print as-is. */ readonly summary: string; } /** Fraction of `expected`'s distinct words that appear in `actual`. */ export declare function transcriptWordOverlap(expected: string, actual: string): number; /** * Speak a phrase with the managed TTS and read it back with the managed STT. * * Never throws: a proof that blew up is a failed proof, reported as one. The * caller turns this into "provisioned" or "not provisioned". */ export declare function proveVoiceRoundTrip(options: VoiceRoundTripProofOptions): Promise; //# sourceMappingURL=round-trip-proof.d.ts.map