Получение чисел в формате слова в SFSpeechRecognizer вместо чисел - PullRequest
0 голосов
/ 21 января 2020

Есть ли способ печатать числа в правильное написание вместо броска чисел во время записи голоса через SFSpeechRecognizer? Я пытался получить формат слова, реализуя код ниже:

if let resultString = result?.bestTranscription.formattedString {
    if let number = Double(resultString) {
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .spellOut

        let numberString = numberFormatter.string(from: NSNumber(value: number))
        let numberStringWithoutHyphen = numberString?.replacingOccurrences(of: "-", with: " ")

        print(numberStringWithoutHyphen)
    }
}

Это решение прекрасно работает, если пользователь говорит целые числа или даже десятичные числа, но в некоторых случаях это решение не работать на всех и делает это решение выглядит глупо. Например, если пользователь говорит «Пятьдесят пять целых ноль», распознаватель речи выбирает его как «55.0». Но средство форматирования чисел возвращает «Пятьдесят пять». В крайнем случае, если пользователь говорит «Раз, два, три, четыре», распознаватель речи выбирает его как «1234», а средство форматирования чисел возвращает «Одна тысяча двести тридцать четыре».

То, к чему я стремлюсь Если пользователь произносит любое число, распознаватель речи должен возвращать одно и то же слово за словом. Если пользователь говорит «Пятьдесят пять целых ноль», он должен вернуть «Пятьдесят пять целых ноль». Если пользователь говорит «Раз, два, три, четыре», он должен вернуть «Раз, два, три, четыре».

...