【发布时间】: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 上的默认麦克风,并且可以正常工作。
【问题讨论】: