4

我想使用iOS Speech API来识别数学表达式。它适用于诸如two plus four times three- 将其读取为2+4*3,但是当我以 1 开始表达式时,它总是将其读取为“一”。当“一”在表达式的中间时,它按预期工作。

我发现当我将SFSpeechAudioBufferRecognitionRequest属性设置taskHint.search显示实时结果时,它首先将 1 正确识别为“1”,但最后将其更改为“One”

有没有办法将其配置为仅识别数字?或者只是强制将“一”读为“1”?或者修复它的唯一方法是自己格式化结果字符串?

4

1 回答 1

2

我有同样的问题,但看起来没有办法配置它。我为我的代码编写了这个扩展,我正在检查每个段。

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

}
于 2018-12-04T18:04:49.287 回答