swift - 语音转文本 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:似乎在完成之前就被切断了。有时间限制吗?字数限制?
解决方案
您可以保存任务以检查其状态,甚至可以取消它。实际上,转录过程不是由我们控制的,当系统认为它完成时,它就完成了。
如果您确实需要精确控制,请使用委托:
func recognitionTask(with request: SFSpeechRecognitionRequest, delegate: SFSpeechRecognitionTaskDelegate) -> SFSpeechRecognitionTask
这可能会在转录过程中提供更多信息,至少它会在完成时让您知道。
推荐阅读
- amazon-web-services - 命名 AWS EC2 安全组
- python-2.7 - 在python2.7中导入jwcrypto时出错
- c# - 使用 ClosedXML.Excel C# 更改列样式
- python - 命令引发异常:AttributeError: 'File' object has no attribute 'to_dict' for Discord bot
- excel - 无法通过 VBA 创建数据透视表,但我可以从同一数据源手动创建数据透视表
- python - pycharm Markdown 需要在 pre 标签中添加一个类
- unity3d - 当场景中有另一个 navMesh 时,是否可以在对象上制作 navMesh?
- ipfs - 如何向 ipfs 端点发出请求?
- rest - 相同端点但具有不同 API 版本的清洁方式
- python - 过滤2个字典json Python