从SFSpeechRecognizer停止语音输入后,处理文本

时间:2018-10-16 17:59:32

标签: ios swift speech-recognition sfspeechrecognizer

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

发现了一个不错的tutorial here:,而且效果很好。

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

2 个答案:

答案 0 :(得分:1)

  

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

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

答案 1 :(得分:0)

可能的解决方案可能是使用第三方库,例如FDSoundActivatedRecorder,该第三方库会在检测到声音时开始录制, 用户讲话完毕后停止录音。

然后,您可以像在link中那样使用录制的音频,随时将其转换为文本。

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)
        }
    }
}