Я использую SpeechKit, чтобы вернуть речь к тексту в список. Например, составление списка покупок. Но я продолжаю получать несколько значений. Я не знаю, в чем проблема. Я знаю, что функция вызывается только один раз, но она возвращает несколько значений. Ниже приведен рисунок того, как он выглядит, и код. Пожалуйста, дайте мне несколько советов.
func prepareAudioEngine() {
let node = audioEngine.inputNode
let recordingFormat = node.outputFormat(forBus: 0)
node.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer, _) in
self.request.append(buffer)
}
audioEngine.prepare()
do {
try audioEngine.start()
} catch {
return print(error)
}
guard let myRecogizer = speechRecognizer else { return }
if !myRecogizer.isAvailable {
return
}
recordandRecognizeSpeech()
}
func recordandRecognizeSpeech() {
recognitionTask = speechRecognizer?.recognitionTask(with: request, resultHandler: { (result, error) in
if let result = result {
let stringArray = result.bestTranscription.formattedString
let size = stringArray.reversed().firstIndex(of: " ") ?? stringArray.count
let startWord = stringArray.index(stringArray.endIndex, offsetBy: -size)
let last = stringArray[startWord...]
self.detectedTextLabel.text = String(last).capitalized
} else if let error = error {
print("There was an error",error)
}
self.ingredients.append(Ingredient(name: self.detectedTextLabel.text ?? "Default", imageName: "?"))
let indexPath = IndexPath(item: self.ingredients.count - 1, section: 0)
self.tableView.insertRows(at: [indexPath], with: .automatic)
})
}