听别人说《防火墙xxxx》很好看,看了第一集的前10分钟就看不下去了. 为啥中国拍的科幻片就这么土呢,土的一看就知道是忽悠小学生的.
话说回来,利用声音控制电脑这倒是个不错的主意.大名鼎鼎的linux里已经有现成的应用软件,当然目前很不成熟,该软件是2007年google编程之夏的一个作品. 目前已经收录在gnome里,名叫 gnome-voice-control ,当前版本号为0.3
在声音识别方面利用的是Sphinx 目前在ubuntu 8.04里可顺利安装 gnome-voice-control 0.2 下载 http://live.gnome.org/GnomeVoiceControl
至于0.3 需要自己编译安装 sphinxbase 和 pocketsphinx
我安装的是0.3
这个软件是以 applet 的形式存在,要使用的时候,到任务栏里添加这个applet.
当然,如果你是用deb安装好的,那是有bug的.会提示添加错误. 我们修正他 打开 /usr/lib/bonobo/servers/GNOME_VoiceControlApplet_Factory.server 把location改成如下内容 <oaf_info>
<oaf_server iid="OAFIID:GNOME_VoiceControlApplet_Factory" type="exe" location="/usr/local/libexec/voice_control_applet">
这样这个可执行程序就找到了. (为什么 gnome 里的 type 也用 exe 呢?)
界面如图
目前该程序是把现有的支持的语音指令写死在程序里的. 当前支持的具体操作如下: 1 - RUN TERMINAL : open gnome-terminal 2 - RUN BROWSER : open epiphany 3 - RUN MAIL : open evolution 4 - RUN TEXT EDITOR : open gedit 5 - CLOSE WINDOW 6 - MAXIMIZE WINDOW 7 - MINIMIZE WINDOW 8 - NEXT WINDOW 也就是你大喊一声“run mail" linux就会自动打开 evolution 程序,我自己试验了下,基本上喊5次,有一次成功.
另外还有针对具体软件的操作, 1 - FILE .. OPEN 2 - HELP .. ABOUT 3 - SAVE 4 - PRINT 5 - UNDO 6 - PASTE 7 - FIND 8 - REPLACE 9 - EDIT .. SELECT ALL
为确认他的确听到了我的指令,而只是找不到相应的命令匹配,我们可以修改相关源码(开源的好处阿) 1、修改 voice-control.c 的 on_sink_message函数 他是通过查询message来获取结果.message 是sphinx的处理结果. 我们加一个其他情况 } else // add by sanool { do_action(ACTION_NOTHING); return; }
2、到action.c的do_action函数,增加 case ACTION_NOTHING: g_spawn_command_line_async ("espeak -v zh 不", NULL); break;
注意: 到action.h里增加一个 ACTION_NOTHING 还有就是我安装了 espeak 程序,这里是直接调用,让电脑发出“不”的中文读音.
目前之无法顺利实现交互,主要是sphinx的问题.期待改善. 另外我打算增加用户自定义命令功能. 希望各位推荐个好点的开源的语音识别引擎....
|