Auto-detect whisper-cli path for Intel and ARM Macs

- Check multiple paths: /opt/homebrew/bin (ARM), /usr/local/bin (Intel),
  /opt/local/bin (MacPorts), ~/bin (user local)
- Show error status if whisper-cli not found
- Use isExecutableFile to verify binary exists and is executable

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hariel1985
2026-02-02 12:52:25 +01:00
szülő 18bc6186a0
commit 4e68fee1c1

Fájl megtekintése

@@ -442,6 +442,24 @@ class AppDelegate: NSObject, NSApplicationDelegate {
}
}
// MARK: - Whisper CLI Detection
func findWhisperCLI() -> String? {
// Check common paths for whisper-cli
let paths = [
"/opt/homebrew/bin/whisper-cli", // ARM Mac (M1/M2/M3)
"/usr/local/bin/whisper-cli", // Intel Mac
"/opt/local/bin/whisper-cli", // MacPorts
NSHomeDirectory() + "/bin/whisper-cli" // User local
]
for path in paths {
if FileManager.default.isExecutableFile(atPath: path) {
return path
}
}
return nil
}
// MARK: - Transcription
func transcribe() {
// Validate inputs before execution
@@ -464,8 +482,18 @@ class AppDelegate: NSObject, NSApplicationDelegate {
return
}
guard let whisperPath = findWhisperCLI() else {
DispatchQueue.main.async {
self.statusItem.button?.title = "🎤"
self.updateStatus("⚠️ whisper-cli not found")
if self.playSounds { NSSound(named: "Basso")?.play() }
NSLog("whisper-cli not found in PATH")
}
return
}
let task = Process()
task.executableURL = URL(fileURLWithPath: "/opt/homebrew/bin/whisper-cli")
task.executableURL = URL(fileURLWithPath: whisperPath)
task.arguments = ["-m", modelPath, "-l", language.lowercased(), "-f", audioFilePath]
let pipe = Pipe()