【发布时间】:2017-12-21 02:18:56
【问题描述】:
我正在使用 iOS 语音 API。
我正在尝试对语音到文本框架的输出进行一些数学运算。
有几个问题。首先,用户可以说一些愚蠢的东西,所以我们必须检查它是单词还是数学表达式。所以我认为我们可以使用类似的东西:
if string.contains("×") || string.contains("+") || string.contains("-")
但它看起来很糟糕,如果用户说例如"+2"..
然后我想,也许我们可以检查输入是否为 Int,所以我想到了类似的东西:
guard let stringResult = result?.bestTranscription.formattedString else {
return
}
let convertedNumber = Int(stringResult)
if let stringResult = convertedNumber {
print(stringResult)
print("Everything works Fine")
} else {
print("nope..")
}
它总是失败..
我尝试了几种更奇怪的方法来解决这个错误处理,但我没有任何其他想法。
输入,作为startRecording函数的一部分:
if result != nil {
guard let stringResult = result?.bestTranscription.formattedString else {
return
}
self.inputLabel.text = stringResult
然后计算看起来完全错误的函数:
private func calculate(string: String) {
if string.contains("×") || string.contains("+") || string.contains("-") {
let stringToCalculate = string.replacingOccurrences(of: "×", with: "*")
guard let finalScore = NSExpression(format: stringToCalculate).expressionValue(with: nil, context: nil) else { return }
outputLabel.text = String(describing: finalScore)
} else {
outputLabel.text = "Are you sure it's mathematical evaluation ?"
}
}
良好的输入示例:7 + 7 x 2 -> 21
Bad:“海盗在喝朗姆酒!”或 "Pirates"-> outputLabel.text = "你确定这是数学评估吗?"
所以问题是我应该如何处理错误以了解输入是数学评估并对其进行数学运算,而不是单词/单词?
【问题讨论】:
标签: ios swift speech-recognition