您的位置 首页 开关

根据语音辨认技能的声控鼠标光标规划

1 概述电脑语音技术经过多年发展已经取得了巨大进步, 目前已经有一些产品和项目让人们有机会和计算机进行语音交互工作, 例如IBM公司的Viavoice 系列软件以及微软的新的Office 产品都有实

1 概述

电脑语音技能经过多年开展现已获得了巨大进步, 现在现已有一些产品和项目让人们有时机和计算机进行语音交互作业, 例如IBM公司的Viavoice 系列软件以及微软的新的Office 产品都有有用的语音功用, 能够进行语音听写录入文字等作业, 还呈现了一些依据语音技能的运用体系。

语音技能特别是语音辨认技能的开展, 使人们或许完结用语音操控电脑, 这关于世界上许多不能方便运用传统的鼠标及键盘的伤残人士有严重的含义; 别的在一些场合不方便操作电脑但又有必要运用的状况下相同很有含义, 比方驾驭的一起查询电子地图。现在要实在操控一台图形界面的电脑, 有必要做到运用语音操控也能像运用键盘和鼠标那样输入数据以及操控光标。因而一种有用的语音操控光标程序, 也便是能够定位在屏幕的恣意方位, 并且能够模仿单击、双击拖拽等各种鼠标动作的语音操控程序, 关于完结语音操控电脑将是一个很有含义的东西。

本文运用微软的Speech SDK 5.1 免费的语音辨认引擎和模仿鼠标技能, 用Delphi7.0 完结了一个语音操控鼠标运用程序, 能够完结语音操控鼠标移动、中止、单击等动作抵达操控屏幕光标的作用, 并对语音操控鼠标程序中的推迟问题进行了剖析, 提出并完结了一种改善办法。

2 依据语音辨认的光标操控类型

现在有两种语音操控鼠标的形式: 一种是方针导向光标操控和方向导向光标操控[n].关于前者, 用户需求用语音给出详细方针称号或许方位, 比方图标、菜单, 或许屏幕区域称号, 然后给出履行的指令如单击等, 这种办法关于单个软件仍是有用的, 可是当方针添加的时分用户需求回忆许多方针的称号, 还或许呈现同称号方针的状况, 因而作业中的错误率会添加。另一种方向导向光标操控又分为非接连操控和接连操控两种, 关于非接连的状况用户要一起阐明方向和间隔, 如指令左8 厘米, 那么光标就向左移动8厘米; 而关于接连的状况用户先阐明方向如向左,光标就向左移动, 直到用户再说中止, 光标才中止运动。

本文评论的声控光标是归于方向导向中的接连操控, 这种鼠标操控和日常的运用习气比较共同, 用户运用起来比较习气。

3 完结

本文语音操控光标程序的语音操控是选用微软的Speech SDK 5.1 的语音辨认引擎及其API 接口, 这是一个免费的开发包, 并且能够用它开发具有中文语音功用的软件。语音辨认引擎一般能够分为两种作业办法, 一种便是指令操控(Command and Control) 办法, 这个办法下语音辨认引擎能够辨认简略的语音指令, 以便履行相应的程序; 别的一种是接连听写办法,这个形式下语音辨认引擎要辨认接连的语音, 这种功用完结起来比语音操控更杂乱, 因为语音听写进程中需求对上下文以及相同类似发音的词语进行剖析、作出判别, 而在指令操控语音办法中不需求作上下文剖析。本文选用的是指令操控办法, 因为完结语音操控鼠标只需求对有限的几个简略的指令进行辨认, 如左、右、停等。图1 是语音操控鼠标程序的结构图。

图1 语音操控鼠标程序结构

该运用程序首要包含两个部分: 榜首部分语音操控运用主程序部分, 首要调用语音辨认引擎辨认用户的语音指令。

这部分程序首要完结几件作业:

①导入辞书文法文件(XML 格局, 其间界说感兴趣的语音指令) , 完结对语音辨认引擎接口的初始化作业, 激活语音辨认引擎;②接纳语音辨认引擎的辨认成果, 依据辨认成果调用相应的鼠标操控程序。

下面的语法文件中界说了方向指令和鼠标事情指令的语法规矩:

中止

单击

双击

封闭

在程序运转的时分, 一旦有上述语法文件中界说的指令被成功辨认, 则在程序的onRecgnition 响应函数中能够查询出辨认的返回值是1~8 中的某个值, 依据不同的返回值就能够调用鼠标操控程序进行鼠标的某个方向的移动或许点击等事情的模仿操控。

第二部分鼠标操控程序, 便是调用程序模仿操控鼠标移动或单击等各种鼠标事情。这一部分首要是运用Windows API 函数模仿鼠标事情完结对鼠标光标的操控。

模仿鼠标移动能够经过循环调用Windows API函数SetcursorPos(x1,y1)来完结, 在循环中操控x1 和y1 的改动就能够完结任何方向的鼠标移动。在程序中模仿鼠标移动需求用到多线程操控, 不然鼠标移动进程中无法随时中止或许让他转向。以下是移动线程中的移动操控代码:

for I := 1 to 500 do

begin

if bstop=1 then break;

//遇到中止指令时中止光标移动

case Dr of

//依据参数Dr 决议光标运转方向

1: x1:=x1+n1; //右移

2: x1:=x1- n1; //左移

3: y1:=y1+n1; //下移

4: y1:=y1- n1; //上移

end;

windows.SetcursorPos(x1,y1);

end;

鼠标的另一类操控程序是模仿鼠标单击双击等鼠标事情, 首要是在程序中运用mouse_event 函数对鼠标事情进行模仿。程序中以下代码模仿了鼠标左键单击:

windows.mouse_event (MOUSEEVENTF_LEFTDOWN,0,0,0,0);

// 左键按下

windows.mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

// 左键抬起

图2 是一个抱负状况下用本文程序完结语音操控鼠标的比方。光标初始方位在屏幕左下方, 方针矩形在屏幕右上区, 首要用户对麦克风宣布右的指令, 光标就向右移动; 当光标抵达方针下方的时分用户说上指令, 光标就改向上移动( 或许先说停指令, 光标中止) ; 当光标抵达方针矩形, 用户说停指令, 光标中止, 最终用户说单击, 程序模仿鼠标左键单击事情, 相当于方针矩形被单击。

图2 一个语音操控鼠标作业的比方

4 语音操控鼠标的缺点

尽管几个简略的语音指令, 能够操控鼠标移动到屏幕的任何方位, 并能够依据语音指令模仿单击、双击等各种鼠标事情, 可是实践运用中还存在缺点。

关于大的方针而言, 这种语音操控鼠标操控没有什么问题, 假如方针区域比较小, 将会添加运用者的难度, 比方当光标移动到矩形时喊停, 光标会持续移动一小段才停, 这时光标或许现已越过了方针矩形。这种状况和语音识操控中存在的延时有关, 每次用户宣布语音指令到指令被履行都有一个进程, 首要运用者说出语音指令是需求时刻的, 并且语速快的人和语速慢的人说相同的指令花的时刻不同; 别的语音辨认引擎成功辨认一个语音指令也需求一个时刻。所以语音操控鼠标在操控进程中必定存在延时。因而从开端宣布语音指令到动作被履行, 光标必定会有方位的差错: △S=V×△t ( △S 为方位差错, V 为鼠标移动速度, △t 为说话和辨认形成的延时)。

Sear 等人从前研讨用一个虚拟鼠标机制来处理延时差错问题, 即在实在的鼠标移动前虚设一个鼠标, 当假鼠标抵达方针时宣布语音指令, 履行的时分真鼠标正好抵达方针处。可是他们的实验成果并不抱负。因为每个人说话的习气和速度是不一样的, 并且不同的状态下的语速也不同, 因而延时△t 不是必定的, 所以每次的方位差错△S 也不尽相同, 而一种固定间隔的先导虚拟鼠标并不能获得很好的作用。

5 一种改善办法

影响方位操控作用的要素和方针的巨细、移动速度和延时有关。能够改动的是速度操控, 所以本文采纳一种计划改善方位操控精度。改善后的语音操控鼠标每次的方位差错△S 显着减小, 在方针较小的状况下, 方位操控精度得到进步。

改善办法是在程序中添加对鼠标的速度操控: 在方针较小的状况下, 光标先以正常速度V1 移动, 抵达方针邻近时先进行减速操控, 用语音指令慢来操控鼠标减低移动速度到V2( 实践规划中V2=1/3 V1) ,抵达方针后再用语音指令停中止鼠标移动, 图3 反映了这个进程中光标速度的改动。这样在延时时刻不变, 因为光标移动速度V 下降许多, 由△S=V×△t 知道方位差错△S 也减小许多。

图3 速度可操控的语音操控光标移动速度改动示意图

而在方针比较大的状况下, 因为方位操控精度满足, 能够不挑选慢指令操控直接进行停操控。

结语

本文研讨语音操控鼠标的运用程序, 完结了对鼠标根本的语音操控, 针对语音操控中因为延时而发生的方位操控差错做了剖析和改善。本文研讨的内容关于开发辅佐不方便运用鼠标及键盘的伤残人士运用计算机的交互东西有活跃的含义。

实验标明用本程序操控鼠标移动、点击等可完结阅读网页、翻开、封闭程序等电脑操作。可是因为操控鼠标进程中要屡次宣布语音指令, 一起要会集注意力调查光标的方位, 所以也存在用户简单疲惫的问题。

后续将对改善语音操控鼠标运用舒适状况和进步操控功率等做进一步研讨。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/282460.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部