Kinect for Windows SDK v2.0 开发笔记 (八)语音识别(下)

本文档详细介绍了如何使用Kinect for Windows SDK v2.0进行语音识别开发,包括初始化Kinect、设置语音识别参数、处理识别事件及评估置信度。示例代码展示了如何响应识别的短语并解析识别结果。此外,还提及了SDK中的面部识别和可视化手势功能,但由于缺乏C++官方文档和示例,这部分功能的使用存在障碍。
摘要由CSDN通过智能技术生成

(转载请注明出处)

使用SDK: Kinect for Windows SDK v2.0 public preview

紧接上节,这次要怎么初始化Kinect呢,很简单:

// 初始化Kinect
HRESULT ThisApp::init_kinect(){
    IAudioSource* pAudioSource = nullptr;
    IAudioBeamList* pAudioBeamList = nullptr;
    // 查找当前默认Kinect
    HRESULT hr = ::GetDefaultKinectSensor(&m_pKinect);
    // 绅士地打开Kinect
    if (SUCCEEDED(hr)){
        hr = m_pKinect->Open();
    }
    // 获取音频源
    if (SUCCEEDED(hr)){
        hr = m_pKinect->get_AudioSource(&pAudioSource);
    }
    // 获取音频链表
    if (SUCCEEDED(hr)){
        hr = pAudioSource->get_AudioBeams(&pAudioBeamList);
    }
    // 获取音频
    if (SUCCEEDED(hr)){
        hr = pAudioBeamList->OpenAudioBeam(0, &m_pAudioBeam);
    }
    // 获取输入音频流
    if (SUCCEEDED(hr)){
        IStream* pStream = nullptr;
        hr = m_pAudioBeam->OpenInputStream(&pStream);
        // 利用傀儡生成包装对象
        m_p16BitPCMAudioStream = new KinectAudioStreamWrapper(pStream);
        SafeRelease(pStream);
    }
    SafeRelease(pAudioBeamList);
    SafeRelease(pAudioSource);
    return hr;
}
剩下就是初始化语音识别引擎,因为非常定式化,建议大家直接复制即可:

// 初始化语音识别
HRESULT ThisApp::init_speech_recognizer(){
    HRESULT hr = S_OK;
    // 创建语音输入流
    if (SUCCEEDED(hr)){
        hr = CoCreateInstance(CLSID_SpStream, nullptr, CLSCTX_INPROC_SERVER, __uuidof(ISpStream), (void**)&m_pSpeechStream);;
    }
    // 与我们的Kinect语音输入相连接
    if (SUCCEEDED(hr)){
        WAVEFORMATEX wft = {
            WAVE_FORMAT_PCM, // PCM编码
            1, // 单声道
            16000,  // 采样率为16KHz
            32000, // 每分钟数据流 = 采样率 * 对齐
            2, // 对齐 : 单声道 * 样本深度 = 2byte
            16, // 样本深度 16BIT
            0 // 额外数据
        };
        // 设置状态
        hr = m_pSpeechStream->SetBaseStream(m_p16BitPCMAudioStream, SPDFID_WaveFormatEx, &wft);
    }
    // 创建语音识别对象
    if (SUCCEEDED(hr)){
        ISpObjectToken *pEngineToken = nullptr;
        // 创建语言识别器
        hr = CoCreateInstance(CLSID_SpInprocRecognizer, nullptr, CLSCTX_INPROC_SERVER, __uuidof(ISpRecognizer), (void**)&m_pSpeechRecognizer);
        if (SUCCEEDED(hr)) {
            // 连接我们创建的语音输入流对象
            m_pSpeechRecognizer->SetInput(m_pSpeechStream, TRUE);
            // 创建待识别语言 这里选择大陆汉语(zh-cn) 
            // 目前没有Kinect的汉语语音识别包 有的话可以设置"language=804;Kinect=Ture"
            hr = SpFindBestToken(SPCAT_RECOGNIZERS, L"Language=804", nullptr, &pEngineToken);
            if (SUCCEEDED(hr)) {
                // 设置待识别语言
                m_pSpeechRecognizer->SetRecognizer(pEngineToken);
                // 创建语音识别上下文
                hr = m_pSpeechRecognizer->CreateRecoContext(&m_pSpeechContext);
                
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Kinect for Windows SDK 2.是微软推出的一款软件开发工具包,用于开发基于Kinect传感器的应用程序。它提供了丰富的API和工具,可以帮助开发者快速构建出具有深度感知、语音识别、姿态跟踪等功能的应用程序。同时,它还支持多种编程语言和开发环境,包括C++、C#、Visual Studio等,方便开发者进行开发和调试。 ### 回答2: Kinect for Windows SDK 2.0是微软公司推出的一款面向Windows平台的Kinect开发工具包。该工具包提供了一系列的工具和API,使开发者能够轻松地利用Kinect设备在Windows应用程序中实现身体姿态跟踪、语音识别、深度感应等功能。下面就详细介绍一下Kinect for Windows SDK 2.0的内容和特点。 首先,Kinect for Windows SDK 2.0支持多种操作系统,包括Windows 7、Windows 8、Windows 8.1和Windows 10,支持32位和64位的应用程序运行。它还支持多种开发语言,包括C++、C#和Visual Basic等,若使用这些语言编写代码也可以充分发挥Kinect设备的功能,帮助开发者实现其想要的效果。 其次,Kinect for Windows SDK 2.0提供了一些著名的工具和API。比如,它提供了基于深度感应器的底层API,可以实现目标检测、骨骼跟踪、手势识别等功能。这些底层API是非常有用的,因为开发者可以根据需要进行自定义设置,更好地进行应用程序开发。 此外,Kinect for Windows SDK 2.0还提供了许多高级功能,包括声学模型、语音指定、身体处于位置追踪等,这些功能是很有用的,因为它们可以让开发者的应用程序变得更加智能、全面。例如,开发者可使用该设备的语音识别功能来触发应用程序中的事件,还可以使用身体处于位置追踪功能来实现用户体验的增强,使游戏、培训等应用程序变得更加吸引人。 最后,Kinect for Windows SDK 2.0优秀的交互能力也是其非常突出的特点。它的 API 可以让开发者在应用程序中实现更加真实、独特的交互体验和增强现实效果。同时,在使用过程中,Kinect设备还可以轻松地与现有的应用程序进行整合。 总而言之,Kinect for Windows SDK 2.0是一款功能非常强大、易于使用的开发工具包,非常适合开发者用于创建基于Kinect设备的应用程序,帮助开发者实现更加智能、全面的应用程序,让 Kinect 生态系统更加繁荣。 ### 回答3: Kinect for Windows SDK2.0是微软公司发布的一款软件开发工具包,旨在帮助开发者利用Kinect传感器开发Windows应用程序。该工具包支持C++、C#、VB和JavaScript等多种编程语言,拥有丰富的API和示例代码,可以实现人体骨骼追踪、手势识别、声音识别、运动捕捉等多种功能。 首先,该工具包提供了一整套API,包含了Kinect的各种功能,如颜色和深度图像获取、骨骼跟踪、音频采集、麦克风阵列控制等。这些API可以让开发者轻松地构建运用Kinect的应用程序,提高开发效率。 其次,该工具包提供了许多示例代码和教程,可供开发者学习借鉴。这些示例代码覆盖了Kinect的各个功能,可以帮助开发者深入了解Kinect的工作原理和应用场景,从而更好地利用其开发应用程序。 此外,由于Kinect for Windows SDK2.0是一款Windows平台的软件开发工具包,所以它与Windows操作系统的兼容性较好,在开发时不需要考虑不同平台之间的兼容性问题,可以更加专注于应用程序本身的开发。 总之,Kinect for Windows SDK2.0是一款功能强大、易于使用的软件开发工具包,旨在帮助开发者充分发挥Kinect的功能和优势,构建出更具创意性和实用性的应用程序,具有广泛的应用前景。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值