技術規格說明書v1.0
基本功能需求
識別
- 基本概述:該部分須要識別用戶輸入的語音信息,調用對應的語音識別API得到結果,根據內置的語法詞典,判斷是不是合法輸入,對合法輸入執行後續操做,對不合法輸入進行報錯提示。
- 基本流程
- 用戶輸入語音
- 手機得到語音,將其轉換爲接口格式
- 語音識別接口,將其轉換爲API格式,並將API反饋結果轉換爲內部處理格式
- 可選功能
- 加入語音和詞典的模糊識別,可大幅提高用戶體驗
- 加入用戶自定義詞典的方式
- 具體子模塊
- 語音識別接口:輸入語音信息,調用語音識別API,獲得識別結果和分詞結果。該層須要將具體的識別API封裝在內部,接口的語音輸入,識別和分詞結果格式都是獨立的,須要在接口內部作一層轉換,即從入口接口到實際語音識別API的轉換。
- 詞典模塊:詞典中須要定義語音信號到實際輸入內容的映射。此處須要包括兩種詞典,一種是編輯詞典,包含文本輸入內容,編程語言(python)詞庫。一種是命令詞典,包含基本的文本編輯命令和shell命令。詞典還須要完成查詢模塊,根據標準分詞結果轉換到對應的動做序列。
- 語音轉換模塊:將手機端獲得的語音信息轉換爲語音識別接口的標準輸入形式。即word2action。
- 分詞模塊:因爲咱們的系統須要的分詞結果會有不少自定義和個性化的結果,咱們將會依據必定的規則將API初次返回的分詞結果進行再整理,這部分將做爲一個工具模塊(helper)的形式在語音識別接口內部使用,使用不一樣的分詞策略對於接口不會產生影響。
- 設計方案重點
- 解耦合:在該部分中,手機傳回語音的類型和語音識別API的類型是可能在實現中變化的,因此咱們又作了一層中間層,將兩部分封裝起來,咱們的系統內部只使用咱們定義的語音識別接口,而將上述兩部分分離開。
- 數據的處理能力:咱們的詞典模塊將會作成數據模板的形式,而具體的數據信息都是使用Android的數據持久化技術(sharedPerference)進行存儲。
- 錯誤處理:該階段的錯誤信息將分爲兩大類,語音識別錯誤和詞典映射錯誤,咱們也會封裝具體的異常類,保證足夠的模塊化和可擴展性。
傳輸
- 基本概述:須要將解析好的動做序列傳遞給文本編輯器或shell
- 基本流程
- 獲取動做序列
- 根據動做序列信息肯定是文本輸入仍是命令,須要傳輸到文本編輯器仍是shell
- 完成信息傳輸
- 設計方案
- 咱們將借鑑termux的app和shell之間的信息傳輸模式,使用專用字節編碼的方式傳輸信息,具體的編碼方式是相對獨立的,但具體編碼信息將會存儲在詞典的對應數據項中,即詞典是一個核心的後像化模塊,歸納定義了輸入內容到輸出動做的映射,但具體輸入內容的解析,輸出動做的實現,都與詞典自己無關。
編輯
- 基本概述:自制簡易文本編輯器,兩種模式,命令模式和編輯模式
- 基本流程
- 基本子模塊
- 命令模塊:支持打開,複製,粘貼,刪除,查找,替換,撤銷,保存等操做
- 輸入模塊:單個字符輸入,關鍵字輸入, 補全式輸入
shell
- 基本概述:基於termux的shell界面,支持簡單輸入和快捷操做
- 基本流程
- 可選功能
- 基本子模塊
- 輸入模塊:單個字符輸入,關鍵字輸入
- 快捷操做模塊:無需在shell中進行輸入,直接經過語音轉換爲對應的shell動做
UI
- UI主要包括五部分:文本編輯器,shell,腳本list,信息反饋界面,全局快捷鍵
- 全局快捷鍵和信息反饋界面是常駐元素,文本編輯器,shell,腳本list之間可互相切換
- 信息反饋界面包括:語音識別反饋,動做映射反饋,動做執行反饋
- 全局快捷鍵包括:文本編輯器,shel,腳本list的切換鍵
具體模塊級別API
To be continued(這部分將會在各部分的調研設計工做完成以後繼續更新)python