Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx
- 文档编号:15772393
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:16
- 大小:125.61KB
Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx
《Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx》由会员分享,可在线阅读,更多相关《Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
#1BA78B"
HorizontalAlignment="
Left"
Margin="
240,41,0,39"
Stroke="
Black"
Width="
10"
RenderTransformOrigin="
0.5,0"
>
<
Rectangle.RenderTransform>
TransformGroup>
ScaleTransform/>
SkewTransform/>
RotateTransformAngle="
{BindingBeamAngle}"
/>
TranslateTransform/>
/TransformGroup>
/Rectangle.RenderTransform>
/Rectangle>
上图是程序的UI界面。
后台逻辑代码和之前的例子大部分都是相同的。
首先实例化一个KinectAudioSource对象,然后将主窗体的DataContext赋值给本身。
将BeamAngleMode设置为Adaptive,使得能够自动追踪说话者的声音。
我们需要编写KinectAudioSource对象的BeamChanged事件对应的处理方法。
当用户的说话时,位置发生变化时就会触发该事件。
我们需要创建一个名为BeamAngle的属性,使得矩形的RotateTransform可以绑定这个属性。
publicpartialclassMainWindow:
Window,INotifyPropertyChanged
{
publicMainWindow()
{
InitializeComponent();
this.DataContext=this;
this.Loaded+=delegate{ListenForBeamChanges();
};
}
privateKinectAudioSourceCreateAudioSource()
varsource=KinectSensor.KinectSensors[0].AudioSource;
source.NoiseSuppression=true;
source.AutomaticGainControlEnabled=true;
source.BeamAngleMode=BeamAngleMode.Adaptive;
returnsource;
privatevoidListenForBeamChanges()
KinectSensor.KinectSensors[0].Start();
varaudioSource=CreateAudioSource();
audioSource.BeamAngleChanged+=audioSource_BeamAngleChanged;
audioSource.Start();
publiceventPropertyChangedEventHandlerPropertyChanged;
privatevoidOnPropertyChanged(stringpropName)
if(PropertyChanged!
=null)
PropertyChanged(this,newPropertyChangedEventArgs(propName));
privatedouble_beamAngle;
publicdoubleBeamAngle
get{return_beamAngle;
set
_beamAngle=value;
OnPropertyChanged("
BeamAngle"
);
}
以上代码中,还需要对BeamChanged事件编写对应的处理方法。
每次当波束的方向发生改变时,就更改BeamAngle的属性。
SDK中使用弧度表示角度。
所以在事件处理方法中我们需要将弧度换成度。
为了能达到说话者移到左边,矩形条也能够向左边移动的效果,我们需要将角度乘以一个-1。
代码如下:
voidaudioSource_BeamAngleChanged(objectsender,BeamAngleChangedEventArgse)
BeamAngle=-1*e.Angle;
运行程序,然后在房间里不同地方走动,可以看到矩形条会根据你的位置左右摆动。
2.语音命令识别
在这一部分,我们将会结合KinectAudioSource和SpeechRecognitionEngine来演示语音命令识别的强大功能。
为了展示语音命令能够和骨骼追踪高效结合,我们会使用语音命令向窗体上绘制图形,并使用命令移动这些图形到光标的位置。
命令类似如下:
Createayellowcircle,there.
Createacyantriangle,there.
Putamagentasquare,there.
Createabluediamond,there.
Movethat...there.
Putthat...there.
Movethat...belowthat.
Movethat...westofthediamond.
Putalargegreencircle...there.
程序界面大致如下:
和之前的应用程序一样,首先创建一下项目的基本结构:
1.创建一个名为KinectPutThatThere的WPF项目。
3.将主窗体的名称改为“PutThatThere”
4.添加一个名为CrossHairs.xaml的用户自定义控件。
CrossHair用户控件简单的以十字光标形式显示当前用户右手的位置。
下面的代码显示了这个自定义控件的XAML文件。
注意到对象于容器有一定的偏移使得十字光标的中心能够处于Grid的零点。
GridHeight="
50"
0.5,0.5"
Grid.RenderTransform>
RotateTransform/>
TranslateTransformX="
-25"
Y="
/Grid.RenderTransform>
#FFF4F4F5"
22,0,20,0"
0,22,0,21"
/Grid>
在应用程序的主窗体中,将根节点从grid对象改为canvas对象。
Canvas对象使得将十字光标使用动画滑动到手的位置比较容易。
在主窗体上添加一个CrossHairs自定义控件。
在下面的代码中,我们可以看到将Canvas对象嵌套在了一个Viewbox控件中。
这是一个比较老的处理不同屏幕分辨率的技巧。
ViewBox控件会自动的将内容进行缩放以适应实际屏幕的大小。
设置MainWindows的背景色,并将Canvas的颜色设置为黑色。
然后在Canvas的底部添加两个标签。
一个标签用来显示SpeechRecognitionEngine将要处理的语音指令,另一个标签显示匹配正确的置信度。
CrossHair自定义控件绑定了HandTop和HandLeft属性。
两个标签分别绑定了HypothesizedText和Confidence属性。
Windowx:
Class="
KinectPutThatThere.MainWindow"
xmlns="
xmlns:
x="
local="
clr-namespace:
KinectPutThatThere"
Title="
PutThatThere"
Background="
Viewbox>
Canvasx:
Name="
MainStage"
Height="
1080"
1920"
VerticalAlignment="
Bottom"
local:
CrossHairsCanvas.Top="
{BindingHandTop}"
Canvas.Left="
{BindingHandLeft}"
/>
LabelForeground="
White"
Content="
{BindingHypothesizedText}"
55"
FontSize="
32"
965"
115"
Canvas.Top="
1025"
Green"
{BindingConfidence}"
114"
0"
/Canvas>
/Viewbox>
/Window>
在后台逻辑代码中,让MainWindows对象实现INofityPropertyChanged事件并添加OnPropertyChanged帮助方法。
我们将创建4个属性用来为前台UI界面进行绑定。
Window,INotifyPr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Kinect for Windows SDK开发入门十三语音识别 SDK 开发 入门 十三 语音 识别