Распознавание речи Voice Analytics возвращает значение NULL (Swift iOS 13) - PullRequest
1 голос
/ 12 февраля 2020

Я использую распознавание речи iOS 13, и оно не возвращает правильную скорость разговора, среднюю продолжительность паузы или речевую аналитику.

Произносимые слова правильно распечатываются, однако это то, что я получаю вывод информации о сегменте:

сегмент:, substringRange = {0, 2}, отметка времени = 0, продолжительность = 0, достоверность = 0, подстрока = So, alternativeSubstrings = (), phoneSequence =, ipaPhoneSequence =, voiceAnalytics = (null)

Спасибо за вашу помощь!

func startSpeechRecognition() throws{

    if let recognitionTask = recognitionTask {
        recognitionTask.cancel()
        self.recognitionTask = nil
    }

    try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
    try audioSession.setMode(AVAudioSessionModeMeasurement)
    try audioSession.setActive(true, with: .notifyOthersOnDeactivation)

    recognitionRequest = SFSpeechAudioBufferRecognitionRequest()
    let inputNode = audioEngine.inputNode

    if speechRecognizer.supportsOnDeviceRecognition {
        print("support on device recognition")
        recognitionRequest?.requiresOnDeviceRecognition = true
    }

    guard let recognitionRequest = recognitionRequest else {
        fatalError("Unable to created a SFSpeechAudioBufferRecognitionRequest object")
    }

    recognitionTask = speechRecognizer.recognitionTask(with: recognitionRequest) { result, error in

        if let result = result {
            let bestString = result.bestTranscription.formattedString
            self.spokenWords = bestString
            if self.spokenWords != nil{
                self.numberOfWordsRecorded = self.spokenWords!.components(separatedBy: .whitespacesAndNewlines).count
                print(bestString)
            }

            for segment in result.bestTranscription.segments {
                print("segment: \(segment)")
            }
        }
    }
}

1 Ответ

1 голос
/ 12 февраля 2020

В итоге работало изменение языкового стандарта SFSpeechRecognizer с

var speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "en_US"))!

на

var speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))!
...