新聞中心

EEPW首頁 > 消費電子 > 設計應用 > 基于語音識別的聲控鼠標的設計方法

基于語音識別的聲控鼠標的設計方法

作者: 時間:2012-08-07 來源:網(wǎng)絡 收藏

 摘要: 實現(xiàn)了一種技術(shù)的光標應用程序, 可以用控制光標移動到屏幕的任意位置, 能用來幫助傷殘人士只用聲音而不用鍵盤就能操作電腦。分析了控制鼠標光標使用過程中的延時缺陷, 并做出了針對性的改進。

本文引用地址:http://m.butianyuan.cn/article/165091.htm

  1 概述

  電腦語音技術(shù)經(jīng)過多年發(fā)展已經(jīng)取得了巨大進步, 目前已經(jīng)有一些產(chǎn)品和項目讓人們有機會和計算機進行語音交互工作, 例如IBM公司的Viavoice 系列軟件以及微軟的新的Office 產(chǎn)品都有實用的語音功能, 可以進行語音聽寫錄入文字等工作, 還出現(xiàn)了一些語音技術(shù)的應用系統(tǒng)。

  語音技術(shù)特別是語音技術(shù)的發(fā)展, 使人們可能實現(xiàn)用語音控制電腦, 這對于世界上眾多不能方便使用傳統(tǒng)的鼠標及鍵盤的傷殘人士有重大的意義; 另外在一些場合不方便操作電腦但又必須使用的情況下同樣很有意義, 比如駕駛的同時查詢電子地圖。目前要真正控制一臺圖形界面的電腦, 必須做到使用語音控制也能像使用鍵盤和鼠標那樣輸入數(shù)據(jù)以及控制光標。因此一種有效的語音控制光標程序, 也就是可以定位在屏幕的任意位置, 并且可以模擬單擊、雙擊拖拽等各種鼠標動作的語音控制程序, 對于實現(xiàn)語音控制電腦將是一個很有意義的工具。

  本文利用微軟的Speech SDK 5.1 免費的語音引擎和模擬鼠標技術(shù), 用Delphi7.0 實現(xiàn)了一個語音控制鼠標應用程序, 可以實現(xiàn)語音控制鼠標移動、停止、單擊等動作達到控制屏幕光標的作用, 并對語音控制鼠標程序中的延遲問題進行了分析, 提出并實現(xiàn)了一種改進

  2 語音識別的光標控制類型

  目前有兩種語音控制鼠標的模式: 一種是目標導向光標控制和方向?qū)蚬鈽丝刂芠n].對于前者, 用戶需要用語音給出具體目標名稱或者位置, 比如圖標、菜單, 或者屏幕區(qū)域名稱, 然后給出執(zhí)行的命令如單擊等, 這種方式對于單個軟件還是有效的, 但是當目標增加的時候用戶需要記憶很多目標的名稱, 還可能出現(xiàn)同名稱目標的情況, 因此工作中的錯誤率會增加。另一種方向?qū)蚬鈽丝刂朴址譃榉沁B續(xù)控制和連續(xù)控制兩種, 對于非連續(xù)的情況用戶要同時說明方向和距離, 如命令左8 厘米, 那么光標就向左移動8厘米; 而對于連續(xù)的情況用戶先說明方向如向左,光標就向左移動, 直到用戶再說停止, 光標才停止運動。

  本文討論的光標是屬于方向?qū)蛑械倪B續(xù)控制, 這種鼠標控制和日常的使用習慣比較一致, 用戶使用起來比較適應。

  3 實現(xiàn)

  本文語音控制光標程序的語音控制是采用微軟的Speech SDK 5.1 的語音識別引擎及其API 接口, 這是一個免費的開發(fā)包, 并且可以用它開發(fā)具有中文語音功能的軟件。語音識別引擎通??梢苑譃閮煞N工作方式, 一種就是命令控制(Command and Control) 方式, 這個方式下語音識別引擎可以識別簡短的語音命令, 以便執(zhí)行相應的程序; 另外一種是連續(xù)聽寫方式,這個模式下語音識別引擎要識別連續(xù)的語音, 這種功能實現(xiàn)起來比語音控制更復雜, 因為語音聽寫過程中需要對上下文以及相同相似發(fā)音的詞語進行分析、作出判斷, 而在命令控制語音方式中不需要作上下文分析。本文采用的是命令控制方式, 因為實現(xiàn)語音控制鼠標只需要對有限的幾個簡短的命令進行識別, 如左、右、停等。圖1 是語音控制鼠標程序的結(jié)構(gòu)圖。

圖1 語音控制鼠標程序結(jié)構(gòu)

圖1 語音控制鼠標程序結(jié)構(gòu)

  該應用程序主要包括兩個部分: 第一部分語音控制應用主程序部分, 主要調(diào)用語音識別引擎識別用戶的語音命令。

  這部分程序主要完成幾件工作:

 ?、賹朕o書文法文件(XML 格式, 其中定義感興趣的語音命令) , 完成對語音識別引擎接口的初始化工作, 激活語音識別引擎;②接收語音識別引擎的識別結(jié)果, 根據(jù)識別結(jié)果調(diào)用相應的鼠標控制程序。

  下面的語法文件中定義了方向命令和鼠標事件命令的語法規(guī)則:

  GRAMMAR LANGID=804>

  DEFINE>

  ID NAME=RID_start VAL=1/>

  ID NAME=PID_colour VAL=2/>

  ID NAME=PID_colourvalue VAL=3/>

  /DEFINE>

  ! - - Rule definiTIons - - >

  RULE NAME=start ID=RID_start TOPLEVEL=ACTIVE>

  RULEREF NAME=colour PROPNAME=colourPROPID=PID_colour />

  /RULE>

  RULE NAME=colour >

  L PROPNAME=colourvalue PROPID=PID_

  colourvalue>

  P VAL=1>上/P>

  P VAL=2>下/P>

  P VAL=3>左/P>

  p VAL=4>右/p>

  p VAL=5>停止/p>

  P VAL=6>單擊/P>

  P VAL=7>雙擊/P>

  p VAL=8>關(guān)閉/p>

  /L>

  /RULE>

  /GRAMMAR>

 在程序運行的時候, 一旦有上述語法文件中定義的命令被成功識別, 則在程序的onRecgnition 響應函數(shù)中可以查詢出識別的返回值是1~8 中的某個值, 根據(jù)不同的返回值就可以調(diào)用鼠標控制程序進行鼠標的某個方向的移動或者點擊等事件的模擬控制。

  第二部分鼠標控制程序, 就是調(diào)用程序模擬控制鼠標移動或單擊等各種鼠標事件。這一部分主要是利用Windows API 函數(shù)模擬鼠標事件實現(xiàn)對鼠標光標的控制。


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉