我一直在使用Kinect和语音识别,但是我注意到无法从我的AudioLevel
对象更改SpeechRecognitionEngine
成员。
我成功地识别了命令,因此我知道kinect可以将声音呈现给我的应用程序。我尝试订阅AudioLevelUpdated
事件并直接读取AudioLevel
,但是该事件不会触发,并且AudioLevel
始终为0。
我需要激活AudioLevel
进行任何特殊操作吗?
最佳答案
我记得过去也遇到过同样的问题。在寻找解决方案的过程中,我发现它可能有多种原因,但我还没有真正能够(没有时间)为我的案例指出问题所在。我仍然会列出一些我发现的原因。
AudioStatus.dwAudioLevel
,由于某种原因它可能返回0。 在MSDN(由IanPeters)上提出的一种变通办法,对我来说是好的,方法是从“可识别的音频”中提取样本音频,使用
RecognizedAudio.WriteToWaveStream()
,然后取音频绝对值的平均值。这将给您一个估计,可能足以满足您的情况。IanPeters的原始帖子位于msdn(SpeechRecognitionEngine.AudioLevel)