用語音寫代碼比鍵盤更快
英文原文:Using Voice to Code Faster than Keyboard 譯文鏈接
這是 Tavis Rudd 在 2013 年 Python 大會上的演講,展示了如何使用語音進行編程。他在手部肌肉麻木后無法順利敲鍵盤,于是利用語音識別工具來寫代碼。一開始很慢,后來熟練后,速度比敲鍵盤還快。
提要
“兩年前我開發一個叫 Emacs Pinkie 的項目時重復性勞損(Repetitive Strain Injury, RSI)嚴重,結果我的手變得發麻,我不能再打字或者工作了。絕望之中,我嘗試用語言識別。起初我寫代碼慢得要命,但因為不能打字,我只好堅持下來。經過幾個月的詞匯調整,還有磕巴地用 Python 和 Emacs Lisp 編程,我做出了這個能讓我用語音編程的系統,比我曾經用手寫更快更有效率。
在一個快放了的實況演示里,我會用 Python 創建一個小系統,并且加了點其他的語言作為額外贈送,然后不碰鍵盤將它部署。演示里的神會在預先安排下露面。我希望能說服你,語音識別不再只是殘疾人的幫手,不再只是做平凡無奇的事情。現在它成為一種高效的工具,能造福所有程序員。”
Tavis Rudd 的工作臺
</p>
第一個演示,用語音編寫 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 </ul>
他推薦的一款麥克風是 Audix OM-7 Microphone,比較貴,198 美元。
我在 2010 年用過幾個月微軟的語音識別系統。微軟 Windows 7 自帶。對于正常的說話很好,但是不太可能用來編程(即裝即用)。在普通的 Windows 應用程序上工作得很好,尤其是來自微軟的應用例如 Office,但是在 Emacs 上行不通。
另外一個有趣的語音技術,見《英譯漢的實時機器語音翻譯》。