无法将语音 SDK 用于 swift 中的 return LUIS 意图

Can't get Speech SDK to return LUIS intents in swift

从基本的 helloworld example 开始,它可以正确识别语音,但是我想恢复意图,因此修改 ViewController.swift 如下:

    func recognizeFromMic() {
        var speechConfig: SPXSpeechConfiguration?

        do {
            try speechConfig = SPXSpeechConfiguration(subscription: sub, region: region)
        } catch {
            print("error \(error) happened")
            speechConfig = nil
        }

        speechConfig?.speechRecognitionLanguage = "en-US"
        let audioConfig = SPXAudioConfiguration()

        let languageUnderstandingModel = SPXLanguageUnderstandingModel(subscription: luisSub, withAppId: luisAppId, andRegion: luisRegion)

        let reco = try! SPXIntentRecognizer(speechConfiguration: speechConfig!, audioConfiguration: audioConfig)
        reco.addAllIntents(from: languageUnderstandingModel!)

        reco.addRecognizingEventHandler() {reco, evt in
            print("intermediate recognition result: \(evt.result?.text ?? "(no result)")")
            self.logResultReason(reason: (evt.result?.reason)!);

            self.updateLabel(text: evt.result?.text, color: .gray)
        }

        updateLabel(text: "Listening ...", color: .gray)
        print("Listening...")

        let result = try! reco.recognizeOnce()
        print("recognition result: \(result.text ?? "(no result)")")
        self.logResultReason(reason: result.reason);

        updateLabel(text: result.text, color: .black)
    }

    func logResultReason(reason: SPXResultReason) {
        switch reason {
        case .canceled:
            print("cancelled")
            break
        case .noMatch:
            print("no Match")
            break
        case .recognizedIntent:
            print("Intent")
            break
        case .recognizingIntent:
            print("Recognizing Intent")
            break
        case .recognizingSpeech:
            print("Recognizing Speech")
            break
        case .recognizedSpeech:
            print("Speech")
            break
        default:
            print("Other")
        }
    }

输出为

Token: 
Listening...
2019-12-16 20:43:57.974675+1300 helloworld[51677:4869822] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x6000024d32c0> F8BB1C28-BAE8-11D6-9C31-00039315CD46
2019-12-16 20:43:58.156465+1300 helloworld[51677:4869886]  PropertyID=1667788144 is NULL
intermediate recognition result: how
Recognizing Speech
intermediate recognition result: hello
Recognizing Speech
intermediate recognition result: hello world
Recognizing Speech
recognition result: 
cancelled

在输出 "recognition result" 消息之前有长时间的停顿(30+ 秒)。查看 LUIS,我可以看到没有任何话语被发送到端点。 LUIS 订阅、appId 我已广泛用于 C# 和 JS 的机器人,因此有理由相信这些是正确的(出于显而易见的原因,我没有包括在这里)。

希望我错过了一些简单的东西 - 非常感谢任何帮助

解决方案原来与设置新的付费订阅并将其作为资源分配给 LUIS 模型有关。