james.maes
|
b332214a7a
|
feat(06-03): STTProvider + SpeechAnalyzerSTT + WhisperKitSTT + STTBackendSelector (VOICE-03/04)
- STTProvider protocol: transcribe(stream:) -> AsyncStream<PartialTranscript> + finalize()
- AudioChunk + PartialTranscript value types
- SpeechAnalyzerSTT: SpeechAnalyzerBridge seam; LiveSpeechAnalyzerBridge @available(macOS 26)
+ UnavailableSpeechAnalyzerBridge fallback; maps SFSpeechErrorCode.assetUnavailable → STTError.assetMissing
- WhisperKitSTT: LazyWhisperKitBridge defers async init; model='large-v3-v20240930_626MB' (anti-pattern guard)
+ WhisperKitBridge protocol seam for tests
- STTBackendSelector: make(backend:warningLogger:) — synchronous factory; 'speech_analyzer' default;
unknown value falls back + emits warning via STTWarningLogger protocol
- STTError: backendUnavailable / assetMissing / finalizationFailed
- scripts/probe-speech-assets.sh: scaffold-time entitlement probe (AUDIT-R2-S5)
uses ${VAR-} (no colon) for empty-string semantics per guardrail
- All tests pass: S1/S2 (SpeechAnalyzerSTT) + W1/W2 (WhisperKitSTT) + B1..B4 (selector)
- AVSpeechSmokeTests.swift stub created for Plan 06-04
|
2026-04-27 11:54:17 -05:00 |
|