我想使用 iOS Speech API 来识别数学表达式。它适用于像two plus four times three
这样的东西 - 将其读作2+4*3
,但当我用1开始表达时,它总是将其读作“一”。当“One”处于表达式的中间时,它按预期工作。
我发现当我在显示实时结果时将SFSpeechAudioBufferRecognitionRequest
属性taskHint
设置为.search
时,它首先将1正确识别为“1”,但最后将其更改为“1” “
有没有办法将其配置为仅识别数字? 或者只是强制将“One”读作“1”? 或者解决它的唯一方法是自己格式化结果字符串?
答案 0 :(得分:1)
我也有同样的问题,但似乎无法配置它。 我为代码编写了此扩展程序,正在对此进行检查。
extension String {
var numericValue: NSNumber? {
//init number formater
let numberFormater = NumberFormatter()
//check if string is numeric
numberFormater.numberStyle = .decimal
guard let number = numberFormater.number(from: self.lowercased()) else {
//check if string is spelled number
numberFormater.numberStyle = .spellOut
//change language to spanish
//numberFormater.locale = Locale(identifier: "es")
return numberFormater.number(from: self.lowercased())
}
// return converted numeric value
return number
}
}
例如
{
let numString = "1.5"
let number = numString.numericValue //1.5
// or
let numString = "Seven"
let number = numString.numericValue //7
}