Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions electron/resources/speech-helper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,15 @@ func fail(_ message: String) -> Never {

SFSpeechRecognizer.requestAuthorization { status in
guard status == .authorized else { fail("speech-not-authorized") }
guard let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US")),
recognizer.isAvailable
// Recognize in the user's language: a hardcoded en-US recognizer
// transcribes everyone else into nonsense. First preference that has an
// available recognizer wins, with en-US as the last resort.
let candidates =
Locale.preferredLanguages.map { Locale(identifier: $0) }
+ [Locale.current, Locale(identifier: "en-US")]
guard
let recognizer = candidates.lazy.compactMap({ SFSpeechRecognizer(locale: $0) })
.first(where: { $0.isAvailable })
else { fail("recognizer-unavailable") }

let request = SFSpeechAudioBufferRecognitionRequest()
Expand Down