3

我刚刚实现了 SFSpeechRecognizer,因为我希望它指示一些数字,但我遇到的问题是,如果我说“一”,则 result.bestTranscription.formattedString 是“一”,但如果我说“十”,则结果抛出“10”,我怎样才能设法获得由实际数字而不是交响乐“一”来表示的单个数字。

4

1 回答 1

3

您可以使用 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
于 2017-10-20T20:03:10.290 回答