import Foundation /// Whisper sometimes answers a vocabulary prompt with the prompt itself when there is little speech. public enum PromptEcho { static func normalize(_ text: String) -> String { String(text.lowercased().map { $0.isLetter || $0.isNumber ? $0 : " " }) .split(separator: " ") .joined(separator: " ") } /// True when `text` is nothing but the first k ≥ 2 terms of the prompt. /// A single term on its own is valid speech ("Anthropic"). public static func isEcho(_ text: String, vocabulary: [String]) -> Bool { guard vocabulary.count >= 2 else { return false } let normalized = normalize(text) guard !normalized.isEmpty else { return false } return (2...vocabulary.count).contains { k in normalize(vocabulary.prefix(k).joined(separator: " ")) == normalized } } }