// 初始化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); printf_s("init_kinect succeeded \n"); } SafeRelease(pAudioBeamList); SafeRelease(pAudioSource); return hr; }
HRESULT KinectSpeechRecognizer::OpenAudioStreams() { IAudioSource* audioSource = NULL; IAudioBeamList* audioBeamList = NULL; HRESULT hr = speechReader->GetKinectReader()->GetKinectSensor()->get_AudioSource(&audioSource); if(SUCCEEDED(hr)) { hr = audioSource->get_AudioBeams(&audioBeamList); } if(SUCCEEDED(hr)) { hr = audioBeamList->OpenAudioBeam(0, &audioBeam); } if(SUCCEEDED(hr)) { hr = audioBeam->OpenInputStream(&audioStream); audioStream16Bit = new KinectAudioStream(audioStream); } //These are no longer needed if(audioSource) { audioSource->Release(); audioSource = NULL; } if(audioBeamList) { audioBeamList->Release(); audioBeamList = NULL; } return hr; }