[BUAA軟工]第二次團隊作業
Part 1 項目說明
1. 簡介
項目名稱:語音coding助手(暫定)
說明: 實現一個android app, 通過語音輸入來寫python代碼,和android 上的 shell 交互。
2.應用場景
手機端寫代碼是一件非常麻煩的事情,即便有外置鍵盤,也不便於攜帶。
1️⃣ 當你走在路上,忽然想到一個很好的idea,希望能夠很快把他實現出來,但用手機輸入太慢而且不方便,用語音輸入就很酷,不是嗎?
2️⃣ 在自己家里寫代碼,可以寫的很快,而且很舒服,讀出include, 自動輸入include
3️⃣ 對於手部有殘疾但夢想成為程序員的人,語音coding助手就是最好的醫療手段。
為什么單純使用語音來寫代碼呢?因為通用的語音識別是存在比較大的二義性問題的。比如,你什么意思?意思意思?意思意思什么意思?沒有意思。
3. 技術說明
語音輸入
:使用科大訊飛api,團隊使用過科大訊飛的sdk,中英文可以混合翻譯,就語音翻譯而言,科大訊飛確實是業界標桿之一。
shell
: 項目目的在於語音輸入指令或者代碼到shell或者vim中,我們選取得是android上開源的強大終端termux,【鏈接】, 這個shell 包含vim, apt-get, 可以安裝python, 甚至是gcc, g++, 安裝完openssh,還可以連接遠程服務器,可以認為時以一個運行在android上的小linux系統,我們的開發將基於這個項目。
流程:調用語音識別api ➡️ 得到輸入的String ➡️ String 轉換成對應的動作 ➡️ 執行 action
4.項目划分
4-1前端
界面設計優化, 一到兩人
4-2 后端
后端邏輯開發, 兩到三人
part 1:語音->指定語言 自然語言轉為String
part 2 :指定語言-> 執行操作 String ->Action
4-3 測試
測試功能, 一到兩人
4-4 PM
需求安排,開發分工,進度核對,push和鼓勵組員,技術支持
4.難點
-
調用語音識別的api其實算不上太大的難點,SDK和參考文檔都很完善,而且中英文混合可以消除一些歧義,比如把vim 的 "i" (啟動編輯的input的縮寫)換成“輸入”, 就不會和字母'i', 混合
-
需要設計比較多的語音命令或者說模式(string->action,借用模式識別的詞), 才能讓項目足夠好用,輸入足夠快,而這些匹配的模式其實有一定的學習成本,所以設計選取的命令和命令的數量都需要比較好的把控。
-
action如何實現,
比如action為往vim編輯光標處輸如字符串"hello world"
比如action為換行,跳躍指定的行
比如action為run這個腳本,並且推送到github遠程倉庫
尤其第三點其實需要對應android研究比較深,需要將termux默認的鍵盤輸入,轉變到使用語音輸入后做出希望完成的動作,而最核心的是如何不用鍵盤在制定的光標處輸入字符,這需要我們研究一下termux的源碼實現,然后對其進行更改。
5.案例
語音寫code的idea並非沒有人想到過,http://blog.jobbole.com/45781/ , 這就是個例子,只不過這個人在window上進行實踐,他手部肌肉麻木無法順利敲鍵盤,是實現了一個系統,支持大約2000多種語音指令,http://v.youku.com/v_show/id_XNTk2MTAyMjQ0.html 視頻10分鍾多演示功能, 也可參見知乎提問如何優雅地用語音輸入寫程序?
還有一個反面案例,錘子出品的TNT工作站,他們想做的東西太多了,想要通用的語音輸入,並且在比較嘈雜的環境中,效果很差,才會有“安靜點!吵到我用TNT”的玩笑了。
6. 用戶數目\ 用戶評價估計
校內體驗的話,用戶數目估計能夠達到100+, 畢竟還是很酷的一個項目,演示效果好
如果推廣再商業話或者公益化,用戶有望持續增長破萬。
用戶評價估計,termux本身就是口碑極佳的項目(github 3.5k star), 至少我們團隊對於做好用戶體驗非常有信心。
7.預期目標
實現一個語音編寫python代碼的demo, 選取python作為目標語言是因為受眾廣,而且格式簡單,沒有很多分號,或者很麻煩的語法。做成app,能在手機端簡單演示。
alpha: 5條核心指令確立,語音正確輸入,執行正確的操作
beta: 20條-30條基本指令確立,界面優化,功能擴充,用戶體驗優化
gamma: 100條指令, 支持用戶自定義行為,功能封裝, 完善優化,充分測試。
Part 2 NABCD
2-1 N (need)
需求:解決語音書寫代碼的需求
剛性需求: 對於鍵盤輸入不方便的編程人員,屬於剛性需求,中國的大概有8300萬人,其中肢體類的占30%-40%,2017年,854.7萬殘疾兒童及持證殘疾人得到基本康復服務,其中肢體殘疾人484.6萬。
輔助性需求: 對於手打代碼累了的人員,可以輔助輸入,減少負擔。
這個需求在腦機接口普及后很可能會消失。
2-2 A (Approach 做法)
基本的招數:調用過科大訊飛的api,語言:java, c++
獨特的招數: 沒啥獨特的,就是酷。
技術可行性:技術上需要比較了解android底層交互,需要一定研究。
法律法規可行性:遵循中華人民共和國憲法。
2.3 B (Benefit 好處)
- 那你這個產品/服務會給客戶/用戶帶來什么具體好處呢?
讓用戶輕松碼代碼,解放雙手,更可以在android端快速實現idea原型,快速修改代碼。
- 如果用戶已經有一個解決方案 (例如用戶已經在用 QQ 聊天), 那你的產品具體有哪些好處, 能讓用戶離開現有產品, 使用你的產品來聊天呢?
目前並沒有調研到有同類的應用。可以類比的是正常的使用鍵盤輸入筆記本電腦或者台式機,或者使用藍牙鍵盤輸入手機端。但並沒有真正解放雙手,對於殘疾人士而言,增加了一條成為程序員的出路。
- 另外這還有一個 Benefit/Cost (成本) 的問題。
這個項目是有“學習成本”的,需要學習一些語音“指令”,對於計算機從業人員而言,其實學習成本不大,需要我們在設計這些“指令”的時候比較用心。而對於殘疾人士,這些學習成本也是比較的,就像盲人學習盲文一樣。
2-4 C (Competitors 競爭)
競爭對手也沒有閑着, 這個市場有多大, 目前有多少競爭者在瓜分, 你了解么? 競爭者是單獨的,還是存在一個行業鏈,各個階段的競爭者都一樣么? 你如果不是最先進入某個市場的產品, 你還能贏么? 我們的新想法可能要和已有的產品競爭,說服用戶放棄一個已經使用了一段時間的產品,來用我們的產品,是有不少困難。 我們還要想到, 還有一個隱藏着的競爭對手是 “不消費” -- 很多用戶根本就不用這個領域的任何產品, 你怎么能讓他們完成從 0 到 1 的轉變? 如果你成為他們的第一個產品,那你就是 First Mover, 有很多優勢。
市場大小:市場其實不大,可以作為鍵盤輸入的補充,在大多數情形不算必須品,但是有價值的。
行業鏈:項目完善后,可以集成到不同硬件上,電腦端也可以添加語音寫代碼的功能。
目前我們要實現的是一個demo,真正做到產品階段,可以先做成一個插件,一個后台服務,沒必要以此作為核心賣點。或者可以實現一個android端的coding IDE,像VS Code 那樣的產品,去用語音輸入支持更多類型的語言。
2-4 D (Delivery 交付, Data 數據)
怎樣把你的創新產品交到用戶的手中?
例1, 你想到了一個好主意, 建一個比 hao123 更好的導航頁面! 我們姑且認為NABC 都沒問題, 那如何把這么好, 這么簡單的產品交到 (Deliver) 用戶手中呢? 用戶怎么能知道你的產品?你如何利用互聯網(或者其他途徑)把這一福音傳遍你的目標用戶? 這一方面在早期的軟件開發者的角度來看,應該是 “市場部門” 該做的事。 但是,現在網絡已經成為絕大多數軟件產品一一部分,對社交網絡的應用不會發生在產品開發完畢之后,而是在早期就會成為產品規划和功能的一部分。
例2, 你想到了一個手機的應用, NABC 都不錯, 那如何把產品交到千萬個用戶手中呢? 你怎么去找到你的目標用戶?光考在中國幾十個App 市場去投放么,這是遠遠不夠的!
D: Data 你有什么數據來證明新的功能帶來的好處? 團隊做了用戶調查么? 有什么量化的指標, 例如 NPS(凈推薦值)?
交付可以通過上線應用商店,進行推廣,當然我們可以現在同學圈子中流行起來,但說實話,一個demo想要真正傳播開來其實挺難的,最好的方式應該是先通過學校,或者其他方式,和一些醫院建立聯系,定制醫療版本,提高軟件質量,然后,有可能的話可以賣給一些手機廠商,集成到他們的系統中去。或者還可以通過“知乎”進行推薦,在所有相關問題下進行回答,推薦我們的工具,在或者可以通過抖音進行推廣,讓我們的應用轉換成為一個網紅app.
2-5 用戶
班上同學肯定是有超過10個願意配合的同學,他們是:
喬x,庹XX, 胡XX, 湯XX, 樊XX,齊XX, 劉X銘,王科X, 萬XX,趙XX...
- 把這些要點都組合成為一段話 -- 當你要向別人兜售你的項目的時候, 你通常只有很短的時間 (電梯演說),能否自然而有條理地把項目說清楚? 請用你產品中實際的元素代替 <> 中的抽象概念。
全新的產品:
各位領導/投資人/合作伙伴: 我們的 <語音助手> 是為了解決手機端寫代碼的痛苦, 他們需要更好更快更方便 <Need>的輸入方式, 但軟鍵盤輸入實在太慢太麻煩了,我們通過語音輔助輸入 <Approach>, 它能加快寫碼速度,釋放雙手<Benefit>, 這是前所未有的<Competitor>。 同時,我們通過大量的推廣 <Delivery> ,能很快地讓大部分用戶知道我們的產品,並進一步傳播。
增量改進的功能:
各位領導/合作伙伴: 我們的 <醫療版本改進> 是為了解決 <手部殘疾人士> 的痛苦, 他們中很多人是可以成為良好的程序員的 <Need>, 但是因為手部殘疾沒法寫代碼,通過針對性的語音寫代碼訓練 <Approach>, 能夠幫助他們實現成為程序員的夢想 <Benefit>, 讓他們的人生更加圓滿,包括我們之前和相關醫院的合作證明<Data>平均只需要一周甚至更短的時間,一個殘疾人士就能夠快速書寫所需要的代碼。我們相信醫療版本的語音coding助手能給我們帶來業績改善,同時這也是一項公益性很強的事業。
- 把上面的這段話錄制為視頻,上傳到視頻網站,並把鏈接發到個人/團隊博客上。 【todo】
【作業2】 以終為始,假設一切順利,產品發布了,你怎么宣傳這個產品呢?請寫一個新聞稿,描述你的新產品在新聞發布會上的情況
標題
語音寫碼,釋放雙手!
副標題
你將獲得極度舒適的寫碼體驗
總結
語音寫碼會比鍵盤輸入快1.5倍!(假如),小小手機也可以成為coding利器。
問題
手機端快速寫代碼的困境。
解決方案
通過語音輔助coding , 或者完全使用語音coding
你的引證
這個項目會很有趣~
如何開始
(假如說我們實現了這個功能)想要快速定位特定位置,你只需說:"轉到第25行末尾"。
客戶評述
今天去丈母娘家的路上,產品經理忽然就改需求了,手上就一台手機,還好有語音輸入,很快就完成了,要是鍵盤打,真是得當着丈母娘的面頭禿了。
收尾和號召
語音coding助手正式上架各大應用商店! 下月將推出語音codingIDE,敬請期待!