我正在使用 iOS SFSpeechRecognizer API 开发语音转文本应用程序。
在这里找到了一个很棒的教程:它工作得很好。
我想在语音输入停止后立即处理文本并执行一些操作。那么,很好奇是否有可用于 SFSpeechRecognizer 的委托方法,它可以识别语音输入何时停止,以便我可以捕获输入并进一步处理?
我正在使用 iOS SFSpeechRecognizer API 开发语音转文本应用程序。
在这里找到了一个很棒的教程:它工作得很好。
我想在语音输入停止后立即处理文本并执行一些操作。那么,很好奇是否有可用于 SFSpeechRecognizer 的委托方法,它可以识别语音输入何时停止,以便我可以捕获输入并进一步处理?
那么,很好奇是否有可用于 SFSpeechRecognizer 的委托方法,它可以识别语音输入何时停止,以便我可以捕获输入并进一步处理?
没有内置到 SFSpeechRecognizer API 中,没有。相反,这正是为什么您必须提供允许用户告诉识别器输入已完成的界面(例如某种完成按钮)的原因。如果您省略该界面,您的应用将被拒绝。
一种可能的解决方案可能是使用第三方库,如FDSoundActivatedRecorder,它在检测到声音时开始录制,并在用户完成通话时停止录制。
然后,您可以使用此链接中录制的音频将其转换为文本。
func transcribeAudio(url: URL) {
// create a new recognizer and point it at our audio
let recognizer = SFSpeechRecognizer()
let request = SFSpeechURLRecognitionRequest(url: url)
// start recognition!
recognizer?.recognitionTask(with: request) { [unowned self] (result, error) in
// abort if we didn't get any transcription back
guard let result = result else {
print("There was an error: \(error!)")
return
}
// if we got the final transcription back, print it
if result.isFinal {
// pull out the best transcription...
print(result.bestTranscription.formattedString)
}
}
}