【问题标题】:Windows Speech Recognition Hello World not workingWindows 语音识别 Hello World 不工作
【发布时间】:2017-07-12 01:02:51
【问题描述】:

我正在尝试让 Windows::Media::SpeechRecognition 在 Windows10 上运行,但我的 Hello World 应用程序无法正常运行。

这是我所做的:

  • 我在 VS2017 中新建了一个 UWP Blank App

  • OnLaunched()方法中,我调用我的Init()方法来初始化语音识别:

    void App::Init()
    {
        speechRecognizer = ref new Windows::Media::SpeechRecognition::SpeechRecognizer(Windows::Media::SpeechRecognition::SpeechRecognizer::SystemSpeechLanguage);
    
        Platform::Collections::Vector<String^>^ speech_command_list = ref new Platform::Collections::Vector<String^>();
        speech_command_list->Append(StringReference(L"pause"));
        speech_command_list->Append(StringReference(L"play"));
        speech_command_list->Append(StringReference(L"download"));
        speech_command_list->Append(StringReference(L"test"));
    
        SpeechRecognitionListConstraint^ speech_constraint = ref new SpeechRecognitionListConstraint(speech_command_list);
    
        speechRecognizer->Constraints->Append(speech_constraint);
    
        create_task(speechRecognizer->CompileConstraintsAsync()).then([this](SpeechRecognitionCompilationResult^ compilationResult)
        {
            if (compilationResult->Status == SpeechRecognitionResultStatus::Success)
            {
    
                speechRecognizer->ContinuousRecognitionSession->ResultGenerated += ref new TypedEventHandler<SpeechContinuousRecognitionSession^, SpeechContinuousRecognitionResultGeneratedEventArgs^>(this, &App::OnSpeechRecognized);
                speechRecognizer->HypothesisGenerated += ref new TypedEventHandler<Windows::Media::SpeechRecognition::SpeechRecognizer^, SpeechRecognitionHypothesisGeneratedEventArgs^>(this, &App::OnHypothesisGenerated);
                speechRecognizer->StateChanged += ref new TypedEventHandler<Windows::Media::SpeechRecognition::SpeechRecognizer^, SpeechRecognizerStateChangedEventArgs^>(this, &App::OnStateChanged);
                speechRecognizer->RecognitionQualityDegrading += ref new TypedEventHandler<Windows::Media::SpeechRecognition::SpeechRecognizer^, SpeechRecognitionQualityDegradingEventArgs^>(this, &App::OnQualityIssue);
    
                TimeSpan endSilenceTime;
                endSilenceTime.Duration = 12000000L;
                speechRecognizer->Timeouts->EndSilenceTimeout = endSilenceTime; // (1.2 seconds in nanoseconds)
    
                speechRecognizer->ContinuousRecognitionSession->StartAsync();
            }
            else
            {
                // Handle errors here.
            }
        });
    }
    
  • 代码编译启动,语音约束编译成功,我在回调OnStateChanged中中断一次,新状态值为Idle

就是这样。对着麦克风讲话时,我不再收到任何回叫。

作为记录,我的麦克风已正确插入,它是 Windows 上的默认麦克风,并且可以正常工作。

【问题讨论】:

    标签: speech-recognition c++-cx


    【解决方案1】:

    我发现我的应用程序有问题。如果有人有同样的问题,我会在这里发布答案。

    事实证明,这种类型的 UWP 应用程序嵌入了一个名为 Package.appxmanifest 的文件,其中包含应用程序的一些设置。

    此清单文件有一个“功能”部分,我必须在该部分打开“互联网(客户端)”和“麦克风”功能。

    重新编译后,一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多