这是 Tavis Rudd 在 2013 年 Python 大会上的演讲,展示了如何使用语音进行编程。他在手部肌肉麻木后无法顺利敲键盘,于是利用语音识别工具来写代码。一开始很慢,后来熟练后,速度比敲键盘还快。
提要
“两年前我开发一个叫Emacs Pinkie的项目时重复性劳损(Repetitive Strain Injury, RSI)严重,结果我的手变得发麻,我不能再打字或者工作了。绝望之中,我尝试用语言识别。起初我写代码慢得要命,但因为不能打字,我只好坚持下来。经过几个月的词汇调整,还有磕巴地用Python和Emacs Lisp编程,我做出了这个能让我用语音编程的系统,比我曾经用手写更快更有效率。
在一个快放了的实况演示里,我会用Python创建一个小系统,并且加了点其他的语言作为额外赠送,然后不碰键盘将它部署。演示里的神会在预先安排下露面。我希望能说服你,语音识别不再只是残疾人的帮手,不再只是做平凡无奇的事情。现在它成为一种高效的工具,能造福所有程序员。”
Tavis Rudd 的工作台(伯乐在线配图)
[youku id=”XNTk2MTAyMjQ0″]
第一个演示,用语音编写 Emacs Lisp 代码,从 9:00 开始。
如果你缺乏耐心,这里列下了视频概要:
- 他使用微软Windows下的 Dragon NaturallySpeaking 语言识别软件。(他说他没能够让Linux的 CMU Sphnix 工作起来。)(尽管他使用Mac,但显然在用Virtual Box跑WIndows。)
- Dragon软件是用Python开发的。他改了一下,用了Christo Butcher写的Python Speech识别扩展库DragonFly。见 https://pypi.python.org/pypi/dragonfly/0.6.5。所以他现在可以定义自己的语音命令。(输入些什么,或者移动鼠标到代码的某个位置,或者键盘快捷键,切换应用程序等等。)
- 他创建了许多简短的特殊/唯一的元音表达式来做不同的事情。例如插入换行,切换Emacs缓冲区,启动终端等。所以当他在语音编程时,你会听到“twip, chirp, slap, derp / 踢,削,拉,打……”,很有意思。
- 他做了大概2千多种命令。
- 他说他系统做的所有事情都是在Vim或者Emacs里。(在他的演示中,用的好像都是Emacs,作为做其他操作的接口。频繁使用了Emacs的各种特性,包括模板,自动完成,Emacs里的shell。)
- 他演示了用它来写Emacs Lisp,Python程序,在Emacs,终端下工作。如此高效,比一般程序员用手在键盘上写都快。
- 他花了3到6个月来习惯这个系统。
- 他的重复性劳损(Repetitive Strain Injury RSI)目前已经完全康复,但他说他仍然在用语音编程,大概占了40%到60%的时间。
- 他说他会在4个月内发布代码。关注他的twitter或github。https://github.com/tavisrudd,https://twitter.com/tavisrudd
他推荐的一款麦克风是 Audix OM-7 Microphone,比较贵,198美元。
我在2010年用过几个月微软的语音识别系统。微软Windows 7自带。对于正常的说话很好,但是不太可能用来编程(即装即用)。在普通的Windows应用程序上工作得很好,尤其是来自微软的应用例如Office,但是在Emacs上行不通。
另外一个有趣的语音技术,见《英译汉的实时机器语音翻译》。