iOS语音转换为数字格式的文本

目前我正在使用默认的iOS语音转换文本而不添加任何代码。 当用户说“五”时,它显示为“五”或“五”。 但是,我需要将其转换为’5’。 有什么我可以用SFSpeechRecognizer或任何其他方式来实现这一目标吗?

这可以帮助您入门,但它无法处理包含数字和非数字的混合字符串。 理想情况下,您需要处理每个单词,但是这会对组合数字(三十四个)产生潜在影响。

let fiveString = "five" let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .spellOut print(numberFormatter.number(from: fiveString)?.stringValue) // 5 let combinedString = "five dogs" print(numberFormatter.number(from: combinedString)?.stringValue) // nil let cString = "five hundred" print(numberFormatter.number(from: cString)?.stringValue) // 500 let dString = "five hundred and thirty-seven" print(numberFormatter.number(from: dString)?.stringValue) // 537 

您可以尝试构建一个简单的字符串扩展,如下所示:

 extension String { var byWords: [String] { var byWords:[String] = [] enumerateSubstrings(in: startIndex.. String { let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .spellOut let formattedString = self.byWords.map { return numberFormatter.number(from: $0)?.stringValue ?? $0 } return formattedString.joined(separator: " ") } } 

这是一个未经测试的(未运行/性能未检查)示例