用語音寫代碼比鍵盤更快
這是 Tavis Rudd 在 2013 年 Python 大會上的演講,展示了如何使用語音進行編程。他在手部肌肉麻木后無法順利敲鍵盤,于是利用語音識別工具來寫代碼。一開始很慢,后來熟練后,速度比敲鍵盤還快。
提要
“兩年前我開發一個叫Emacs Pinkie的項目時重復性勞損(Repetitive Strain Injury, RSI)嚴重,結果我的手變得發麻,我不能再打字或者工作了。絕望之中,我嘗試用語言識別。起初我寫代碼慢得要命,但因為不能打字,我只好堅持下來。經過 幾個月的詞匯調整,還有磕巴地用Python和Emacs Lisp編程,我做出了這個能讓我用語音編程的系統,比我曾經用手寫更快更有效率。
在一個快放了的實況演示里,我會用Python創建一個小系統,并且加了點其他的語言作為額外贈送,然后不碰鍵盤將它部署。演示里的神會在預先安排 下露面。我希望能說服你,語音識別不再只是殘疾人的幫手,不再只是做平凡無奇的事情?,F在它成為一種高效的工具,能造福所有程序員。”
第一個演示,用語音編寫 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上行不通。





























