首页 > 解决方案 > 语音识别语音分析返回 Null (Swift iOS 13)

问题描述

我正在使用 iOS 13 的语音识别,但它没有返回正确的语速、平均暂停时间或语音分析。

口语已正确打印出来,但这是我打印出的段信息:

段:,substringRange={0, 2},timestamp=0,duration=0,confidence=0,substring=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)")
            }
        }
    }
}

标签: swiftspeech-recognitionios13

解决方案


最终的工作是将 SFSpeechRecognizer 语言环境从

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

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

推荐阅读