Ничто в документации не говорит о том, что свойство SpeecheRecognitionMetAdata на sfspeechRecognitionresult будет ноль , пока не остановил мой класс>, но это поведение, которое я вижу.
Код: Выделить всё
class SimplestTranscriber {
private var isAuthed = false
// I call this in a .task {} in my SwiftUI View
public func requestSpeechRecognizerPermission() {
SFSpeechRecognizer.requestAuthorization { authStatus in
Task {
self.isAuthed = authStatus == .authorized
}
}
}
public func transcribe(from url: URL) {
guard isAuthed else { return }
let locale = Locale(identifier: "en-US")
let recognizer = SFSpeechRecognizer(locale: locale)
let recognitionRequest = SFSpeechURLRecognitionRequest(url: url)
// the behaviour occurs whether I set this to true or not, I recently set
// it to true to see if it made a difference
recognizer?.supportsOnDeviceRecognition = true
recognitionRequest.shouldReportPartialResults = true
recognitionRequest.addsPunctuation = true
recognizer?.recognitionTask(with: recognitionRequest) { (result, error) in
guard result != nil else { return }
if result!.isFinal {
//speechRecognitionMetadata is not nil
} else {
//speechRecognitionMetadata is nil
}
}
}
}
Транскрипция иначе «работает», в том, что я получаю текст транскрипции до Isfinal и если я жду Isfinal , сегменты являются правильными и речевыми ичинными
Подробнее здесь: https://stackoverflow.com/questions/796 ... -to-be-off
Мобильная версия