我的手指被我操到快廢掉了 :-(
趕快研究一下語音下指令。 觀念上是可行的。
需要先安裝這幾個套件:
apt install pocketsphinx pocketsphinx-en-us xdotool
試車: pocketsphinx_continuous -inmic yes
它會印出一堆訊息, 最後出現 「INFO: continuous.c(275): Ready....」
就可以開始對麥克風唸一句 (大約十幾個字以下的) 英文。 順利的話,
它又會印一堆訊息, 最後印出你剛剛唸的英文。
因為預設的語言目錄是英文, 也就是說上面那句等同於:
pocketsphinx_continuous -inmic yes
-hmm /usr/share/pocketsphinx/model/en-us/en-us
不知道是我的發音太不標準, 還是它空耳太嚴重,
竟把 「read a book during lunch」 聽成 「we will do a live show」 orz。
如果初始化訊息印完後, 不管說什麼它都沒反應, 請先 測試 linux 的麥克風設定。
還好我們的目標不是完整的英文聽寫, 只是簡短的語音指令。 根據 wiki 的說明, 請建一個文字檔 bash.txt 長得像這樣:
list long /1e-6/ move /1e-5/ copy /1e-6/ c d /1e-6/ public /1e-6/
然後這樣執行: pocketsphinx_continuous -inmic yes -kws bash.txt
-logfn /dev/null
加了 -kws 選項,
就變成了只認少數關鍵詞的模式;
加後 -logfn /dev/null , 囉嗦的訊息就消失了。
唸唸看這幾個詞, 看電腦認不認得出來。
再來到
這裡 下載我的小程式 voicmd.py (前面的底線只是為了叫 gist 把它排到前面)
和設定檔 bash.txt 。 我的程式要讀的設定檔後面多了一欄要餵給 xdotool 的鍵,
不符合 sphinx 的格式, 所以 voicmd.py 會臨時動態在
/var/run/user/xxxx/ 底下產生真正餵給 sphinx 的另一個文字檔。
先在終端機的一個分頁執行 python3 voicmd.py -f bash.txt
。
然後切到另一個分頁。
假設你目前在家目錄, 而且底下有個 public_html/ 子目錄,
那麼開始一個字一個字唸 「cd public tab enter」,
就看到終端機印出指令、 (因為仿佛按了 tab 鍵而)
完成 completion、 走進去 public_html/ 子目錄 (我自己很常做的動做)。
你也可以參考
xdotool 按鍵名稱表 來修改你的設定檔。
有救了! 我的指頭有救了! 不過後來發現更完整的東東: caster, 請點首頁的 Videos 底下幾個連結觀賞一下語音操作實況。 目前遇到的問題 以後再來研究。 暑假快結束了, 我還有好多正事還沒做...
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。