语音识别语音分析返回Null(Swift iOS 13)

时间:2020-02-12 12:31:33

标签: swift speech-recognition ios13

我使用的是iOS 13的语音识别,但没有返回正确的讲话率,平均暂停时间或语音分析。

正确打印了口语单词,但这是我打印出的段信息:

segment:,substringRange = {0,2}, 时间戳= 0,持续时间= 0,置信度= 0,子字符串=因此, 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 个答案:

答案 0 :(得分:1)

最终的工作是从

更改SFSpeechRecognizer的语言环境。
var speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "en_US"))!

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