我刚刚实现了SFSpeechRecognizer,因为我想要它来指示一些数字,但我遇到的问题是如果我说“one”结果.bestTranscription.formattedString是“one”,但如果我说“十” “结果抛出”10“,我怎样才能设法用实际数字表示单个数字,而不是交响乐”one“。
答案 0 :(得分:1)
您可以将NumberFormatter设置numberStyle
用于.spellOut
,并使用其number(from: String)
将字符串转换为数字。如果您需要该数字的字符串,只需从中初始化一个新字符串。确保您只想检测英语单词(不区分区域设置)以将格式化程序区域设置设置为“en_US_POSIX”
let string = "one"
let numberFormatter = NumberFormatter()
numberFormatter.locale = Locale(identifier: "en_US_POSIX") // if you dont set locale it will use current locale so it wont detect one if the language it is not english at the devices locale
numberFormatter.numberStyle = .spellOut
numberFormatter.number(from: string) // 1
测试其他语言/区域设置
let string = "um"
let numberFormatter = NumberFormatter()
numberFormatter.locale = Locale(identifier: "pt_BR")
numberFormatter.numberStyle = .spellOut
numberFormatter.number(from: string) // 1