1

我正在使用 iOS SFSpeechRecognizer API 开发语音转文本应用程序。

在这里找到了一个很棒的教程:它工作得很好。

我想在语音输入停止后立即处理文本并执行一些操作。那么,很好奇是否有可用于 SFSpeechRecognizer 的委托方法,它可以识别语音输入何时停止,以便我可以捕获输入并进一步处理?

4

2 回答 2

1

那么,很好奇是否有可用于 SFSpeechRecognizer 的委托方法,它可以识别语音输入何时停止,以便我可以捕获输入并进一步处理?

没有内置到 SFSpeechRecognizer API 中,没有。相反,这正是为什么您必须提供允许用户告诉识别器输入已完成的界面(例如某种完成按钮)的原因。如果您省略该界面,您的应用将被拒绝。

于 2018-10-16T19:19:07.803 回答
0

一种可能的解决方案可能是使用第三方库,如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)
        }
    }
}
于 2018-10-16T18:17:41.863 回答