Skip to content

Instantly share code, notes, and snippets.

@jasdev
Created January 24, 2021 19:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jasdev/da2ab0baf3c0482122336b8c604bcb5e to your computer and use it in GitHub Desktop.
Save jasdev/da2ab0baf3c0482122336b8c604bcb5e to your computer and use it in GitHub Desktop.
A non-TCA version of the transcription effect.
let transcriptionEffect: (URL) -> AnyPublisher<String, NSError> = { audioURL in
Deferred {
Future { callback in
guard
let speechRecognizer = SFSpeechRecognizer(),
speechRecognizer.isAvailable
else {
callback(
.failure(
NSError(
domain: "com.jasdev.CaptionsGeneration",
code: 1,
userInfo: nil
)
)
)
return
}
let request = SFSpeechURLRecognitionRequest(url: audioURL)
request.shouldReportPartialResults = false
speechRecognizer.recognitionTask(with: request) { [weak request] result, error in
if let error = error {
callback(.failure(error as NSError))
} else {
callback(
.success(
transcriptionSegmentsToSubRipText(
result!
.bestTranscription
.segments
)
)
)
}
}
}
}
.eraseToAnyPublisher()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment