用語音寫代碼比鍵盤更快
這是 Tavis Rudd 在 2013 年 Python 大會上的演講,展示了如何使用語音進行編程。他在手部肌肉麻木后無法順利敲鍵盤,于是利用語音識別工具來寫代碼。一開始很慢,后來熟練后,速度比敲鍵盤還快。
提要
“兩年前我開發(fā)一個叫Emacs Pinkie的項目時重復(fù)性勞損(Repetitive Strain Injury, RSI)嚴(yán)重,結(jié)果我的手變得發(fā)麻,我不能再打字或者工作了。絕望之中,我嘗試用語言識別。起初我寫代碼慢得要命,但因為不能打字,我只好堅持下來。經(jīng)過 幾個月的詞匯調(diào)整,還有磕巴地用Python和Emacs Lisp編程,我做出了這個能讓我用語音編程的系統(tǒng),比我曾經(jīng)用手寫更快更有效率。
在一個快放了的實況演示里,我會用Python創(chuàng)建一個小系統(tǒng),并且加了點其他的語言作為額外贈送,然后不碰鍵盤將它部署。演示里的神會在預(yù)先安排 下露面。我希望能說服你,語音識別不再只是殘疾人的幫手,不再只是做平凡無奇的事情。現(xiàn)在它成為一種高效的工具,能造福所有程序員。”
第一個演示,用語音編寫 Emacs Lisp 代碼,從 9:00 開始。
如果你缺乏耐心,這里列下了視頻概要:
- 他使用微軟Windows下的 Dragon NaturallySpeaking 語言識別軟件。(他說他沒能夠讓Linux的 CMU Sphnix 工作起來。)(盡管他使用Mac,但顯然在用Virtual Box跑WIndows。)
- Dragon軟件是用Python開發(fā)的。他改了一下,用了Christo Butcher寫的Python Speech識別擴展庫DragonFly。見 https://pypi.python.org/pypi/dragonfly/0.6.5。所以他現(xiàn)在可以定義自己的語音命令。(輸入些什么,或者移動鼠標(biāo)到代碼的某個位置,或者鍵盤快捷鍵,切換應(yīng)用程序等等。)
- 他創(chuàng)建了許多簡短的特殊/唯一的元音表達式來做不同的事情。例如插入換行,切換Emacs緩沖區(qū),啟動終端等。所以當(dāng)他在語音編程時,你會聽到“twip, chirp, slap, derp / 踢,削,拉,打……”,很有意思。
- 他做了大概2千多種命令。
- 他說他系統(tǒng)做的所有事情都是在Vim或者Emacs里。(在他的演示中,用的好像都是Emacs,作為做其他操作的接口。頻繁使用了Emacs的各種特性,包括模板,自動完成,Emacs里的shell。)
- 他演示了用它來寫Emacs Lisp,Python程序,在Emacs,終端下工作。如此高效,比一般程序員用手在鍵盤上寫都快。
- 他花了3到6個月來習(xí)慣這個系統(tǒng)。
- 他的重復(fù)性勞損(Repetitive Strain Injury RSI)目前已經(jīng)完全康復(fù),但他說他仍然在用語音編程,大概占了40%到60%的時間。
- 他說他會在4個月內(nèi)發(fā)布代碼。關(guān)注他的twitter或GitHub。https://github.com/tavisrudd,https://twitter.com/tavisrudd
他推薦的一款麥克風(fēng)是 Audix OM-7 Microphone,比較貴,198美元。
我在2010年用過幾個月微軟的語音識別系統(tǒng)。微軟Windows 7自帶。對于正常的說話很好,但是不太可能用來編程(即裝即用)。在普通的Windows應(yīng)用程序上工作得很好,尤其是來自微軟的應(yīng)用例如Office,但是在Emacs上行不通。