首页 > 解决方案 > 语音转文本 SWIFT

问题描述

我有以下代码:

func createStringFromAudio () {
    SFSpeechRecognizer.requestAuthorization {_ in
        DispatchQueue.main.async {
            switch SFSpeechRecognizer.authorizationStatus() {
            case .authorized :
                let audioURL = Bundle.main.url(forResource: "ConversionTest", withExtension: "mp3")!
                let recognizer = SFSpeechRecognizer()
                let request = SFSpeechURLRecognitionRequest(url: audioURL)
                recognizer?.recognitionTask(with: request) { result, error in
                    guard error == nil else { print("Error"); return}
                    guard let result = result else {print("No result"); return}
                    print(result.bestTranscription.formattedString)
                }
                break
            default :
                break
            }
        }
    }
}

这是我的问题: 1:我怎么知道文件何时完成?目前,它会不断更新打印结果,但在转录 100% 完成时不会通知我。我如何知道转录何时完成并且可以保存字符串以供解析?

2:似乎在完成之前就被切断了。有时间限制吗?字数限制?

标签: swiftmachine-learningspeech-to-textspeech

解决方案


您可以保存任务以检查其状态,甚至可以取消它。实际上,转录过程不是由我们控制的,当系统认为它完成时,它就完成了。

如果您确实需要精确控制,请使用委托:

func recognitionTask(with request: SFSpeechRecognitionRequest, delegate: SFSpeechRecognitionTaskDelegate) -> SFSpeechRecognitionTask

这可能会在转录过程中提供更多信息,至少它会在完成时让您知道。


推荐阅读