【问题标题】:Using the Windows.Media.Speechrecognition namespace in a Qt C++ application在 Qt C++ 应用程序中使用 Windows.Media.Speechrecognition 命名空间
【发布时间】:2016-06-27 12:42:57
【问题描述】:

我正在尝试使用 Windows.Media.SpeechRecognition 命名空间开发语音到文本输入,如下所述:https://msdn.microsoft.com/en-us/library/windows.media.speechrecognition.aspx

现在,我在 Qt 中工作,显然没有 Windows 命名空间之类的东西:

using namespace Windows::Media::SpeechRecognition;

int main(int argc, char *argv[])
{
    SpeechRecognizer speechRecognizer = new SpeechRecognizer();

    //...

    return 0;
}

结果

C2653:“Windows”没有类或命名空间

好的,所以我想我可能需要在我的个人资料中包含一些内容或添加一个库,但我找不到任何关于获取它的内容和位置的信息。

如果出现问题:我正在使用它,因为我需要语音输入来接受除英语以外的其他语言。

【问题讨论】:

    标签: c++ qt speech-recognition speech-to-text windows-api-code-pack


    【解决方案1】:

    您需要包含Windows.Media.SpeechRecognition.h 标头。在桌面应用程序中,命名空间实际上是ABI::Windows::Media::SpeechRecognition。您还需要使用 WRL 来调用它。您可以像这样创建SpeechRecognizer 对象:

    #include <roapi.h>
    #include <Windows.Media.SpeechRecognition.h>
    #include <wrl.h>
    
    using namespace ABI::Windows::Media::SpeechRecognition;
    using namespace Microsoft::WRL;
    using namespace Microsoft::WRL::Wrappers;
    
    int main()
    {
        HRESULT hr = RoInitialize(RO_INIT_MULTITHREADED);
        if (FAILED(hr))
            return hr;
    
        ComPtr<IInspectable> instance;
        ComPtr<ISpeechRecognizer> recognizer;
        hr = RoActivateInstance(HStringReference(L"Windows.Media.SpeechRecognition.SpeechRecognizer").Get(), &instance);
        if (FAILED(hr))
            return hr;
    
        hr = instance.As(&recognizer);
        if (FAILED(hr))
             return hr;
    
        // do stuff with recognizer
    
        RoUninitialize();
    }
    

    您还需要与RuntimeObject.lib 链接才能找到RoInitializeRoActivateInstance 等函数。

    【讨论】:

      猜你喜欢
      • 2013-04-04
      • 2015-03-06
      • 1970-01-01
      • 2011-09-24
      • 2011-04-06
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 2011-05-05
      相关资源
      最近更新 更多