Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx

上传人:b****5 文档编号:15772393 上传时间:2022-11-16 格式:DOCX 页数:16 大小:125.61KB
下载 相关 举报
Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx_第1页
第1页 / 共16页
Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx_第2页
第2页 / 共16页
Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx_第3页
第3页 / 共16页
Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx_第4页
第4页 / 共16页
Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx

《Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx》由会员分享,可在线阅读,更多相关《Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

Kinect for Windows SDK开发入门十三语音识别 下文档格式.docx

#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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1