用语音写代码比键盘更快
英文原文:Using Voice to Code Faster than Keyboard 译文链接
这是 Tavis Rudd 在 2013 年 Python 大会上的演讲,展示了如何使用语音进行编程。他在手部肌肉麻木后无法顺利敲键盘,于是利用语音识别工具来写代码。一开始很慢,后来熟练后,速度比敲键盘还快。
提要
“两年前我开发一个叫 Emacs Pinkie 的项目时重复性劳损(Repetitive Strain Injury, RSI)严重,结果我的手变得发麻,我不能再打字或者工作了。绝望之中,我尝试用语言识别。起初我写代码慢得要命,但因为不能打字,我只好坚持下来。经过几个月的词汇调整,还有磕巴地用 Python 和 Emacs Lisp 编程,我做出了这个能让我用语音编程的系统,比我曾经用手写更快更有效率。
在一个快放了的实况演示里,我会用 Python 创建一个小系统,并且加了点其他的语言作为额外赠送,然后不碰键盘将它部署。演示里的神会在预先安排下露面。我希望能说服你,语音识别不再只是残疾人的帮手,不再只是做平凡无奇的事情。现在它成为一种高效的工具,能造福所有程序员。”
Tavis Rudd 的工作台
第一个演示,用语音编写 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 个月内发布代码。关注他的 推ter 或 GitHub。https://github.com/tavisrudd,https://推ter.com/tavisrudd
他推荐的一款麦克风是 Audix OM-7 Microphone,比较贵,198 美元。
我在 2010 年用过几个月微软的语音识别系统。微软 Windows 7 自带。对于正常的说话很好,但是不太可能用来编程(即装即用)。在普通的 Windows 应用程序上工作得很好,尤其是来自微软的应用例如 Office,但是在 Emacs 上行不通。
另外一个有趣的语音技术,见《英译汉的实时机器语音翻译》。