声控鼠标的设计方案

发布时间:2012-08-7 阅读量:1693 来源: 发布人:

导言:电脑语音技术经过多年发展已经取得了巨大进步, 目前已经有一些产品和项目让人们有机会和计算机进行语音交互工作,该方案实现了一种基于语音识别技术的声控鼠标光标应用程序, 可以用语音控制鼠标光标移动到屏幕的任意位置, 能用来帮助伤残人士只用声音而不用鼠标和键盘就能操作电脑,并且分析了语音控制鼠标光标使用过程中的延时缺陷, 并做出了针对性的改进。

语音技术特别是语音识别技术的发展, 使人们可能实现用语音控制电脑, 这对于世界上众多不能方便使用传统的鼠标及键盘的伤残人士有重大的意义; 另外在一些场合不方便操作电脑但又必须使用的情况下同样很有意义, 比如驾驶的同时查询电子地图。目前要真正控制一台图形界面的电脑, 必须做到使用语音控制也能像使用键盘和鼠标那样输入数据以及控制光标。因此一种有效的语音控制光标程序, 也就是可以定位在屏幕的任意位置, 并且可以模拟单击、双击拖拽等各种鼠标动作的语音控制程序, 对于实现语音控制电脑将是一个很有意义的工具。

本文利用微软的Speech SDK 5.1 免费的语音识别引擎和模拟鼠标技术, 用Delphi7.0 实现了一个语音控制鼠标应用程序, 可以实现语音控制鼠标移动、停止、单击等动作达到控制屏幕光标的作用, 并对语音控制鼠标程序中的延迟问题进行了分析, 提出并实现了一种改进方法。

基于语音识别的光标控制类型

目前有两种语音控制鼠标的模式: 一种是目标导向光标控制和方向导向光标控制[n].对于前者, 用户需要用语音给出具体目标名称或者位置, 比如图标、菜单, 或者屏幕区域名称, 然后给出执行的命令如"单击"等, 这种方式对于单个软件还是有效的, 但是当目标增加的时候用户需要记忆很多目标的名称, 还可能出现同名称目标的情况, 因此工作中的错误率会增加。另一种方向导向光标控制又分为非连续控制和连续控制两种, 对于非连续的情况用户要同时说明方向和距离, 如命令"左8 厘米", 那么光标就向左移动8厘米; 而对于连续的情况用户先说明方向如"向左",光标就向左移动, 直到用户再说"停止", 光标才停止运动。

本文讨论的声控光标是属于方向导向中的连续控制, 这种鼠标控制和日常的使用习惯比较一致, 用户使用起来比较适应。

下一页:语音控制光标的实现
 

语音控制光标的实现


本文语音控制光标程序的语音控制是采用微软的Speech SDK 5.1 的语音识别引擎及其API 接口, 这是一个免费的开发包, 并且可以用它开发具有中文语音功能的软件。语音识别引擎通常可以分为两种工作方式, 一种就是命令控制(Command and Control) 方式, 这个方式下语音识别引擎可以识别简短的语音命令, 以便执行相应的程序; 另外一种是连续听写方式,这个模式下语音识别引擎要识别连续的语音, 这种功能实现起来比语音控制更复杂, 因为语音听写过程中需要对上下文以及相同相似发音的词语进行分析、作出判断, 而在命令控制语音方式中不需要作上下文分析。本文采用的是命令控制方式, 因为实现语音控制鼠标只需要对有限的几个简短的命令进行识别, 如"左"、"右"、"停"等。

语音控制鼠标程序的结构图
语音控制鼠标程序的结构图

该应用程序主要包括两个部分: 第一部分语音控制应用主程序部分, 主要调用语音识别引擎识别用户的语音命令。

这部分程序主要完成几件工作:

①导入辞书文法文件(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);

// 左键抬起

下图是一个理想情况下用本文程序实现语音控制鼠标的例子。光标初始位置在屏幕左下方, 目标矩形在屏幕右上区, 首先用户对麦克风发出"右"的命令, 光标就向右移动; 当光标到达目标下方的时候用户说"上"命令, 光标就改向上移动( 或者先说"停"命令, 光标停止) ; 当光标到达目标矩形, 用户说"停"命令, 光标停止, 最后用户说"单击", 程序模拟鼠标左键单击事件, 相当于目标矩形被单击。
 
用本文程序实现语音控制鼠标示例
用本文程序实现语音控制鼠标示例


下一页:语音控制鼠标的缺陷及改进方法
 
 
语音控制鼠标的缺陷

虽然几个简单的语音命令, 可以控制鼠标移动到屏幕的任何位置, 并可以根据语音命令模拟单击、双击等各种鼠标事件, 但是实际使用中还存在缺陷。

对于大的目标而言, 这种语音控制鼠标控制没有什么问题, 如果目标区域比较小, 将会增加使用者的难度, 比如当光标移动到矩形时喊"停", 光标会继续移动一小段才停, 这时光标可能已经越过了目标矩形。这种情况和语音识控制中存在的延时有关, 每次用户发出语音命令到命令被执行都有一个过程, 首先使用者说出语音命令是需要时间的, 而且语速快的人和语速慢的人说同样的命令花的时间不同; 另外语音识别引擎成功识别一个语音命令也需要一个时间。所以语音控制鼠标在控制过程中必然存在延时。因此从开始发出语音命令到动作被执行, 光标必然会有位置的误差: △S=V×△t ( △S 为位置误差, V 为鼠标移动速度, △t 为说话和识别造成的延时)。

Sear 等人曾经研究用一个虚拟鼠标机制来解决延时误差问题, 即在真实的鼠标移动前虚设一个鼠标, 当假鼠标到达目标时发出语音命令, 执行的时候真鼠标正好到达目标处。但是他们的试验结果并不理想。因为每个人说话的习惯和速度是不一样的, 而且不同的状态下的语速也不同, 因此延时△t 不是一定的, 所以每次的位置误差△S 也不尽相同, 而一种固定距离的先导虚拟鼠标并不能取得很好的效果。

改进方法

影响位置控制效果的因素和目标的大小、移动速度和延时有关。能够改变的是速度控制, 所以本文采取一种方案改进位置控制精度。改进后的语音控制鼠标每次的位置误差△S 明显减小, 在目标较小的情况下, 位置控制精度得到提高。

改进方法是在程序中增加对鼠标的速度控制: 在目标较小的情况下, 光标先以正常速度V1 移动, 到达目标附近时先进行减速控制, 用语音命令"慢"来控制鼠标减低移动速度到V2( 实际设计中V2=1/3 V1) ,到达目标后再用语音命令"停"停止鼠标移动, 下图反映了这个过程中光标速度的变化。这样在延时时间不变, 由于光标移动速度V 降低很多, 由△S=V×△t 知道位置误差△S 也减小很多。
 
速度可控制的语音控制光标移动速度变化示意图
速度可控制的语音控制光标移动速度变化示意图

 
 而在目标比较大的情况下, 因为位置控制精度足够, 可以不选择"慢"命令控制直接进行"停"控制。

总结

本文研究语音控制鼠标的应用程序, 实现了对鼠标基本的语音控制, 针对语音控制中因为延时而产生的位置控制误差做了分析和改进。本文研究的内容对于开发辅助不便使用鼠标及键盘的伤残人士使用计算机的交互工具有积极的意义。

试验表明用本程序控制鼠标移动、点击等可实现浏览网页、打开、关闭程序等电脑操作。但是由于控制鼠标过程中要多次发出语音命令, 同时要集中注意力观察光标的位置, 所以也存在用户容易疲劳的问题。后续将对改进语音控制鼠标使用舒适情况和提高控制效率等做进一步研究。
 
相关资讯
半导体产业升级战:三星电子新一代1c DRAM量产布局解析

在全球半导体产业加速迭代的背景下,三星电子日前披露了其第六代10纳米级DRAM(1c DRAM)的产能规划方案。根据产业研究机构TechInsights于2023年8月22日发布的行业简报,这家韩国科技巨头正在同步推进华城厂区和平泽P4基地的设备升级工作,预计将于2023年第四季度形成规模化量产能力。这项技术的突破不仅标志着存储芯片制程进入新纪元,更将直接影响下一代高带宽存储器(HBM4)的市场格局。

蓝牙信道探测技术落地:MOKO联手Nordic破解室内定位三大痛点

全球领先的物联网设备制造商MOKO SMART近期推出基于Nordic Semiconductor新一代nRF54L15 SoC的L03蓝牙6.0信标,标志着低功耗蓝牙(BLE)定位技术进入高精度、长续航的新阶段。该方案集成蓝牙信道探测(Channel Sounding)、多协议兼容性与超低功耗设计,覆盖室内外复杂场景,定位误差率较传统方案降低60%以上,同时续航能力突破10年,为智慧城市、工业4.0等场景提供基础设施支持。

财报季再现黑天鹅!ADI营收超预期为何股价暴跌5%?

半导体行业风向标企业亚德诺(ADI)最新财报引发市场深度博弈。尽管公司第三财季营收预期上修至27.5亿美元,显著超出市场共识,但受关税政策驱动的汽车电子产品需求透支风险显露,致使股价单日重挫5%。这一背离现象揭示了当前半导体产业面临的复杂生态:在供应链重构与政策扰动交织下,短期业绩爆发与长期可持续增长之间的矛盾日益凸显。

全球可穿戴腕带市场首季激增13%,生态服务成决胜关键

根据国际权威市场研究机构Canalys于5月23日发布的调研报告,2025年第一季度全球可穿戴腕带设备市场呈现显著增长态势,总出货量达到4660万台,较去年同期增长13%。这一数据表明,消费者对健康监测、运动管理及智能互联设备的需求持续升温,行业竞争格局亦同步加速重构。

RP2350 vs STM32H7:性能翻倍,成本减半的MCU革新之战

2025年5月23日,全球领先的半导体与电子元器件代理商贸泽电子(Mouser Electronics)宣布,正式开售Raspberry Pi新一代RP2350微控制器。作为RP2040的迭代升级产品,RP2350凭借双核异构架构(Arm Cortex-M33 + RISC-V)、硬件级安全防护及工业级性价比,重新定义了中高端嵌入式开发场景的技术边界。该芯片通过多架构动态切换、可编程I/O扩展及4MB片上存储等创新设计,解决了传统微控制器在实时响应能力、跨生态兼容性与安全成本矛盾上的核心痛点,为工业自动化、消费电子及边缘AI设备提供了更具竞争力的底层硬件方案。